diff options
author | Norbert Preining <norbert@preining.info> | 2021-06-12 03:00:50 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2021-06-12 03:00:50 +0000 |
commit | 73dcf554624f325ec90d02815c36d92a33c2667f (patch) | |
tree | 73c5f88e9a5aab31e07fef81cfe0144439d1d6aa | |
parent | d6b2eaba6fe47c24603040934903c73535ff09ba (diff) |
CTAN sync 202106120300
63 files changed, 6350 insertions, 1898 deletions
diff --git a/CTAN.sites b/CTAN.sites index 6576df94a0..f754feecbd 100644 --- a/CTAN.sites +++ b/CTAN.sites @@ -238,6 +238,9 @@ by country): URL: http://ctan.ebinger.cc/tex-archive/ URL: https://ctan.ebinger.cc/tex-archive/ + ctan.joethei.xyz (Germany) + URL: https://ctan.joethei.xyz/ + ctan.kako-dev.de (Germany) URL: https://ctan.kako-dev.de/ diff --git a/FILES.byname b/FILES.byname index a278135df1..f3c47f2497 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/06/10 | 207120 | FILES.last07days +2021/06/11 | 169238 | 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 @@ -172879,7 +172879,7 @@ 2018/08/26 | 1014893 | install/macros/generic/tex-locale.tds.zip 2020/06/30 | 1215011 | install/macros/generic/tracklang.tds.zip 2020/10/26 | 572538 | install/macros/generic/unicode-data.tds.zip -2021/05/27 | 2761284 | install/macros/generic/xint.tds.zip +2021/06/11 | 2798424 | install/macros/generic/xint.tds.zip 2016/05/15 | 295442 | install/macros/latex/contrib/abc.tds.zip 2018/11/24 | 6522794 | install/macros/latex/contrib/abntex2.tds.zip 2009/09/02 | 160216 | install/macros/latex/contrib/abstract.tds.zip @@ -172890,7 +172890,7 @@ 2015/08/04 | 140785 | install/macros/latex/contrib/alertmessage.tds.zip 2019/12/09 | 365186 | install/macros/latex/contrib/alphalph.tds.zip 2013/03/08 | 2249874 | install/macros/latex/contrib/amsrefs.tds.zip -2020/10/07 | 3235161 | install/macros/latex/contrib/animate.tds.zip +2021/06/11 | 3229608 | install/macros/latex/contrib/animate.tds.zip 2014/08/24 | 220789 | install/macros/latex/contrib/answers.tds.zip 2020/01/15 | 195222 | install/macros/latex/contrib/ascmac.tds.zip 2010/03/20 | 235440 | install/macros/latex/contrib/asyfig.tds.zip @@ -173065,7 +173065,7 @@ 2010/03/26 | 732372 | install/macros/latex/contrib/mattens.tds.zip 2013/07/01 | 1898068 | install/macros/latex/contrib/mdframed.tds.zip 2021/01/26 | 162867 | install/macros/latex/contrib/media4svg.tds.zip -2021/03/01 | 7437892 | install/macros/latex/contrib/media9.tds.zip +2021/06/11 | 7472361 | install/macros/latex/contrib/media9.tds.zip 2021/03/23 | 3623773 | install/macros/latex/contrib/memoir.tds.zip 2020/08/06 | 24409080 | install/macros/latex/contrib/mercatormap.tds.zip 2017/11/14 | 704736 | install/macros/latex/contrib/mfirstuc.tds.zip @@ -173094,7 +173094,7 @@ 2011/09/20 | 179685 | install/macros/latex/contrib/nowidow.tds.zip 2020/03/18 | 8001668 | install/macros/latex/contrib/nwejm.tds.zip 2020/09/03 | 13476366 | install/macros/latex/contrib/oberdiek.tds.zip -2021/06/03 | 33569 | install/macros/latex/contrib/ocgx2.tds.zip +2021/06/11 | 33643 | install/macros/latex/contrib/ocgx2.tds.zip 2012/12/08 | 1025300 | install/macros/latex/contrib/ocgx.tds.zip 2017/05/29 | 424133 | install/macros/latex/contrib/pagecolor.tds.zip 2009/09/03 | 151471 | install/macros/latex/contrib/pagenote.tds.zip @@ -183711,19 +183711,20 @@ 2005/04/24 | 364 | language/maltese/README.txt 2005/04/27 | 98071 | language/maltese.zip 2001/11/28 | 721 | language/manju/README -2021/05/11 | 35149 | language/marathi/COPYING -2021/05/11 | 2047 | language/marathi/glossaries.gls -2021/05/12 | 69171 | language/marathi/marathi.dtx -2021/05/11 | 4960 | language/marathi/marathi.ins -2021/05/12 | 139999 | language/marathi/marathi.pdf -2021/05/11 | 9539 | language/marathi/namuna-article.tex -2021/05/11 | 1832 | language/marathi/namuna-beamer.tex -2021/05/11 | 9610 | language/marathi/namuna-book.tex -2021/05/11 | 2031 | language/marathi/namuna-letter.tex -2021/05/11 | 1236 | language/marathi/namuna-para.tex -2021/05/11 | 10827 | language/marathi/namuna-report.tex -2021/05/11 | 3552 | language/marathi/README.txt -2021/05/12 | 176866 | language/marathi.zip +2021/06/11 | 35149 | language/marathi/COPYING +2021/06/11 | 2047 | language/marathi/glossaries.gls +2021/06/11 | 28918 | language/marathi/LICENSE.md +2021/06/11 | 69295 | language/marathi/marathi.dtx +2021/06/11 | 4960 | language/marathi/marathi.ins +2021/06/11 | 176615 | language/marathi/marathi.pdf +2021/06/11 | 9539 | language/marathi/namuna-article.tex +2021/06/11 | 1832 | language/marathi/namuna-beamer.tex +2021/06/11 | 9610 | language/marathi/namuna-book.tex +2021/06/11 | 2031 | language/marathi/namuna-letter.tex +2021/06/11 | 1236 | language/marathi/namuna-para.tex +2021/06/11 | 10827 | language/marathi/namuna-report.tex +2021/06/11 | 3575 | language/marathi/README.txt +2021/06/11 | 217053 | language/marathi.zip 2007/03/22 | 3923 | language/mongolian/babel/mn.def 2008/03/30 | 39157 | language/mongolian/babel/mongolian.dtx 2008/03/23 | 5112 | language/mongolian/babel/mongolian.ins @@ -187892,13 +187893,13 @@ 2010/05/14 | 253 | macros/generic/xcomment/xcomment.sty 2010/05/14 | 5315 | macros/generic/xcomment/xcomment.tex 2010/05/15 | 84896 | macros/generic/xcomment.zip -2021/05/27 | 129477 | macros/generic/xint/CHANGES.html -2020/02/02 | 466 | macros/generic/xint/Makefile -2021/05/27 | 3793 | macros/generic/xint/README.md -2021/05/27 | 1158797 | macros/generic/xint/sourcexint.pdf -2021/05/27 | 1831489 | macros/generic/xint/xint.dtx -2021/05/27 | 1038924 | macros/generic/xint/xint.pdf -2021/05/27 | 2649899 | macros/generic/xint.zip +2021/06/11 | 131605 | macros/generic/xint/CHANGES.html +2021/05/29 | 466 | macros/generic/xint/Makefile +2021/06/11 | 3809 | macros/generic/xint/README.md +2021/06/11 | 1169039 | macros/generic/xint/sourcexint.pdf +2021/06/11 | 1856488 | macros/generic/xint/xint.dtx +2021/06/11 | 1056768 | macros/generic/xint/xint.pdf +2021/06/11 | 2686672 | macros/generic/xint.zip 2020/11/11 | 3056 | macros/generic/xlop/doc/history.txt 2020/11/11 | 389668 | macros/generic/xlop/doc/xlop-doc-fr.pdf 2020/11/11 | 108183 | macros/generic/xlop/doc/xlop-doc-fr.tex @@ -190424,19 +190425,19 @@ 2007/10/11 | 13856 | macros/latex/contrib/analogclock/clock.ttf 2008/12/22 | 551 | macros/latex/contrib/analogclock/README 2008/12/22 | 69900 | macros/latex/contrib/analogclock.zip -2020/10/07 | 3899235 | macros/latex/contrib/animate/animate.pdf -2020/10/07 | 137203 | macros/latex/contrib/animate/animate.sty -2020/09/10 | 84185 | macros/latex/contrib/animate/animate.tex -2020/10/07 | 12233 | macros/latex/contrib/animate/ChangeLog -2018/06/26 | 8561 | macros/latex/contrib/animate/files/bye_0.eps -2018/06/26 | 8342 | macros/latex/contrib/animate/files/bye_1.eps -2018/06/26 | 8561 | macros/latex/contrib/animate/files/bye_2.eps -2018/06/26 | 8342 | macros/latex/contrib/animate/files/bye_3.eps -2018/06/26 | 2574 | macros/latex/contrib/animate/files/click.mp3 -2019/11/26 | 2409 | macros/latex/contrib/animate/files/exp.mp -2019/11/26 | 3534 | macros/latex/contrib/animate/files/scarab.mp -2020/09/10 | 4175 | macros/latex/contrib/animate/README.md -2020/10/07 | 3232888 | macros/latex/contrib/animate.zip +2021/06/11 | 3869206 | macros/latex/contrib/animate/animate.pdf +2021/06/11 | 136883 | macros/latex/contrib/animate/animate.sty +2021/06/11 | 84013 | macros/latex/contrib/animate/animate.tex +2021/06/11 | 12322 | macros/latex/contrib/animate/ChangeLog +2020/03/11 | 8561 | macros/latex/contrib/animate/files/bye_0.eps +2020/03/11 | 8342 | macros/latex/contrib/animate/files/bye_1.eps +2020/03/11 | 8561 | macros/latex/contrib/animate/files/bye_2.eps +2020/03/11 | 8342 | macros/latex/contrib/animate/files/bye_3.eps +2020/03/11 | 2574 | macros/latex/contrib/animate/files/click.mp3 +2021/04/08 | 2354 | macros/latex/contrib/animate/files/exp.mp +2021/04/08 | 3479 | macros/latex/contrib/animate/files/scarab.mp +2020/10/16 | 4175 | macros/latex/contrib/animate/README.md +2021/06/11 | 3227335 | macros/latex/contrib/animate.zip 2020/07/29 | 19402 | macros/latex/contrib/annee-scolaire/annee-scolaire.dtx 2020/07/29 | 467107 | macros/latex/contrib/annee-scolaire/annee-scolaire-eng.pdf 2020/07/29 | 489195 | macros/latex/contrib/annee-scolaire/annee-scolaire-fra.pdf @@ -197586,11 +197587,11 @@ 2008/02/10 | 19110 | macros/latex/contrib/ean13isbn/License.txt 2021/01/24 | 422 | macros/latex/contrib/ean13isbn/README 2021/01/24 | 322624 | macros/latex/contrib/ean13isbn.zip -2021/06/10 | 130951 | macros/latex/contrib/easybook/easybook.dtx +2021/06/11 | 130955 | macros/latex/contrib/easybook/easybook.dtx 2021/06/08 | 1499 | macros/latex/contrib/easybook/easybook.ins -2021/06/10 | 324334 | macros/latex/contrib/easybook/easybook.pdf +2021/06/11 | 324104 | macros/latex/contrib/easybook/easybook.pdf 2021/06/08 | 1968 | macros/latex/contrib/easybook/README.md -2021/06/10 | 356904 | macros/latex/contrib/easybook.zip +2021/06/11 | 356732 | macros/latex/contrib/easybook.zip 2009/06/17 | 82589 | macros/latex/contrib/easy/doc/docbib.pdf 2009/06/17 | 78378 | macros/latex/contrib/easy/doc/docbmat.pdf 2009/06/17 | 99132 | macros/latex/contrib/easy/doc/doceqn.pdf @@ -203642,13 +203643,13 @@ 2010/04/27 | 335420 | macros/latex/contrib/keycommand/keycommand.pdf 2009/08/31 | 1242 | macros/latex/contrib/keycommand/README 2010/05/03 | 374549 | macros/latex/contrib/keycommand.zip -2021/06/08 | 4700 | macros/latex/contrib/keyfloat/images/image2.pdf -2021/06/08 | 5456 | macros/latex/contrib/keyfloat/images/image.pdf -2021/06/08 | 145571 | macros/latex/contrib/keyfloat/keyfloat.dtx -2021/06/08 | 1644 | macros/latex/contrib/keyfloat/keyfloat.ins -2021/06/08 | 1012669 | macros/latex/contrib/keyfloat/keyfloat.pdf -2021/06/08 | 1144 | macros/latex/contrib/keyfloat/README.txt -2021/06/08 | 1041110 | macros/latex/contrib/keyfloat.zip +2021/06/11 | 4700 | macros/latex/contrib/keyfloat/images/image2.pdf +2021/06/11 | 5456 | macros/latex/contrib/keyfloat/images/image.pdf +2021/06/11 | 145462 | macros/latex/contrib/keyfloat/keyfloat.dtx +2021/06/11 | 1644 | macros/latex/contrib/keyfloat/keyfloat.ins +2021/06/11 | 1010471 | macros/latex/contrib/keyfloat/keyfloat.pdf +2021/06/11 | 1144 | macros/latex/contrib/keyfloat/README.txt +2021/06/11 | 1038807 | macros/latex/contrib/keyfloat.zip 2019/04/05 | 8068 | macros/latex/contrib/keyindex/keyindex.dtx 2019/04/05 | 1951 | macros/latex/contrib/keyindex/keyindex.ins 2019/04/05 | 144968 | macros/latex/contrib/keyindex/keyindex.pdf @@ -205074,21 +205075,21 @@ 2004/08/23 | 985 | macros/latex/contrib/ltabptch/ltabtest.tex 2005/01/21 | 369 | macros/latex/contrib/ltabptch/README 2010/03/21 | 273074 | macros/latex/contrib/ltabptch.zip -2020/07/30 | 242168 | macros/latex/contrib/ltx4yt/docs/ltx4yt-man.pdf -2020/07/30 | 32330 | macros/latex/contrib/ltx4yt/docs/ltx4yt-man.tex -2020/07/30 | 1838044 | macros/latex/contrib/ltx4yt/docs/ltx4yt.pdf -2020/07/30 | 109008 | macros/latex/contrib/ltx4yt/examples/ltx4yt-1.pdf -2020/07/30 | 2546 | macros/latex/contrib/ltx4yt/examples/ltx4yt-1.tex -2020/07/29 | 114454 | macros/latex/contrib/ltx4yt/examples/ltx4yt-2.pdf -2020/07/29 | 3850 | macros/latex/contrib/ltx4yt/examples/ltx4yt-2.tex -2020/07/30 | 118148 | macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w1.pdf -2020/07/30 | 2683 | macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w1.tex -2020/07/30 | 86073 | macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w2.pdf -2020/07/30 | 3944 | macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w2.tex -2020/07/30 | 27185 | macros/latex/contrib/ltx4yt/ltx4yt.dtx +2021/06/10 | 244848 | macros/latex/contrib/ltx4yt/docs/ltx4yt-man.pdf +2021/06/10 | 33493 | macros/latex/contrib/ltx4yt/docs/ltx4yt-man.tex +2021/06/10 | 294199 | macros/latex/contrib/ltx4yt/docs/ltx4yt.pdf +2021/06/11 | 109498 | macros/latex/contrib/ltx4yt/examples/ltx4yt-1.pdf +2021/06/11 | 2334 | macros/latex/contrib/ltx4yt/examples/ltx4yt-1.tex +2021/06/11 | 123755 | macros/latex/contrib/ltx4yt/examples/ltx4yt-2.pdf +2021/06/11 | 4128 | macros/latex/contrib/ltx4yt/examples/ltx4yt-2.tex +2021/06/11 | 150134 | macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w1.pdf +2021/06/11 | 2710 | macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w1.tex +2021/06/11 | 128904 | macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w2.pdf +2021/06/11 | 4220 | macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w2.tex +2021/06/10 | 28888 | macros/latex/contrib/ltx4yt/ltx4yt.dtx 2020/07/19 | 1891 | macros/latex/contrib/ltx4yt/ltx4yt.ins -2020/07/30 | 667 | macros/latex/contrib/ltx4yt/README.md -2020/07/30 | 2312916 | macros/latex/contrib/ltx4yt.zip +2021/06/11 | 771 | macros/latex/contrib/ltx4yt/README.md +2021/06/11 | 949731 | macros/latex/contrib/ltx4yt.zip 2011/03/25 | 2289 | macros/latex/contrib/ltxdockit/btxdockit.sty 2011/03/25 | 2649 | macros/latex/contrib/ltxdockit/ltxdockit.cfg 2011/03/25 | 3948 | macros/latex/contrib/ltxdockit/ltxdockit.cls @@ -205614,7 +205615,7 @@ 2021/01/25 | 25724 | macros/latex/contrib/media4svg/media4svg.sty 2021/01/26 | 5536 | macros/latex/contrib/media4svg/README.md 2021/01/26 | 161371 | macros/latex/contrib/media4svg.zip -2021/03/01 | 14650 | macros/latex/contrib/media9/ChangeLog +2021/06/11 | 14752 | macros/latex/contrib/media9/ChangeLog 2020/03/11 | 7152 | macros/latex/contrib/media9/doc/files/3dsystem.fig 2020/03/11 | 5989 | macros/latex/contrib/media9/doc/files/3dsystem.pdf 2020/03/11 | 1550 | macros/latex/contrib/media9/doc/files/3dsystem.tex @@ -205642,14 +205643,14 @@ 2020/03/11 | 1268 | macros/latex/contrib/media9/doc/files/malte.js 2020/03/11 | 105696 | macros/latex/contrib/media9/doc/files/malte.u3d 2020/03/11 | 20206 | macros/latex/contrib/media9/doc/files/random.mp4 -2021/03/01 | 3739129 | macros/latex/contrib/media9/doc/media9.pdf -2021/02/03 | 93487 | macros/latex/contrib/media9/doc/media9.tex +2021/06/11 | 3748241 | macros/latex/contrib/media9/doc/media9.pdf +2021/06/11 | 93160 | macros/latex/contrib/media9/doc/media9.tex 2020/03/11 | 29121 | macros/latex/contrib/media9/javascript/3Dmenu.js 2020/03/11 | 972 | macros/latex/contrib/media9/javascript/3Dspintool.js 2020/03/11 | 3307 | macros/latex/contrib/media9/javascript/animation.js 2020/03/11 | 2561 | macros/latex/contrib/media9/javascript/asylabels.js -2021/03/01 | 79671 | macros/latex/contrib/media9/media9.sty -2021/03/01 | 49376 | macros/latex/contrib/media9/pdfbase.sty +2021/06/11 | 159762 | macros/latex/contrib/media9/media9.sty +2021/06/11 | 97513 | macros/latex/contrib/media9/pdfbase.sty 2020/03/11 | 14420 | macros/latex/contrib/media9/players/APlayer9.mxml 2020/03/11 | 206165 | macros/latex/contrib/media9/players/APlayer9.swf 2020/03/11 | 15323 | macros/latex/contrib/media9/players/APlayer.mxml @@ -205665,7 +205666,7 @@ 2020/03/11 | 12571 | macros/latex/contrib/media9/players/VPlayer.mxml 2020/03/11 | 483412 | macros/latex/contrib/media9/players/VPlayer.swf 2020/03/11 | 2053 | macros/latex/contrib/media9/README.md -2021/03/01 | 7432602 | macros/latex/contrib/media9.zip +2021/06/11 | 7467071 | macros/latex/contrib/media9.zip 2015/11/12 | 2413 | macros/latex/contrib/medstarbeamer/beamercolorthemeMedStarColors.sty 2015/11/12 | 1715 | macros/latex/contrib/medstarbeamer/example.tex 2015/11/12 | 3149 | macros/latex/contrib/medstarbeamer/medstarbeamer.cls @@ -207548,12 +207549,12 @@ 2013/08/11 | 265647 | macros/latex/contrib/ocgtools/ocgtools.pdf 2010/12/16 | 906 | macros/latex/contrib/ocgtools/README 2013/08/11 | 5062086 | macros/latex/contrib/ocgtools.zip -2021/06/03 | 6764 | macros/latex/contrib/ocgx2/ChangeLog +2021/06/11 | 6887 | macros/latex/contrib/ocgx2/ChangeLog 2020/03/15 | 585 | macros/latex/contrib/ocgx2/fixocgx.sty -2021/06/03 | 25872 | macros/latex/contrib/ocgx2/ocgbase.sty -2021/06/03 | 104723 | macros/latex/contrib/ocgx2/ocgx2.sty +2021/06/11 | 25934 | macros/latex/contrib/ocgx2/ocgbase.sty +2021/06/11 | 104813 | macros/latex/contrib/ocgx2/ocgx2.sty 2020/03/15 | 9976 | macros/latex/contrib/ocgx2/README.md -2021/06/03 | 32510 | macros/latex/contrib/ocgx2.zip +2021/06/11 | 32584 | macros/latex/contrib/ocgx2.zip 2012/12/08 | 693034 | macros/latex/contrib/ocgx/demo-ocgx.pdf 2012/12/08 | 14592 | macros/latex/contrib/ocgx/demo-ocgx.tex 2012/12/08 | 156 | macros/latex/contrib/ocgx/ocgx-example-1.tex @@ -207708,11 +207709,11 @@ 2015/12/05 | 49280 | macros/latex/contrib/options/options.sty 2015/12/05 | 2681 | macros/latex/contrib/options/README 2015/12/06 | 244723 | macros/latex/contrib/options.zip -2021/03/16 | 5705 | macros/latex/contrib/orcidlink/orcidlink.dtx -2021/03/16 | 2322 | macros/latex/contrib/orcidlink/orcidlink.ins -2021/03/16 | 164719 | macros/latex/contrib/orcidlink/orcidlink.pdf +2021/06/11 | 5859 | macros/latex/contrib/orcidlink/orcidlink.dtx +2021/03/14 | 2322 | macros/latex/contrib/orcidlink/orcidlink.ins +2021/06/11 | 176940 | macros/latex/contrib/orcidlink/orcidlink.pdf 2021/03/16 | 2186 | macros/latex/contrib/orcidlink/README.md -2021/03/16 | 167540 | macros/latex/contrib/orcidlink.zip +2021/06/11 | 177169 | macros/latex/contrib/orcidlink.zip 2007/02/08 | 14688 | macros/latex/contrib/ordinalpt/ordinalpt.dtx 2007/02/08 | 2162 | macros/latex/contrib/ordinalpt/ordinalpt.ind 2007/02/07 | 655 | macros/latex/contrib/ordinalpt/ordinalpt.ins @@ -211404,12 +211405,12 @@ 2019/12/10 | 537307 | macros/latex/contrib/selinput/selinput.pdf 2019/12/11 | 541126 | macros/latex/contrib/selinput.zip 2021/06/10 | 1660 | macros/latex/contrib/semantex/README.md -2021/06/10 | 371132 | macros/latex/contrib/semantex/semantex.pdf +2021/06/10 | 370872 | macros/latex/contrib/semantex/semantex.pdf 2021/06/10 | 300946 | macros/latex/contrib/semantex/semantex.sty -2021/06/10 | 176702 | macros/latex/contrib/semantex/semantex.tex +2021/06/10 | 176678 | macros/latex/contrib/semantex/semantex.tex 2020/10/03 | 12086 | macros/latex/contrib/semantex/stripsemantex.lua 2021/06/10 | 4730 | macros/latex/contrib/semantex/stripsemantex.sty -2021/06/10 | 430200 | macros/latex/contrib/semantex.zip +2021/06/11 | 429950 | macros/latex/contrib/semantex.zip 2020/01/29 | 1014 | macros/latex/contrib/semantic-markup/README 2020/01/29 | 266707 | macros/latex/contrib/semantic-markup/semantic-markup.pdf 2020/01/29 | 4666 | macros/latex/contrib/semantic-markup/semantic-markup.sty @@ -268019,9 +268020,9 @@ 2019/02/28 | 378876 | systems/texlive/tlnet/archive/cookingsymbols.doc.r35929.tar.xz 2019/02/28 | 3584 | systems/texlive/tlnet/archive/cookingsymbols.r35929.tar.xz 2019/02/28 | 5616 | systems/texlive/tlnet/archive/cookingsymbols.source.r35929.tar.xz -2020/01/15 | 697692 | systems/texlive/tlnet/archive/cooking-units.doc.r53403.tar.xz -2020/01/15 | 17464 | systems/texlive/tlnet/archive/cooking-units.r53403.tar.xz -2020/01/15 | 56868 | systems/texlive/tlnet/archive/cooking-units.source.r53403.tar.xz +2021/06/11 | 725860 | systems/texlive/tlnet/archive/cooking-units.doc.r59542.tar.xz +2021/06/11 | 20768 | systems/texlive/tlnet/archive/cooking-units.r59542.tar.xz +2021/06/11 | 68828 | systems/texlive/tlnet/archive/cooking-units.source.r59542.tar.xz 2019/02/28 | 412164 | systems/texlive/tlnet/archive/cool.doc.r15878.tar.xz 2019/02/28 | 110360 | systems/texlive/tlnet/archive/coollist.doc.r15878.tar.xz 2019/02/28 | 2360 | systems/texlive/tlnet/archive/coollist.r15878.tar.xz @@ -272462,8 +272463,8 @@ 2021/06/08 | 3203076 | systems/texlive/tlnet/archive/luatexja.doc.r59518.tar.xz 2021/06/08 | 190152 | systems/texlive/tlnet/archive/luatexja.r59518.tar.xz 2021/06/08 | 83288 | systems/texlive/tlnet/archive/luatexja.source.r59518.tar.xz -2021/04/21 | 336848 | systems/texlive/tlnet/archive/luatexko.doc.r58928.tar.xz -2021/04/21 | 22400 | systems/texlive/tlnet/archive/luatexko.r58928.tar.xz +2021/06/11 | 348984 | systems/texlive/tlnet/archive/luatexko.doc.r59545.tar.xz +2021/06/11 | 23004 | systems/texlive/tlnet/archive/luatexko.r59545.tar.xz 2021/04/12 | 12912 | systems/texlive/tlnet/archive/luatex.r58822.tar.xz 2019/02/28 | 317312 | systems/texlive/tlnet/archive/luatextra.doc.r20747.tar.xz 2019/02/28 | 1056 | systems/texlive/tlnet/archive/luatextra.r20747.tar.xz @@ -275691,8 +275692,8 @@ 2019/12/12 | 6840 | systems/texlive/tlnet/archive/selinput.source.r53098.tar.xz 2019/02/28 | 509908 | systems/texlive/tlnet/archive/selnolig.doc.r38721.tar.xz 2019/02/28 | 54008 | systems/texlive/tlnet/archive/selnolig.r38721.tar.xz -2020/11/06 | 390728 | systems/texlive/tlnet/archive/semantex.doc.r56863.tar.xz -2020/11/06 | 23004 | systems/texlive/tlnet/archive/semantex.r56863.tar.xz +2021/06/11 | 396124 | systems/texlive/tlnet/archive/semantex.doc.r59543.tar.xz +2021/06/11 | 26460 | systems/texlive/tlnet/archive/semantex.r59543.tar.xz 2019/02/28 | 357820 | systems/texlive/tlnet/archive/semantic.doc.r15878.tar.xz 2020/01/31 | 270076 | systems/texlive/tlnet/archive/semantic-markup.doc.r53607.tar.xz 2020/01/31 | 2500 | systems/texlive/tlnet/archive/semantic-markup.r53607.tar.xz @@ -276720,7 +276721,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/06/10 | 397492 | systems/texlive/tlnet/archive/texlive-scripts.doc.r59528.tar.xz +2021/06/11 | 397696 | systems/texlive/tlnet/archive/texlive-scripts.doc.r59541.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 @@ -276744,7 +276745,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/06/10 | 108012 | systems/texlive/tlnet/archive/texlive-scripts.r59528.tar.xz +2021/06/11 | 108008 | systems/texlive/tlnet/archive/texlive-scripts.r59541.tar.xz 2021/02/25 | 572 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r57908.tar.xz 2021/04/12 | 36308 | systems/texlive/tlnet/archive/texlive-scripts.win32.r58829.tar.xz 2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r55172.tar.xz @@ -277160,8 +277161,8 @@ 2021/04/28 | 10100 | systems/texlive/tlnet/archive/tipauni.source.r59009.tar.xz 2019/02/28 | 381176 | systems/texlive/tlnet/archive/tipfr.doc.r38646.tar.xz 2019/02/28 | 5880 | systems/texlive/tlnet/archive/tipfr.r38646.tar.xz -2021/06/08 | 135172 | systems/texlive/tlnet/archive/tiscreen.doc.r59517.tar.xz -2021/06/08 | 1136 | systems/texlive/tlnet/archive/tiscreen.r59517.tar.xz +2021/06/11 | 127244 | systems/texlive/tlnet/archive/tiscreen.doc.r59544.tar.xz +2021/06/11 | 1136 | systems/texlive/tlnet/archive/tiscreen.r59544.tar.xz 2019/02/28 | 261184 | systems/texlive/tlnet/archive/titlecaps.doc.r36170.tar.xz 2019/02/28 | 4148 | systems/texlive/tlnet/archive/titlecaps.r36170.tar.xz 2019/02/28 | 2928 | systems/texlive/tlnet/archive/titlefoot.r15878.tar.xz @@ -278132,8 +278133,8 @@ 2021/03/16 | 7303724 | systems/texlive/tlnet/archive/xetex.i386-solaris.r58388.tar.xz 2020/06/08 | 21096 | systems/texlive/tlnet/archive/xetex-itrans.doc.r55475.tar.xz 2020/06/08 | 24624 | systems/texlive/tlnet/archive/xetex-itrans.r55475.tar.xz -2021/05/20 | 264084 | systems/texlive/tlnet/archive/xetexko.doc.r59282.tar.xz -2021/05/20 | 53784 | systems/texlive/tlnet/archive/xetexko.r59282.tar.xz +2021/06/11 | 264392 | systems/texlive/tlnet/archive/xetexko.doc.r59546.tar.xz +2021/06/11 | 53752 | systems/texlive/tlnet/archive/xetexko.r59546.tar.xz 2019/02/28 | 932 | systems/texlive/tlnet/archive/xetex-pstricks.doc.r17055.tar.xz 2019/02/28 | 724 | systems/texlive/tlnet/archive/xetex-pstricks.r17055.tar.xz 2021/02/28 | 6988 | systems/texlive/tlnet/archive/xetex.r57972.tar.xz @@ -278446,16 +278447,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/05/02 | 105152 | systems/texlive/tlnet/install-tl -2021/06/10 | 6812707 | systems/texlive/tlnet/install-tl-unx.tar.gz -2021/06/10 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 -2021/06/10 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc +2021/06/11 | 6812853 | systems/texlive/tlnet/install-tl-unx.tar.gz +2021/06/11 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 +2021/06/11 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc 2021/04/11 | 4945 | systems/texlive/tlnet/install-tl-windows.bat -2021/06/10 | 20808988 | systems/texlive/tlnet/install-tl-windows.exe -2021/06/10 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 -2021/06/10 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc -2021/06/10 | 25584682 | systems/texlive/tlnet/install-tl.zip -2021/06/10 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 -2021/06/10 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc +2021/06/11 | 20809005 | systems/texlive/tlnet/install-tl-windows.exe +2021/06/11 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 +2021/06/11 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc +2021/06/11 | 25584682 | systems/texlive/tlnet/install-tl.zip +2021/06/11 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2021/06/11 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc 2021/04/01 | 1229 | systems/texlive/tlnet/README.md 2021/04/01 | 0 | systems/texlive/tlnet/TEXLIVE_2021 2021/03/15 | 6571 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg @@ -278507,12 +278508,12 @@ 2021/05/16 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm 2021/05/16 | 5402 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm 2021/05/16 | 27555 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm -2021/06/10 | 17279136 | systems/texlive/tlnet/tlpkg/texlive.tlpdb -2021/06/10 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2021/06/11 | 17279146 | systems/texlive/tlnet/tlpkg/texlive.tlpdb +2021/06/11 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 2021/05/16 | 86511 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm -2021/06/10 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 -2021/06/10 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc -2021/06/10 | 2311828 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +2021/06/11 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2021/06/11 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +2021/06/11 | 2312700 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz 2021/05/16 | 58801 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm 2021/05/16 | 42084 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm 2021/05/16 | 16103 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm @@ -282726,7 +282727,9 @@ 2017/03/28 | 87081 | systems/win32/miktex/tm/packages/conv-xkv.tar.lzma 2015/01/13 | 388467 | systems/win32/miktex/tm/packages/cookingsymbols.tar.lzma 2016/07/15 | 67621 | systems/win32/miktex/tm/packages/cooking.tar.lzma -2020/01/15 | 775755 | systems/win32/miktex/tm/packages/cooking-units.tar.lzma +2021/06/11 | 728896 | systems/win32/miktex/tm/packages/cooking-units__doc.tar.lzma +2021/06/11 | 69147 | systems/win32/miktex/tm/packages/cooking-units__source.tar.lzma +2021/06/11 | 20909 | systems/win32/miktex/tm/packages/cooking-units.tar.lzma 2009/10/14 | 887213 | systems/win32/miktex/tm/packages/cookybooky.tar.lzma 2009/09/24 | 119752 | systems/win32/miktex/tm/packages/coollist.tar.lzma 2009/09/11 | 125261 | systems/win32/miktex/tm/packages/coolstr.tar.lzma @@ -282983,9 +282986,9 @@ 2006/08/26 | 141965 | systems/win32/miktex/tm/packages/dyntree.tar.bz2 2021/01/28 | 325253 | systems/win32/miktex/tm/packages/ean13isbn.tar.lzma 2016/07/15 | 3965 | systems/win32/miktex/tm/packages/ean.tar.lzma -2021/06/10 | 324049 | systems/win32/miktex/tm/packages/easybook__doc.tar.lzma -2021/06/10 | 31955 | systems/win32/miktex/tm/packages/easybook__source.tar.lzma -2021/06/10 | 14690 | systems/win32/miktex/tm/packages/easybook.tar.lzma +2021/06/11 | 324242 | systems/win32/miktex/tm/packages/easybook__doc.tar.lzma +2021/06/11 | 31966 | systems/win32/miktex/tm/packages/easybook__source.tar.lzma +2021/06/11 | 14663 | systems/win32/miktex/tm/packages/easybook.tar.lzma 2018/03/31 | 183421 | systems/win32/miktex/tm/packages/easyfig.tar.lzma 2020/12/21 | 609763 | systems/win32/miktex/tm/packages/easyfloats.tar.lzma 2017/06/12 | 52618 | systems/win32/miktex/tm/packages/easyformat.tar.lzma @@ -283253,6 +283256,9 @@ 2008/02/23 | 357308 | systems/win32/miktex/tm/packages/feynmf.tar.lzma 2013/05/06 | 383535 | systems/win32/miktex/tm/packages/feynmp-auto.tar.lzma 2017/11/05 | 543689 | systems/win32/miktex/tm/packages/feyn.tar.lzma +2021/06/11 | 109470 | systems/win32/miktex/tm/packages/ffcode__doc.tar.lzma +2021/06/11 | 2085 | systems/win32/miktex/tm/packages/ffcode__source.tar.lzma +2021/06/11 | 1888 | systems/win32/miktex/tm/packages/ffcode.tar.lzma 2015/05/25 | 180075 | systems/win32/miktex/tm/packages/fge.tar.lzma 2020/11/05 | 435225 | systems/win32/miktex/tm/packages/fgruler.tar.lzma 2019/12/20 | 2791143 | systems/win32/miktex/tm/packages/fibeamer.tar.lzma @@ -283269,7 +283275,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/06/10 | 582841 | systems/win32/miktex/tm/packages/files.csv.lzma +2021/06/11 | 583961 | 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 @@ -284130,7 +284136,9 @@ 2021/06/08 | 3067480 | systems/win32/miktex/tm/packages/luatexja__doc.tar.lzma 2021/06/08 | 217931 | systems/win32/miktex/tm/packages/luatexja__source.tar.lzma 2021/06/08 | 189831 | systems/win32/miktex/tm/packages/luatexja.tar.lzma -2021/04/23 | 359360 | systems/win32/miktex/tm/packages/luatexko.tar.lzma +2021/06/11 | 338040 | systems/win32/miktex/tm/packages/luatexko__doc.tar.lzma +2021/06/11 | 12526 | systems/win32/miktex/tm/packages/luatexko__source.tar.lzma +2021/06/11 | 23214 | systems/win32/miktex/tm/packages/luatexko.tar.lzma 2010/12/23 | 322873 | systems/win32/miktex/tm/packages/luatextra.tar.lzma 2020/02/18 | 256383 | systems/win32/miktex/tm/packages/luatodonotes.tar.lzma 2021/06/03 | 247157 | systems/win32/miktex/tm/packages/lua-typo.tar.lzma @@ -284527,9 +284535,9 @@ 2018/01/12 | 157226 | systems/win32/miktex/tm/packages/miktex-zip-bin-x64.tar.lzma 2021/06/06 | 38984 | systems/win32/miktex/tm/packages/miktex-zlib-bin-2.9.tar.lzma 2021/06/06 | 43369 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma -2021/06/10 | 218093 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma -2021/06/10 | 1291070 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma -2021/06/10 | 1203772 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma +2021/06/11 | 218739 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma +2021/06/11 | 1292316 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma +2021/06/11 | 1204058 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma 2021/06/06 | 13457 | systems/win32/miktex/tm/packages/miktex-zzip-bin-2.9.tar.lzma 2021/06/06 | 14323 | 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 @@ -284558,6 +284566,9 @@ 2021/06/10 | 14504 | systems/win32/miktex/tm/packages/minim-pdf.tar.lzma 2021/06/10 | 5530 | systems/win32/miktex/tm/packages/minim__source.tar.lzma 2021/06/10 | 21931 | systems/win32/miktex/tm/packages/minim.tar.lzma +2021/06/11 | 48989 | systems/win32/miktex/tm/packages/minim-xmp__doc.tar.lzma +2021/06/11 | 3627 | systems/win32/miktex/tm/packages/minim-xmp__source.tar.lzma +2021/06/11 | 6480 | systems/win32/miktex/tm/packages/minim-xmp.tar.lzma 2020/05/06 | 414917 | systems/win32/miktex/tm/packages/minion2newtx.tar.lzma 2008/04/08 | 18099 | systems/win32/miktex/tm/packages/minipage-marginpar.tar.lzma 2010/03/16 | 175492 | systems/win32/miktex/tm/packages/miniplot.tar.lzma @@ -284712,189 +284723,189 @@ 2018/04/09 | 400132 | systems/win32/miktex/tm/packages/newunicodechar.tar.lzma 2011/09/19 | 101312 | systems/win32/miktex/tm/packages/newvbtm.tar.lzma 2021/03/17 | 232249 | systems/win32/miktex/tm/packages/newverbs.tar.lzma -2021/06/10 | 583264 | systems/win32/miktex/tm/packages/next/files.csv.lzma -2021/06/10 | 51090 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma -2021/06/10 | 56472 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma -2021/06/10 | 971288 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma -2021/06/10 | 1076119 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma -2021/06/10 | 29048 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma -2021/06/10 | 31328 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma -2021/06/10 | 29835 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma -2021/06/10 | 34651 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma -2021/06/10 | 50032 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma -2021/06/10 | 57634 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma -2021/06/10 | 83762 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma -2021/06/10 | 95451 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma -2021/06/10 | 67887 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma -2021/06/10 | 75963 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma -2021/06/10 | 27187 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma -2021/06/10 | 30807 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma -2021/06/10 | 330438 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma -2021/06/10 | 392698 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma -2021/06/10 | 32599 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma -2021/06/10 | 36606 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma -2021/06/10 | 51291 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma -2021/06/10 | 56812 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma -2021/06/10 | 239581 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma -2021/06/10 | 261910 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma -2021/06/10 | 180189 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma -2021/06/10 | 195755 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma -2021/06/10 | 52544 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma -2021/06/10 | 59145 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma -2021/06/10 | 21179 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma -2021/06/10 | 23369 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma -2021/06/10 | 461825 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma -2021/06/10 | 46494 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma -2021/06/10 | 51118 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma -2021/06/10 | 281965 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma -2021/06/10 | 321645 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma -2021/06/10 | 41189 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma -2021/06/10 | 45317 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma -2021/06/10 | 117481 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma -2021/06/10 | 131581 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma -2021/06/10 | 1294239 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma -2021/06/10 | 1423060 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma -2021/06/10 | 100462 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma -2021/06/10 | 112815 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma -2021/06/10 | 43061 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma -2021/06/10 | 48240 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma -2021/06/10 | 25008 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma -2021/06/10 | 28164 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma -2021/06/10 | 56342 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma -2021/06/10 | 62717 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma -2021/06/10 | 134797 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma -2021/06/10 | 152167 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma -2021/06/10 | 72926 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma -2021/06/10 | 77942 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma -2021/06/10 | 71709 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma -2021/06/10 | 80966 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma -2021/06/10 | 258840 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma -2021/06/10 | 295147 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma -2021/06/10 | 22025 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma -2021/06/10 | 24987 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma -2021/06/10 | 97493 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma -2021/06/10 | 112168 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma -2021/06/10 | 64402 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma -2021/06/10 | 73144 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma -2021/06/10 | 96476 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma -2021/06/10 | 115121 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma -2021/06/10 | 38170 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma -2021/06/10 | 42981 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma -2021/06/10 | 482838 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma -2021/06/10 | 565939 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma -2021/06/10 | 147408 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma -2021/06/10 | 159548 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma -2021/06/10 | 94773 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma -2021/06/10 | 108937 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma -2021/06/10 | 16342 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma -2021/06/10 | 17983 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma -2021/06/10 | 28286 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma -2021/06/10 | 30037 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma -2021/06/10 | 629825 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma -2021/06/10 | 680955 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma -2021/06/10 | 532271 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma -2021/06/10 | 596059 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma -2021/06/10 | 476901 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma -2021/06/10 | 512668 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma -2021/06/10 | 94384 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma -2021/06/10 | 103439 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma -2021/06/10 | 1708081 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma -2021/06/10 | 2005874 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma -2021/06/10 | 67611 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma -2021/06/10 | 74210 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma -2021/06/10 | 27268 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma -2021/06/10 | 31571 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma -2021/06/10 | 7715 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma -2021/06/10 | 8772 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma -2021/06/10 | 197091 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma -2021/06/10 | 215199 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma -2021/06/10 | 250392 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma -2021/06/10 | 284041 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma -2021/06/10 | 98269 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma -2021/06/10 | 103519 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma -2021/06/10 | 60616 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma -2021/06/10 | 67974 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma -2021/06/10 | 124618 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma -2021/06/10 | 136506 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma -2021/06/10 | 147714 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma -2021/06/10 | 163765 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma -2021/06/10 | 199639 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma -2021/06/10 | 180078 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma -2021/06/10 | 67373 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma -2021/06/10 | 76880 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma -2021/06/10 | 31209 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma -2021/06/10 | 35071 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma -2021/06/10 | 37865 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma -2021/06/10 | 42729 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma -2021/06/10 | 42888 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma -2021/06/10 | 46724 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma -2021/06/10 | 45940 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma -2021/06/10 | 52441 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma -2021/06/10 | 194081 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma -2021/06/10 | 206345 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma -2021/06/10 | 35700 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma -2021/06/10 | 40343 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma -2021/06/10 | 748787 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma -2021/06/10 | 816251 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma -2021/06/10 | 198228 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma -2021/06/10 | 202704 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma -2021/06/10 | 207852 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma -2021/06/10 | 243393 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma -2021/06/10 | 78751 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma -2021/06/10 | 87679 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma -2021/06/10 | 1170761 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma -2021/06/10 | 1300403 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma -2021/06/10 | 20125 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma -2021/06/10 | 23883 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma -2021/06/10 | 31549 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma -2021/06/10 | 37230 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma -2021/06/10 | 64036 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma -2021/06/10 | 72178 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma -2021/06/10 | 44612 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma -2021/06/10 | 51458 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma -2021/06/10 | 1308120 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma -2021/06/10 | 1429094 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma -2021/06/10 | 42376 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma -2021/06/10 | 51742 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma -2021/06/10 | 56290 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma -2021/06/10 | 59700 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma -2021/06/10 | 25268 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma -2021/06/10 | 27260 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma -2021/06/10 | 16447 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma -2021/06/10 | 18169 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma -2021/06/10 | 63753 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma -2021/06/10 | 69899 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma -2021/06/10 | 154626 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma -2021/06/10 | 169103 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma -2021/06/10 | 56754 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma -2021/06/10 | 65468 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma -2021/06/10 | 97981 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma -2021/06/10 | 106859 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma -2021/06/10 | 2670403 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma -2021/06/10 | 2793680 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma -2021/06/10 | 56312 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma -2021/06/10 | 62229 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma -2021/06/10 | 33602 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma -2021/06/10 | 37365 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma -2021/06/10 | 27711 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma -2021/06/10 | 33623 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma -2021/06/10 | 67264 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma -2021/06/10 | 70487 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma -2021/06/10 | 311357 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma -2021/06/10 | 345324 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma -2021/06/10 | 55525 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma -2021/06/10 | 57113 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma -2021/06/10 | 586329 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma -2021/06/10 | 621334 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma -2021/06/10 | 39019 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma -2021/06/10 | 43357 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma -2021/06/10 | 218110 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma -2021/06/10 | 1290563 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma -2021/06/10 | 1203560 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma -2021/06/10 | 13448 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma -2021/06/10 | 14346 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma +2021/06/11 | 584241 | systems/win32/miktex/tm/packages/next/files.csv.lzma +2021/06/11 | 51090 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma +2021/06/11 | 56474 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma +2021/06/11 | 971292 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma +2021/06/11 | 1076119 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma +2021/06/11 | 29046 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma +2021/06/11 | 31329 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma +2021/06/11 | 29835 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma +2021/06/11 | 34652 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma +2021/06/11 | 50032 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma +2021/06/11 | 57635 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma +2021/06/11 | 83762 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma +2021/06/11 | 95452 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma +2021/06/11 | 67885 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma +2021/06/11 | 75964 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma +2021/06/11 | 27186 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma +2021/06/11 | 30806 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma +2021/06/11 | 330438 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma +2021/06/11 | 392696 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma +2021/06/11 | 32599 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma +2021/06/11 | 36605 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma +2021/06/11 | 51291 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma +2021/06/11 | 56814 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma +2021/06/11 | 239582 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma +2021/06/11 | 261912 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma +2021/06/11 | 180190 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma +2021/06/11 | 195755 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma +2021/06/11 | 52542 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma +2021/06/11 | 59145 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma +2021/06/11 | 21177 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma +2021/06/11 | 23370 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma +2021/06/11 | 461826 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma +2021/06/11 | 46494 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma +2021/06/11 | 51117 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma +2021/06/11 | 281966 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma +2021/06/11 | 321646 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma +2021/06/11 | 41189 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma +2021/06/11 | 45317 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma +2021/06/11 | 117480 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma +2021/06/11 | 131581 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma +2021/06/11 | 1294236 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma +2021/06/11 | 1423058 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma +2021/06/11 | 100461 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma +2021/06/11 | 112815 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma +2021/06/11 | 43061 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma +2021/06/11 | 48240 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma +2021/06/11 | 25008 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma +2021/06/11 | 28164 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma +2021/06/11 | 56341 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma +2021/06/11 | 62716 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma +2021/06/11 | 134796 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma +2021/06/11 | 152165 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma +2021/06/11 | 72925 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma +2021/06/11 | 77943 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma +2021/06/11 | 71709 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma +2021/06/11 | 80966 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma +2021/06/11 | 258840 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma +2021/06/11 | 295146 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma +2021/06/11 | 22023 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma +2021/06/11 | 24988 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma +2021/06/11 | 97490 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma +2021/06/11 | 112167 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma +2021/06/11 | 64403 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma +2021/06/11 | 73142 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma +2021/06/11 | 96474 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma +2021/06/11 | 115120 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma +2021/06/11 | 38170 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma +2021/06/11 | 42981 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma +2021/06/11 | 482839 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma +2021/06/11 | 565938 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma +2021/06/11 | 147409 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma +2021/06/11 | 159546 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma +2021/06/11 | 94773 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma +2021/06/11 | 108935 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma +2021/06/11 | 16342 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma +2021/06/11 | 17982 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma +2021/06/11 | 28287 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma +2021/06/11 | 30038 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma +2021/06/11 | 629825 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma +2021/06/11 | 680955 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma +2021/06/11 | 532271 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma +2021/06/11 | 596061 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma +2021/06/11 | 476900 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma +2021/06/11 | 512665 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma +2021/06/11 | 94385 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma +2021/06/11 | 103436 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma +2021/06/11 | 1708077 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma +2021/06/11 | 2005872 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma +2021/06/11 | 67610 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma +2021/06/11 | 74209 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma +2021/06/11 | 27267 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma +2021/06/11 | 31570 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma +2021/06/11 | 7717 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma +2021/06/11 | 8772 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma +2021/06/11 | 197091 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma +2021/06/11 | 215197 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma +2021/06/11 | 250397 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma +2021/06/11 | 284040 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma +2021/06/11 | 98268 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma +2021/06/11 | 103520 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma +2021/06/11 | 60618 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma +2021/06/11 | 67971 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma +2021/06/11 | 124618 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma +2021/06/11 | 136506 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma +2021/06/11 | 147714 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma +2021/06/11 | 163765 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma +2021/06/11 | 199638 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma +2021/06/11 | 180081 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma +2021/06/11 | 67372 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma +2021/06/11 | 76879 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma +2021/06/11 | 31208 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma +2021/06/11 | 35071 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma +2021/06/11 | 37866 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma +2021/06/11 | 42728 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma +2021/06/11 | 42888 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma +2021/06/11 | 46723 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma +2021/06/11 | 45940 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma +2021/06/11 | 52440 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma +2021/06/11 | 194081 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma +2021/06/11 | 206345 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma +2021/06/11 | 35700 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma +2021/06/11 | 40344 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma +2021/06/11 | 748788 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma +2021/06/11 | 816250 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma +2021/06/11 | 198227 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma +2021/06/11 | 202702 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma +2021/06/11 | 207851 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma +2021/06/11 | 243392 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma +2021/06/11 | 78750 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma +2021/06/11 | 87679 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma +2021/06/11 | 1170759 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma +2021/06/11 | 1300402 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma +2021/06/11 | 20125 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma +2021/06/11 | 23884 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma +2021/06/11 | 31547 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma +2021/06/11 | 37230 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma +2021/06/11 | 64035 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma +2021/06/11 | 72177 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma +2021/06/11 | 44612 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma +2021/06/11 | 51456 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma +2021/06/11 | 1308119 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma +2021/06/11 | 1429092 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma +2021/06/11 | 42374 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma +2021/06/11 | 51742 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma +2021/06/11 | 56290 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma +2021/06/11 | 59699 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma +2021/06/11 | 25268 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma +2021/06/11 | 27260 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma +2021/06/11 | 16448 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma +2021/06/11 | 18168 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma +2021/06/11 | 63753 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma +2021/06/11 | 69899 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma +2021/06/11 | 154626 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma +2021/06/11 | 169103 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma +2021/06/11 | 56754 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma +2021/06/11 | 65468 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma +2021/06/11 | 97982 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma +2021/06/11 | 106861 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma +2021/06/11 | 2670401 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma +2021/06/11 | 2793680 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma +2021/06/11 | 56312 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma +2021/06/11 | 62227 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma +2021/06/11 | 33602 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma +2021/06/11 | 37364 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma +2021/06/11 | 27711 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma +2021/06/11 | 33623 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma +2021/06/11 | 67263 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma +2021/06/11 | 70488 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma +2021/06/11 | 311358 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma +2021/06/11 | 345325 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma +2021/06/11 | 55525 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma +2021/06/11 | 57112 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma +2021/06/11 | 586331 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma +2021/06/11 | 621336 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma +2021/06/11 | 39019 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma +2021/06/11 | 43358 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma +2021/06/11 | 218791 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma +2021/06/11 | 1292370 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma +2021/06/11 | 1205005 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma +2021/06/11 | 13447 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma +2021/06/11 | 14346 | 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/06/10 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini +2021/06/11 | 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 @@ -285244,7 +285255,7 @@ 2020/10/20 | 342254 | systems/win32/miktex/tm/packages/preview.tar.lzma 2019/06/20 | 375963 | systems/win32/miktex/tm/packages/prftree.tar.lzma 2021/04/23 | 274028 | systems/win32/miktex/tm/packages/principia.tar.lzma -2021/06/10 | 945 | systems/win32/miktex/tm/packages/pr.ini +2021/06/11 | 936 | 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 @@ -285615,7 +285626,9 @@ 2010/11/01 | 286025 | systems/win32/miktex/tm/packages/selectp.tar.lzma 2019/12/13 | 547951 | systems/win32/miktex/tm/packages/selinput.tar.lzma 2015/10/27 | 566297 | systems/win32/miktex/tm/packages/selnolig.tar.lzma -2020/11/09 | 414064 | systems/win32/miktex/tm/packages/semantex.tar.lzma +2021/06/11 | 364684 | systems/win32/miktex/tm/packages/semantex__doc.tar.lzma +2021/06/11 | 35157 | systems/win32/miktex/tm/packages/semantex__source.tar.lzma +2021/06/11 | 23534 | systems/win32/miktex/tm/packages/semantex.tar.lzma 2020/01/30 | 273901 | systems/win32/miktex/tm/packages/semantic-markup.tar.lzma 2016/07/29 | 397016 | systems/win32/miktex/tm/packages/semantic.tar.lzma 2008/01/28 | 514794 | systems/win32/miktex/tm/packages/semaphor.tar.lzma @@ -286037,9 +286050,9 @@ 2009/04/04 | 8096508 | systems/win32/miktex/tm/packages/tipa.tar.lzma 2021/05/09 | 455058 | systems/win32/miktex/tm/packages/tipauni.tar.lzma 2015/01/13 | 388795 | systems/win32/miktex/tm/packages/tipfr.tar.lzma -2021/06/08 | 134402 | systems/win32/miktex/tm/packages/tiscreen__doc.tar.lzma -2021/06/08 | 1960 | systems/win32/miktex/tm/packages/tiscreen__source.tar.lzma -2021/06/08 | 1339 | systems/win32/miktex/tm/packages/tiscreen.tar.lzma +2021/06/11 | 126414 | systems/win32/miktex/tm/packages/tiscreen__doc.tar.lzma +2021/06/11 | 1995 | systems/win32/miktex/tm/packages/tiscreen__source.tar.lzma +2021/06/11 | 1338 | systems/win32/miktex/tm/packages/tiscreen.tar.lzma 2015/02/28 | 265279 | systems/win32/miktex/tm/packages/titlecaps.tar.lzma 2001/05/14 | 3146 | systems/win32/miktex/tm/packages/titlefoot.tar.lzma 2006/08/17 | 861587 | systems/win32/miktex/tm/packages/titlepage-uni-dortmund.tar.bz2 @@ -286332,7 +286345,9 @@ 2014/06/23 | 13295 | systems/win32/miktex/tm/packages/xetex-devanagari.tar.lzma 2008/06/21 | 2664 | systems/win32/miktex/tm/packages/xetexfontinfo.tar.lzma 2014/09/08 | 45644 | systems/win32/miktex/tm/packages/xetex-itrans.tar.lzma -2021/05/29 | 318658 | systems/win32/miktex/tm/packages/xetexko.tar.lzma +2021/06/11 | 254493 | systems/win32/miktex/tm/packages/xetexko__doc.tar.lzma +2021/06/11 | 12002 | systems/win32/miktex/tm/packages/xetexko__source.tar.lzma +2021/06/11 | 54051 | systems/win32/miktex/tm/packages/xetexko.tar.lzma 2010/02/22 | 1496 | systems/win32/miktex/tm/packages/xetex-pstricks.tar.lzma 2019/12/13 | 158451 | systems/win32/miktex/tm/packages/xetexref.tar.lzma 2021/05/18 | 55575 | systems/win32/miktex/tm/packages/xetex.tar.lzma @@ -286471,9 +286486,9 @@ 2019/08/12 | 14654 | systems/win32/w32tex/00FILES.euc 2019/08/12 | 14654 | systems/win32/w32tex/00FILES.sjis 2021/06/03 | 5529800 | systems/win32/w32tex/aleph-w32.tar.xz -2021/06/09 | 63893120 | systems/win32/w32tex/biblatex-biber.tar.xz +2021/06/09 | 62906868 | systems/win32/w32tex/biblatex-biber.tar.xz 2016/12/13 | 65971452 | systems/win32/w32tex/cbfonts.tar.xz -2021/06/09 | 843139 | systems/win32/w32tex/ChangeLog +2021/06/09 | 843302 | 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 @@ -286497,7 +286512,7 @@ 2021/06/06 | 39449224 | systems/win32/w32tex/latex.tar.xz 2021/04/07 | 1007424 | systems/win32/w32tex/lcdf-typetools-w32.tar.xz 2021/05/25 | 413638248 | systems/win32/w32tex/ltxpkgdocs.tar.xz -2021/06/09 | 50086912 | systems/win32/w32tex/ltxpkgs.tar.xz +2021/06/10 | 50083384 | systems/win32/w32tex/ltxpkgs.tar.xz 2021/05/12 | 3891892 | systems/win32/w32tex/luajittex-dev-w32.tar.xz 2021/05/12 | 3899756 | systems/win32/w32tex/luajittex-exp-w32.tar.xz 2021/05/12 | 3907764 | systems/win32/w32tex/luajittex-w32.tar.xz @@ -286553,7 +286568,7 @@ 2013/04/08 | 13748 | systems/win32/w32tex/vf-n2bk.tar.xz 2021/03/24 | 53260516 | systems/win32/w32tex/w32tex-src.tar.xz 2021/06/08 | 131174548 | systems/win32/w32tex/web2c-lib.tar.xz -2021/06/09 | 45562216 | systems/win32/w32tex/web2c-w32.tar.xz +2021/06/10 | 45555608 | systems/win32/w32tex/web2c-w32.tar.xz 2021/05/08 | 811412 | systems/win32/w32tex/win64/aleph-w64.tar.xz 2020/08/20 | 22351540 | systems/win32/w32tex/win64/biblatex-biber-w64.tar.xz 2021/05/27 | 2235788 | systems/win32/w32tex/win64/context-w64.tar.xz @@ -286694,7 +286709,7 @@ 2004/06/04 | 404 | tds/tds.sed 2004/06/23 | 65418 | tds/tds.tex 2019/05/29 | 304264 | tds.zip -2021/06/11 | 186 | timestamp +2021/06/12 | 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 Binary files differindex 2eb93f5d0e..9e820a0e6e 100644 --- a/FILES.byname.gz +++ b/FILES.byname.gz diff --git a/FILES.last07days b/FILES.last07days index 7a9c77c483..c5b6f696a9 100644 --- a/FILES.last07days +++ b/FILES.last07days @@ -1,315 +1,412 @@ +2021/06/11 | 98268 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma +2021/06/11 | 97982 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma +2021/06/11 | 97513 | macros/latex/contrib/media9/pdfbase.sty +2021/06/11 | 97490 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma +2021/06/11 | 971292 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma +2021/06/11 | 96474 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma +2021/06/11 | 9610 | language/marathi/namuna-book.tex +2021/06/11 | 95452 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma +2021/06/11 | 9539 | language/marathi/namuna-article.tex +2021/06/11 | 949731 | macros/latex/contrib/ltx4yt.zip +2021/06/11 | 94773 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma +2021/06/11 | 94385 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma +2021/06/11 | 936 | systems/win32/miktex/tm/packages/pr.ini +2021/06/11 | 93160 | macros/latex/contrib/media9/doc/media9.tex +2021/06/11 | 8772 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma +2021/06/11 | 87679 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma +2021/06/11 | 84013 | macros/latex/contrib/animate/animate.tex +2021/06/11 | 83762 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma +2021/06/11 | 816250 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma +2021/06/11 | 80966 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma +2021/06/11 | 78750 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma +2021/06/11 | 77943 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma +2021/06/11 | 771 | macros/latex/contrib/ltx4yt/README.md +2021/06/11 | 7717 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma +2021/06/11 | 76879 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma +2021/06/11 | 75964 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma +2021/06/11 | 748788 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma +2021/06/11 | 7472361 | install/macros/latex/contrib/media9.tds.zip +2021/06/11 | 7467071 | macros/latex/contrib/media9.zip +2021/06/11 | 74209 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma +2021/06/11 | 73142 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma +2021/06/11 | 72925 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma +2021/06/11 | 728896 | systems/win32/miktex/tm/packages/cooking-units__doc.tar.lzma +2021/06/11 | 725860 | systems/texlive/tlnet/archive/cooking-units.doc.r59542.tar.xz +2021/06/11 | 72177 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma +2021/06/11 | 71709 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma +2021/06/11 | 70488 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma +2021/06/11 | 69899 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma +2021/06/11 | 69295 | language/marathi/marathi.dtx +2021/06/11 | 69147 | systems/win32/miktex/tm/packages/cooking-units__source.tar.lzma +2021/06/11 | 6887 | macros/latex/contrib/ocgx2/ChangeLog +2021/06/11 | 68828 | systems/texlive/tlnet/archive/cooking-units.source.r59542.tar.xz +2021/06/11 | 6812853 | systems/texlive/tlnet/install-tl-unx.tar.gz +2021/06/11 | 680955 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma +2021/06/11 | 67971 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma +2021/06/11 | 67885 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma +2021/06/11 | 67610 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma +2021/06/11 | 67372 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma +2021/06/11 | 67263 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma +2021/06/11 | 65468 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma +2021/06/11 | 6480 | systems/win32/miktex/tm/packages/minim-xmp.tar.lzma +2021/06/11 | 64403 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma +2021/06/11 | 64035 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma +2021/06/11 | 63753 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma +2021/06/11 | 629825 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma +2021/06/11 | 62716 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma +2021/06/11 | 62227 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma +2021/06/11 | 621336 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma +2021/06/11 | 60618 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma +2021/06/11 | 59699 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma +2021/06/11 | 596061 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma +2021/06/11 | 59145 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma +2021/06/11 | 586331 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma +2021/06/11 | 5859 | macros/latex/contrib/orcidlink/orcidlink.dtx +2021/06/11 | 584241 | systems/win32/miktex/tm/packages/next/files.csv.lzma +2021/06/11 | 583961 | systems/win32/miktex/tm/packages/files.csv.lzma +2021/06/11 | 57635 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma +2021/06/11 | 57112 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma +2021/06/11 | 56814 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma +2021/06/11 | 56754 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma +2021/06/11 | 565938 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma +2021/06/11 | 56474 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma +2021/06/11 | 56341 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma +2021/06/11 | 56312 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma +2021/06/11 | 56290 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma +2021/06/11 | 55525 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma +2021/06/11 | 5456 | macros/latex/contrib/keyfloat/images/image.pdf +2021/06/11 | 54051 | systems/win32/miktex/tm/packages/xetexko.tar.lzma +2021/06/11 | 53752 | systems/texlive/tlnet/archive/xetexko.r59546.tar.xz +2021/06/11 | 532271 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma +2021/06/11 | 52542 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma +2021/06/11 | 52440 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma +2021/06/11 | 51742 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma +2021/06/11 | 51456 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma +2021/06/11 | 51291 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma +2021/06/11 | 512665 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma +2021/06/11 | 51117 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma +2021/06/11 | 51090 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma +2021/06/11 | 50032 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma +2021/06/11 | 4960 | language/marathi/marathi.ins +2021/06/11 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2021/06/11 | 48989 | systems/win32/miktex/tm/packages/minim-xmp__doc.tar.lzma +2021/06/11 | 482839 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma +2021/06/11 | 48240 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma +2021/06/11 | 476900 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma +2021/06/11 | 4700 | macros/latex/contrib/keyfloat/images/image2.pdf +2021/06/11 | 46723 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma +2021/06/11 | 46494 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma +2021/06/11 | 461826 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma +2021/06/11 | 45940 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma +2021/06/11 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +2021/06/11 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc +2021/06/11 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc +2021/06/11 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc +2021/06/11 | 45317 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma +2021/06/11 | 44612 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma +2021/06/11 | 43358 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma +2021/06/11 | 43061 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma +2021/06/11 | 429950 | macros/latex/contrib/semantex.zip +2021/06/11 | 42981 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma +2021/06/11 | 42888 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma +2021/06/11 | 42728 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma +2021/06/11 | 42374 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma +2021/06/11 | 4220 | macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w2.tex +2021/06/11 | 4128 | macros/latex/contrib/ltx4yt/examples/ltx4yt-2.tex +2021/06/11 | 41189 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma +2021/06/11 | 40344 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma +2021/06/11 | 397696 | systems/texlive/tlnet/archive/texlive-scripts.doc.r59541.tar.xz +2021/06/11 | 396124 | systems/texlive/tlnet/archive/semantex.doc.r59543.tar.xz +2021/06/11 | 392696 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma +2021/06/11 | 39019 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma +2021/06/11 | 3869206 | macros/latex/contrib/animate/animate.pdf +2021/06/11 | 38170 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma +2021/06/11 | 3809 | macros/generic/xint/README.md +2021/06/11 | 37866 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma +2021/06/11 | 3748241 | macros/latex/contrib/media9/doc/media9.pdf +2021/06/11 | 37364 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma +2021/06/11 | 37230 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma +2021/06/11 | 36605 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma +2021/06/11 | 364684 | systems/win32/miktex/tm/packages/semantex__doc.tar.lzma +2021/06/11 | 3627 | systems/win32/miktex/tm/packages/minim-xmp__source.tar.lzma +2021/06/11 | 3575 | language/marathi/README.txt +2021/06/11 | 35700 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma +2021/06/11 | 356732 | macros/latex/contrib/easybook.zip +2021/06/11 | 35157 | systems/win32/miktex/tm/packages/semantex__source.tar.lzma +2021/06/11 | 35149 | language/marathi/COPYING +2021/06/11 | 35071 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma +2021/06/11 | 348984 | systems/texlive/tlnet/archive/luatexko.doc.r59545.tar.xz +2021/06/11 | 34652 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma +2021/06/11 | 345325 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma +2021/06/11 | 338040 | systems/win32/miktex/tm/packages/luatexko__doc.tar.lzma +2021/06/11 | 33643 | install/macros/latex/contrib/ocgx2.tds.zip +2021/06/11 | 33623 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma +2021/06/11 | 33602 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma +2021/06/11 | 330438 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma +2021/06/11 | 32599 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma +2021/06/11 | 32584 | macros/latex/contrib/ocgx2.zip +2021/06/11 | 324242 | systems/win32/miktex/tm/packages/easybook__doc.tar.lzma +2021/06/11 | 324104 | macros/latex/contrib/easybook/easybook.pdf +2021/06/11 | 3229608 | install/macros/latex/contrib/animate.tds.zip +2021/06/11 | 3227335 | macros/latex/contrib/animate.zip +2021/06/11 | 321646 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma +2021/06/11 | 31966 | systems/win32/miktex/tm/packages/easybook__source.tar.lzma +2021/06/11 | 31570 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma +2021/06/11 | 31547 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma +2021/06/11 | 31329 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma +2021/06/11 | 31208 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma +2021/06/11 | 311358 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma +2021/06/11 | 30806 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma +2021/06/11 | 30038 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma +2021/06/11 | 29835 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma +2021/06/11 | 295146 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma +2021/06/11 | 29046 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma +2021/06/11 | 28918 | language/marathi/LICENSE.md +2021/06/11 | 284040 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma +2021/06/11 | 28287 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma +2021/06/11 | 281966 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma +2021/06/11 | 28164 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma +2021/06/11 | 2798424 | install/macros/generic/xint.tds.zip +2021/06/11 | 2793680 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma +2021/06/11 | 27711 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma +2021/06/11 | 27267 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma +2021/06/11 | 27260 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma +2021/06/11 | 27186 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma +2021/06/11 | 2710 | macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w1.tex +2021/06/11 | 2686672 | macros/generic/xint.zip +2021/06/11 | 2670401 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma +2021/06/11 | 26460 | systems/texlive/tlnet/archive/semantex.r59543.tar.xz +2021/06/11 | 264392 | systems/texlive/tlnet/archive/xetexko.doc.r59546.tar.xz +2021/06/11 | 261912 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma +2021/06/11 | 25934 | macros/latex/contrib/ocgx2/ocgbase.sty +2021/06/11 | 258840 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma +2021/06/11 | 25584682 | systems/texlive/tlnet/install-tl.zip +2021/06/11 | 254493 | systems/win32/miktex/tm/packages/xetexko__doc.tar.lzma +2021/06/11 | 25268 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma +2021/06/11 | 250397 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma +2021/06/11 | 25008 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma +2021/06/11 | 24988 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma +2021/06/11 | 243392 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma +2021/06/11 | 239582 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma +2021/06/11 | 23884 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma +2021/06/11 | 23534 | systems/win32/miktex/tm/packages/semantex.tar.lzma +2021/06/11 | 23370 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma +2021/06/11 | 2334 | macros/latex/contrib/ltx4yt/examples/ltx4yt-1.tex +2021/06/11 | 23214 | systems/win32/miktex/tm/packages/luatexko.tar.lzma +2021/06/11 | 2312700 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +2021/06/11 | 23004 | systems/texlive/tlnet/archive/luatexko.r59545.tar.xz +2021/06/11 | 22023 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma +2021/06/11 | 218791 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma +2021/06/11 | 218739 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma +2021/06/11 | 217053 | language/marathi.zip +2021/06/11 | 215197 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma +2021/06/11 | 21177 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma +2021/06/11 | 20909 | systems/win32/miktex/tm/packages/cooking-units.tar.lzma +2021/06/11 | 2085 | systems/win32/miktex/tm/packages/ffcode__source.tar.lzma +2021/06/11 | 20809005 | systems/texlive/tlnet/install-tl-windows.exe +2021/06/11 | 207851 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma +2021/06/11 | 20768 | systems/texlive/tlnet/archive/cooking-units.r59542.tar.xz +2021/06/11 | 206345 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma +2021/06/11 | 2047 | language/marathi/glossaries.gls +2021/06/11 | 2031 | language/marathi/namuna-letter.tex +2021/06/11 | 202702 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma +2021/06/11 | 20125 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma +2021/06/11 | 2005872 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma +2021/06/11 | 199638 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma +2021/06/11 | 1995 | systems/win32/miktex/tm/packages/tiscreen__source.tar.lzma +2021/06/11 | 198227 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma +2021/06/11 | 197091 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma +2021/06/11 | 195755 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma +2021/06/11 | 194081 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma +2021/06/11 | 1888 | systems/win32/miktex/tm/packages/ffcode.tar.lzma +2021/06/11 | 1856488 | macros/generic/xint/xint.dtx +2021/06/11 | 1832 | language/marathi/namuna-beamer.tex +2021/06/11 | 18168 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma +2021/06/11 | 180190 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma +2021/06/11 | 180081 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma +2021/06/11 | 17982 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma +2021/06/11 | 177169 | macros/latex/contrib/orcidlink.zip +2021/06/11 | 176940 | macros/latex/contrib/orcidlink/orcidlink.pdf +2021/06/11 | 176615 | language/marathi/marathi.pdf +2021/06/11 | 17279146 | systems/texlive/tlnet/tlpkg/texlive.tlpdb +2021/06/11 | 1708077 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma +2021/06/11 | 169103 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma +2021/06/11 | 1644 | macros/latex/contrib/keyfloat/keyfloat.ins +2021/06/11 | 16448 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma +2021/06/11 | 163765 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma +2021/06/11 | 16342 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma +2021/06/11 | 159762 | macros/latex/contrib/media9/media9.sty +2021/06/11 | 159546 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma +2021/06/11 | 154626 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma +2021/06/11 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 +2021/06/11 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 +2021/06/11 | 152165 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma +2021/06/11 | 150134 | macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w1.pdf +2021/06/11 | 147714 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma +2021/06/11 | 14752 | macros/latex/contrib/media9/ChangeLog +2021/06/11 | 147409 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma +2021/06/11 | 14663 | systems/win32/miktex/tm/packages/easybook.tar.lzma +2021/06/11 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2021/06/11 | 145462 | macros/latex/contrib/keyfloat/keyfloat.dtx +2021/06/11 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2021/06/11 | 14346 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma +2021/06/11 | 1429092 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma +2021/06/11 | 1423058 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma +2021/06/11 | 136883 | macros/latex/contrib/animate/animate.sty +2021/06/11 | 136506 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma +2021/06/11 | 134796 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma +2021/06/11 | 13447 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma +2021/06/11 | 1338 | systems/win32/miktex/tm/packages/tiscreen.tar.lzma +2021/06/11 | 131605 | macros/generic/xint/CHANGES.html +2021/06/11 | 131581 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma +2021/06/11 | 130955 | macros/latex/contrib/easybook/easybook.dtx +2021/06/11 | 1308119 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma +2021/06/11 | 1300402 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma +2021/06/11 | 1294236 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma +2021/06/11 | 1292370 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma +2021/06/11 | 1292316 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma +2021/06/11 | 128904 | macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w2.pdf +2021/06/11 | 127244 | systems/texlive/tlnet/archive/tiscreen.doc.r59544.tar.xz +2021/06/11 | 126414 | systems/win32/miktex/tm/packages/tiscreen__doc.tar.lzma +2021/06/11 | 12526 | systems/win32/miktex/tm/packages/luatexko__source.tar.lzma +2021/06/11 | 124618 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma +2021/06/11 | 123755 | macros/latex/contrib/ltx4yt/examples/ltx4yt-2.pdf +2021/06/11 | 1236 | language/marathi/namuna-para.tex +2021/06/11 | 12322 | macros/latex/contrib/animate/ChangeLog +2021/06/11 | 1205005 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma +2021/06/11 | 1204058 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma +2021/06/11 | 12002 | systems/win32/miktex/tm/packages/xetexko__source.tar.lzma +2021/06/11 | 117480 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma +2021/06/11 | 1170759 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma +2021/06/11 | 1169039 | macros/generic/xint/sourcexint.pdf +2021/06/11 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini +2021/06/11 | 115120 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma +2021/06/11 | 1144 | macros/latex/contrib/keyfloat/README.txt +2021/06/11 | 1136 | systems/texlive/tlnet/archive/tiscreen.r59544.tar.xz +2021/06/11 | 112815 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma +2021/06/11 | 112167 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma +2021/06/11 | 109498 | macros/latex/contrib/ltx4yt/examples/ltx4yt-1.pdf +2021/06/11 | 109470 | systems/win32/miktex/tm/packages/ffcode__doc.tar.lzma +2021/06/11 | 108935 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma +2021/06/11 | 10827 | language/marathi/namuna-report.tex +2021/06/11 | 108008 | systems/texlive/tlnet/archive/texlive-scripts.r59541.tar.xz +2021/06/11 | 1076119 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma +2021/06/11 | 106861 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma +2021/06/11 | 1056768 | macros/generic/xint/xint.pdf +2021/06/11 | 104813 | macros/latex/contrib/ocgx2/ocgx2.sty +2021/06/11 | 1038807 | macros/latex/contrib/keyfloat.zip +2021/06/11 | 103520 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma +2021/06/11 | 103436 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma +2021/06/11 | 1010471 | macros/latex/contrib/keyfloat/keyfloat.pdf +2021/06/11 | 100461 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma 2021/06/10 | 9992 | systems/win32/miktex/tm/packages/jfmutil__doc.tar.lzma -2021/06/10 | 98269 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma -2021/06/10 | 97981 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma -2021/06/10 | 97493 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma 2021/06/10 | 97148 | systems/win32/miktex/tm/packages/minim-pdf__doc.tar.lzma -2021/06/10 | 971288 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma -2021/06/10 | 96476 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma 2021/06/10 | 9632 | systems/texlive/tlnet/archive/jfmutil.doc.r59530.tar.xz 2021/06/10 | 957561 | systems/win32/miktex/tm/packages/pictex__doc.tar.lzma -2021/06/10 | 95451 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma -2021/06/10 | 94773 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma -2021/06/10 | 945 | systems/win32/miktex/tm/packages/pr.ini -2021/06/10 | 94384 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma 2021/06/10 | 94048 | systems/texlive/tlnet/archive/latexmk.r59535.tar.xz 2021/06/10 | 93496 | systems/texlive/tlnet/archive/minim-math.doc.r59537.tar.xz 2021/06/10 | 92911 | macros/xetex/generic/xetexko/xetexko.sty 2021/06/10 | 89813 | systems/win32/miktex/tm/packages/minim-math__doc.tar.lzma 2021/06/10 | 8820 | macros/luatex/generic/luatexko/ChangeLog -2021/06/10 | 8772 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma -2021/06/10 | 87679 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma 2021/06/10 | 866312 | systems/texlive/tlnet/archive/biblatex-ext.doc.r59532.tar.xz -2021/06/10 | 83762 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma -2021/06/10 | 816251 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma 2021/06/10 | 8116 | macros/xetex/generic/xetexko/ChangeLog -2021/06/10 | 80966 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma 2021/06/10 | 804682 | macros/latex/contrib/cooking-units.zip 2021/06/10 | 8044 | systems/win32/miktex/tm/packages/minim-pdf__source.tar.lzma 2021/06/10 | 7877664 | systems/texlive/tlnet/archive/hvfloat.doc.r59533.tar.xz -2021/06/10 | 78751 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma -2021/06/10 | 77942 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma -2021/06/10 | 7715 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma -2021/06/10 | 76880 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma 2021/06/10 | 76608 | systems/texlive/tlnet/archive/minim-mp.doc.r59538.tar.xz -2021/06/10 | 75963 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma 2021/06/10 | 7505202 | systems/win32/miktex/tm/packages/hvfloat__doc.tar.lzma -2021/06/10 | 748787 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma 2021/06/10 | 748443 | macros/latex/contrib/cooking-units/cooking-units.pdf -2021/06/10 | 74210 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma 2021/06/10 | 736 | systems/texlive/tlnet/archive/collection-luatex.r59538.tar.xz -2021/06/10 | 73144 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma -2021/06/10 | 72926 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma -2021/06/10 | 72178 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma 2021/06/10 | 71919 | systems/win32/miktex/tm/packages/minim-mp__doc.tar.lzma -2021/06/10 | 71709 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma 2021/06/10 | 71374 | macros/luatex/generic/luatexko/luatexko.lua -2021/06/10 | 70487 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma -2021/06/10 | 69899 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma 2021/06/10 | 689 | macros/latex/contrib/tiscreen/README -2021/06/10 | 6812707 | systems/texlive/tlnet/install-tl-unx.tar.gz -2021/06/10 | 680955 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma 2021/06/10 | 67 | macros/latex/contrib/ffcode/DEPENDS.txt -2021/06/10 | 67974 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma -2021/06/10 | 67887 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma -2021/06/10 | 67611 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma -2021/06/10 | 67373 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma -2021/06/10 | 67264 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma 2021/06/10 | 668 | macros/xetex/generic/xetexko/xetexko-hanging.sty -2021/06/10 | 65468 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma 2021/06/10 | 647 | macros/xetex/generic/xetexko/xetexko-vertical.sty 2021/06/10 | 64456 | macros/luatex/generic/minim-xmp.zip 2021/06/10 | 6444 | macros/luatex/generic/luatexko/luatexko-normalize.lua -2021/06/10 | 64402 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma 2021/06/10 | 641 | macros/xetex/generic/xetexko/xetexko-space.sty -2021/06/10 | 64036 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma 2021/06/10 | 639 | macros/xetex/generic/xetexko/xetexko-josa.sty 2021/06/10 | 639 | macros/xetex/generic/xetexko/xetexko-font.sty -2021/06/10 | 63753 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma -2021/06/10 | 629825 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma -2021/06/10 | 62717 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma -2021/06/10 | 62229 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma -2021/06/10 | 621334 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma 2021/06/10 | 6204 | systems/win32/miktex/tm/packages/minim-mp__source.tar.lzma 2021/06/10 | 60956 | systems/texlive/tlnet/archive/siunitx.r59534.tar.xz -2021/06/10 | 60616 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma 2021/06/10 | 60483 | systems/win32/miktex/tm/packages/siunitx.tar.lzma -2021/06/10 | 59700 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma -2021/06/10 | 596059 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma -2021/06/10 | 59145 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma -2021/06/10 | 586329 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma -2021/06/10 | 583264 | systems/win32/miktex/tm/packages/next/files.csv.lzma -2021/06/10 | 582841 | systems/win32/miktex/tm/packages/files.csv.lzma 2021/06/10 | 577652 | systems/texlive/tlnet/archive/texlive-common.doc.r59528.tar.xz -2021/06/10 | 57634 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma -2021/06/10 | 57113 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma -2021/06/10 | 56812 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma -2021/06/10 | 56754 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma -2021/06/10 | 565939 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma -2021/06/10 | 56472 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma -2021/06/10 | 56342 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma -2021/06/10 | 56312 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma -2021/06/10 | 56290 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma -2021/06/10 | 55525 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma 2021/06/10 | 5530 | systems/win32/miktex/tm/packages/minim__source.tar.lzma 2021/06/10 | 548 | systems/texlive/tlnet/archive/collection-metapost.r59531.tar.xz -2021/06/10 | 532271 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma 2021/06/10 | 52682 | graphics/pictex-addons/autoarea.zip -2021/06/10 | 52544 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma -2021/06/10 | 52441 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma 2021/06/10 | 5214 | systems/win32/miktex/tm/packages/minim-math__source.tar.lzma -2021/06/10 | 51742 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma -2021/06/10 | 51458 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma -2021/06/10 | 51291 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma -2021/06/10 | 512668 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma -2021/06/10 | 51118 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma -2021/06/10 | 51090 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma -2021/06/10 | 50032 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma -2021/06/10 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2021/06/10 | 50083384 | systems/win32/w32tex/ltxpkgs.tar.xz 2021/06/10 | 487068 | systems/texlive/tlnet/archive/latexmk.doc.r59535.tar.xz -2021/06/10 | 482838 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma -2021/06/10 | 48240 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma -2021/06/10 | 476901 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma 2021/06/10 | 4730 | macros/latex/contrib/semantex/stripsemantex.sty -2021/06/10 | 46724 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma -2021/06/10 | 46494 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma -2021/06/10 | 461825 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma -2021/06/10 | 45940 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma -2021/06/10 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc -2021/06/10 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc -2021/06/10 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc -2021/06/10 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc -2021/06/10 | 45317 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma -2021/06/10 | 44612 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma -2021/06/10 | 43357 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma -2021/06/10 | 43061 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma -2021/06/10 | 430200 | macros/latex/contrib/semantex.zip -2021/06/10 | 42981 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma -2021/06/10 | 42888 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma -2021/06/10 | 42729 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma -2021/06/10 | 42376 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma +2021/06/10 | 45555608 | systems/win32/w32tex/web2c-w32.tar.xz 2021/06/10 | 41830 | systems/win32/miktex/tm/packages/pictex.tar.lzma -2021/06/10 | 41189 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma -2021/06/10 | 40343 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma -2021/06/10 | 397492 | systems/texlive/tlnet/archive/texlive-scripts.doc.r59528.tar.xz 2021/06/10 | 39492 | macros/xetex/generic/xetexko/hanjaexa_hangul.tab -2021/06/10 | 392698 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma -2021/06/10 | 39019 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma -2021/06/10 | 38170 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma -2021/06/10 | 37865 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma 2021/06/10 | 3783 | macros/luatex/generic/luatexko/luatexko-uhc2utf8.lua 2021/06/10 | 375420 | macros/luatex/generic/luatexko.zip -2021/06/10 | 37365 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma -2021/06/10 | 37230 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma 2021/06/10 | 3720 | macros/luatex/generic/luatexko/README -2021/06/10 | 371132 | macros/latex/contrib/semantex/semantex.pdf -2021/06/10 | 36606 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma +2021/06/10 | 370872 | macros/latex/contrib/semantex/semantex.pdf 2021/06/10 | 35829 | macros/luatex/generic/luatexko/luatexko-doc.tex -2021/06/10 | 35700 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma -2021/06/10 | 356904 | macros/latex/contrib/easybook.zip 2021/06/10 | 35217 | macros/xetex/generic/xetexko/xetexko-doc.tex -2021/06/10 | 35071 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma 2021/06/10 | 347913 | macros/latex/contrib/cooking-units/cooking-units.dtx 2021/06/10 | 3471 | macros/xetex/generic/xetexko/README -2021/06/10 | 34651 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma -2021/06/10 | 345324 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma 2021/06/10 | 344 | systems/texlive/tlnet/archive/texlive-common.r59528.tar.xz 2021/06/10 | 338396 | macros/luatex/generic/luatexko/luatexko-doc.pdf -2021/06/10 | 33623 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma -2021/06/10 | 33602 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma +2021/06/10 | 33493 | macros/latex/contrib/ltx4yt/docs/ltx4yt-man.tex 2021/06/10 | 334034 | macros/xetex/generic/xetexko.zip 2021/06/10 | 33260 | systems/win32/miktex/tm/packages/minim-math.tar.lzma 2021/06/10 | 33168 | systems/texlive/tlnet/archive/minim-math.r59537.tar.xz -2021/06/10 | 330438 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma 2021/06/10 | 32792 | macros/luatex/generic/luatexko/luatexko.sty -2021/06/10 | 32599 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma -2021/06/10 | 324334 | macros/latex/contrib/easybook/easybook.pdf -2021/06/10 | 324049 | systems/win32/miktex/tm/packages/easybook__doc.tar.lzma -2021/06/10 | 321645 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma -2021/06/10 | 31955 | systems/win32/miktex/tm/packages/easybook__source.tar.lzma -2021/06/10 | 31571 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma -2021/06/10 | 31549 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma -2021/06/10 | 31328 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma -2021/06/10 | 31209 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma -2021/06/10 | 311357 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma -2021/06/10 | 30807 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma 2021/06/10 | 300946 | macros/latex/contrib/semantex/semantex.sty 2021/06/10 | 3008 | macros/latex/contrib/tiscreen/doc/tiscreen-doc.tex -2021/06/10 | 30037 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma -2021/06/10 | 29835 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma -2021/06/10 | 295147 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma +2021/06/10 | 294199 | macros/latex/contrib/ltx4yt/docs/ltx4yt.pdf 2021/06/10 | 291456 | systems/texlive/tlnet/archive/biblatex-mla.doc.r59529.tar.xz -2021/06/10 | 29048 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma -2021/06/10 | 284041 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma -2021/06/10 | 28286 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma -2021/06/10 | 281965 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma -2021/06/10 | 28164 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma -2021/06/10 | 2793680 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma +2021/06/10 | 28888 | macros/latex/contrib/ltx4yt/ltx4yt.dtx 2021/06/10 | 277616 | systems/win32/miktex/tm/packages/biblatex-mla__doc.tar.lzma -2021/06/10 | 27711 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma 2021/06/10 | 27364 | systems/texlive/tlnet/archive/minim-hatching.doc.r59531.tar.xz 2021/06/10 | 2728 | macros/latex/contrib/ffcode/ffcode.tex -2021/06/10 | 27268 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma -2021/06/10 | 27260 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma -2021/06/10 | 27187 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma 2021/06/10 | 27124 | systems/texlive/tlnet/archive/biblatex-ext.r59532.tar.xz -2021/06/10 | 2670403 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma 2021/06/10 | 265976 | systems/texlive/tlnet/archive/minim.doc.r59536.tar.xz 2021/06/10 | 262138 | systems/win32/miktex/tm/packages/minim__doc.tar.lzma -2021/06/10 | 261910 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma 2021/06/10 | 26143 | systems/win32/miktex/tm/packages/minim-hatching__doc.tar.lzma 2021/06/10 | 25983 | systems/win32/miktex/tm/packages/jfmutil.tar.lzma -2021/06/10 | 258840 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma 2021/06/10 | 25768 | systems/texlive/tlnet/archive/jfmutil.r59530.tar.xz -2021/06/10 | 25584682 | systems/texlive/tlnet/install-tl.zip 2021/06/10 | 254038 | macros/xetex/generic/xetexko/xetexko-doc.pdf -2021/06/10 | 25268 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma -2021/06/10 | 250392 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma -2021/06/10 | 25008 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma -2021/06/10 | 24987 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma 2021/06/10 | 2456 | systems/win32/miktex/tm/packages/minim-hatching.tar.lzma -2021/06/10 | 243393 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma +2021/06/10 | 244848 | macros/latex/contrib/ltx4yt/docs/ltx4yt-man.pdf 2021/06/10 | 2421343 | systems/win32/miktex/tm/packages/siunitx__doc.tar.lzma 2021/06/10 | 2417948 | systems/texlive/tlnet/archive/siunitx.doc.r59534.tar.xz -2021/06/10 | 239581 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma 2021/06/10 | 2392 | systems/win32/miktex/tm/packages/minim-hatching__source.tar.lzma -2021/06/10 | 23883 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma -2021/06/10 | 23369 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma -2021/06/10 | 2311828 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz 2021/06/10 | 2240 | systems/texlive/tlnet/archive/minim-hatching.r59531.tar.xz -2021/06/10 | 22025 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma 2021/06/10 | 21931 | systems/win32/miktex/tm/packages/minim.tar.lzma -2021/06/10 | 218110 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma -2021/06/10 | 218093 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma 2021/06/10 | 21692 | systems/texlive/tlnet/archive/minim.r59536.tar.xz -2021/06/10 | 215199 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma -2021/06/10 | 21179 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma -2021/06/10 | 20808988 | systems/texlive/tlnet/install-tl-windows.exe -2021/06/10 | 207852 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma -2021/06/10 | 206345 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma 2021/06/10 | 2037 | macros/latex/contrib/ffcode/ffcode.sty -2021/06/10 | 202704 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma -2021/06/10 | 20125 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma -2021/06/10 | 2005874 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma -2021/06/10 | 199639 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma -2021/06/10 | 198228 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma -2021/06/10 | 197091 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma -2021/06/10 | 195755 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma -2021/06/10 | 194081 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma 2021/06/10 | 19084 | systems/win32/miktex/tm/packages/biblatex-mla.tar.lzma 2021/06/10 | 18908 | systems/texlive/tlnet/archive/biblatex-mla.r59529.tar.xz -2021/06/10 | 18169 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma 2021/06/10 | 1812 | macros/xetex/generic/xetexko/hanjacom_hangul.tab -2021/06/10 | 180189 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma -2021/06/10 | 180078 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma -2021/06/10 | 17983 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma 2021/06/10 | 1781 | macros/latex/contrib/tiscreen/tex/tiscreen.sty -2021/06/10 | 176702 | macros/latex/contrib/semantex/semantex.tex -2021/06/10 | 17279136 | systems/texlive/tlnet/tlpkg/texlive.tlpdb -2021/06/10 | 1708081 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma -2021/06/10 | 169103 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma +2021/06/10 | 176678 | macros/latex/contrib/semantex/semantex.tex 2021/06/10 | 1660 | macros/latex/contrib/semantex/README.md 2021/06/10 | 1655 | macros/latex/contrib/cooking-units/cooking-units.ins -2021/06/10 | 16447 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma -2021/06/10 | 163765 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma -2021/06/10 | 16342 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma 2021/06/10 | 15986 | systems/win32/miktex/tm/packages/biblatex-mla__source.tar.lzma -2021/06/10 | 159548 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma -2021/06/10 | 154626 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma -2021/06/10 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 -2021/06/10 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 -2021/06/10 | 152167 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma 2021/06/10 | 1482 | macros/latex/contrib/cooking-units/README.md -2021/06/10 | 147714 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma -2021/06/10 | 147408 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma -2021/06/10 | 14690 | systems/win32/miktex/tm/packages/easybook.tar.lzma -2021/06/10 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 2021/06/10 | 14504 | systems/win32/miktex/tm/packages/minim-pdf.tar.lzma -2021/06/10 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 -2021/06/10 | 14346 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma -2021/06/10 | 1429094 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma 2021/06/10 | 14280 | systems/texlive/tlnet/archive/minim-pdf.r59539.tar.xz -2021/06/10 | 1423060 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma 2021/06/10 | 13879 | systems/win32/miktex/tm/packages/minim-mp.tar.lzma -2021/06/10 | 136506 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma 2021/06/10 | 13608 | systems/texlive/tlnet/archive/minim-mp.r59538.tar.xz -2021/06/10 | 134797 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma -2021/06/10 | 13448 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma -2021/06/10 | 131581 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma -2021/06/10 | 130951 | macros/latex/contrib/easybook/easybook.dtx -2021/06/10 | 1308120 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma -2021/06/10 | 1300403 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma -2021/06/10 | 1294239 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma -2021/06/10 | 1291070 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma -2021/06/10 | 1290563 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma 2021/06/10 | 127291 | macros/latex/contrib/tiscreen.zip 2021/06/10 | 125412 | macros/xetex/generic/xetexko/hanja_hangul.tab 2021/06/10 | 125338 | macros/latex/contrib/tiscreen/doc/tiscreen-doc.pdf -2021/06/10 | 124618 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma 2021/06/10 | 1245 | systems/win32/miktex/tm/packages/pictex__source.tar.lzma -2021/06/10 | 1203772 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma -2021/06/10 | 1203560 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma -2021/06/10 | 117481 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma -2021/06/10 | 1170761 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma -2021/06/10 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini -2021/06/10 | 115121 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma 2021/06/10 | 1150 | macros/latex/contrib/ffcode/README.md 2021/06/10 | 1136553 | graphics/pictex.zip -2021/06/10 | 112815 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma -2021/06/10 | 112168 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma 2021/06/10 | 110754 | macros/latex/contrib/ffcode.zip -2021/06/10 | 108937 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma -2021/06/10 | 108012 | systems/texlive/tlnet/archive/texlive-scripts.r59528.tar.xz -2021/06/10 | 1076119 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma 2021/06/10 | 107272 | macros/latex/contrib/ffcode/ffcode.pdf 2021/06/10 | 10701 | systems/win32/miktex/tm/packages/hvfloat.tar.lzma -2021/06/10 | 106859 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma 2021/06/10 | 10540 | systems/texlive/tlnet/archive/hvfloat.r59533.tar.xz 2021/06/10 | 105007 | systems/win32/miktex/tm/packages/siunitx__source.tar.lzma 2021/06/10 | 104820 | systems/texlive/tlnet/archive/siunitx.source.r59534.tar.xz 2021/06/10 | 103612 | systems/texlive/tlnet/archive/minim-pdf.doc.r59539.tar.xz -2021/06/10 | 103519 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma -2021/06/10 | 103439 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma -2021/06/10 | 100462 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma 2021/06/09 | 99972346 | systems/win32/w32tex/TLW64/tl-win64.zip 2021/06/09 | 98075 | macros/luatex/generic/minim-mp.zip 2021/06/09 | 97866 | macros/latex/contrib/siunitx/siunitx-unit.dtx @@ -317,7 +414,7 @@ 2021/06/09 | 94160 | systems/win32/miktex/tm/packages/latexmk.tar.lzma 2021/06/09 | 8762 | macros/latex/contrib/siunitx/siunitx-command.dtx 2021/06/09 | 8726 | macros/latex/contrib/siunitx/siunitx-symbol.dtx -2021/06/09 | 843139 | systems/win32/w32tex/ChangeLog +2021/06/09 | 843302 | systems/win32/w32tex/ChangeLog 2021/06/09 | 833160 | systems/win32/miktex/tm/packages/biblatex-ext__doc.tar.lzma 2021/06/09 | 82287 | macros/luatex/generic/minim-mp/minim-mp.pdf 2021/06/09 | 809360 | systems/win32/w32tex/win64/dvipdfm-w64.tar.xz @@ -328,18 +425,17 @@ 2021/06/09 | 7075 | systems/win32/miktex/tm/packages/keyfloat.tar.lzma 2021/06/09 | 6820 | systems/texlive/tlnet/archive/keyfloat.r59523.tar.xz 2021/06/09 | 6801328 | systems/win32/w32tex/ptex-ng-w32.tar.xz -2021/06/09 | 63893120 | systems/win32/w32tex/biblatex-biber.tar.xz 2021/06/09 | 6380 | macros/luatex/generic/minim/minim-callbacks.lua 2021/06/09 | 6370 | systems/win32/miktex/tm/packages/xintsession.tar.lzma 2021/06/09 | 634773 | macros/latex/contrib/siunitx/siunitx.pdf 2021/06/09 | 6312 | macros/luatex/generic/minim/minim-doc.sty +2021/06/09 | 62906868 | systems/win32/w32tex/biblatex-biber.tar.xz 2021/06/09 | 62127 | graphics/minim-hatching/minim-hatching-doc.pdf 2021/06/09 | 61507 | macros/luatex/generic/minim-xmp/minim-xmp.pdf 2021/06/09 | 6124 | systems/texlive/tlnet/archive/xintsession.r59524.tar.xz 2021/06/09 | 61005 | macros/latex/contrib/hvfloat/latex/hvfloat.sty 2021/06/09 | 5828 | systems/win32/miktex/tm/packages/csvsimple.tar.lzma 2021/06/09 | 5576 | systems/texlive/tlnet/archive/csvsimple.r59521.tar.xz -2021/06/09 | 50086912 | systems/win32/w32tex/ltxpkgs.tar.xz 2021/06/09 | 49496364 | systems/win32/w32tex/xetex-w32.tar.xz 2021/06/09 | 48536 | macros/latex/contrib/siunitx/siunitx-table.dtx 2021/06/09 | 475888 | macros/latex/contrib/siunitx/siunitx-table.pdf @@ -347,7 +443,6 @@ 2021/06/09 | 471 | macros/generic/wichura-table/README.txt 2021/06/09 | 4667188 | systems/win32/w32tex/dvipdfm-w32.tar.xz 2021/06/09 | 4629 | macros/latex/contrib/siunitx/siunitx-locale.dtx -2021/06/09 | 45562216 | systems/win32/w32tex/web2c-w32.tar.xz 2021/06/09 | 4241 | graphics/minim-hatching/minim-hatching-doc.mp 2021/06/09 | 42090 | macros/latex/contrib/siunitx/CHANGELOG.md 2021/06/09 | 39616 | macros/luatex/generic/minim-pdf/minim-pdf.lua @@ -509,7 +604,6 @@ 2021/06/08 | 5586 | macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-pict2e.sty 2021/06/08 | 5533 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-common.bbx 2021/06/08 | 5504 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.cbx -2021/06/08 | 5456 | macros/latex/contrib/keyfloat/images/image.pdf 2021/06/08 | 5336 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.cbx 2021/06/08 | 5324 | systems/texlive/tlnet/archive/ran_toks.r59515.tar.xz 2021/06/08 | 524452 | systems/texlive/tlnet/archive/ran_toks.doc.r59515.tar.xz @@ -522,7 +616,6 @@ 2021/06/08 | 4757 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.cbx 2021/06/08 | 4748 | systems/texlive/tlnet/archive/mathcommand.r59512.tar.xz 2021/06/08 | 4748 | macros/latex/contrib/biblatex-contrib/biblatex-mla/mla.bbx -2021/06/08 | 4700 | macros/latex/contrib/keyfloat/images/image2.pdf 2021/06/08 | 4697 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.cbx 2021/06/08 | 465328 | support/latexmk.zip 2021/06/08 | 4614565 | systems/win32/miktex/tm/packages/musixtex-fonts.tar.lzma @@ -584,7 +677,6 @@ 2021/06/08 | 20271 | macros/luatex/generic/minim-pdf/minim-pdf.doc 2021/06/08 | 1968 | macros/latex/contrib/easybook/README.md 2021/06/08 | 196426 | support/latexmk/latexmk.pdf -2021/06/08 | 1960 | systems/win32/miktex/tm/packages/tiscreen__source.tar.lzma 2021/06/08 | 190152 | systems/texlive/tlnet/archive/luatexja.r59518.tar.xz 2021/06/08 | 189831 | systems/win32/miktex/tm/packages/luatexja.tar.lzma 2021/06/08 | 1848 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.cbx @@ -601,7 +693,6 @@ 2021/06/08 | 16840 | systems/texlive/tlnet/archive/pxjahyper.r59508.tar.xz 2021/06/08 | 167698 | macros/latex/contrib/biblatex-contrib/biblatex-mla/doc/biblatex-mla.pdf 2021/06/08 | 166 | macros/latex/contrib/csvsimple/catsort.xml -2021/06/08 | 1644 | macros/latex/contrib/keyfloat/keyfloat.ins 2021/06/08 | 159712 | macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.tex 2021/06/08 | 15795 | macros/latex/contrib/biblatex-contrib/biblatex-mla/CHANGES 2021/06/08 | 1553140 | systems/texlive/tlnet/archive/pythontex.doc.r59514.tar.xz @@ -612,15 +703,11 @@ 2021/06/08 | 14983 | systems/win32/miktex/tm/packages/suftesi.tar.lzma 2021/06/08 | 14765 | macros/luatex/generic/minim/minim-etex.tex 2021/06/08 | 14560 | macros/luatex/generic/minim-math/minim-math.lua -2021/06/08 | 145571 | macros/latex/contrib/keyfloat/keyfloat.dtx 2021/06/08 | 14518 | macros/luatex/generic/minim-mp/minim-mp.doc 2021/06/08 | 1402 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note-common.cbx 2021/06/08 | 1391 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-common.bbx 2021/06/08 | 1368 | graphics/pictex/prepictex.tex 2021/06/08 | 135 | macros/latex/contrib/csvsimple/encoding.xml -2021/06/08 | 135172 | systems/texlive/tlnet/archive/tiscreen.doc.r59517.tar.xz -2021/06/08 | 134402 | systems/win32/miktex/tm/packages/tiscreen__doc.tar.lzma -2021/06/08 | 1339 | systems/win32/miktex/tm/packages/tiscreen.tar.lzma 2021/06/08 | 133400 | systems/texlive/tlnet/archive/pxjahyper.doc.r59508.tar.xz 2021/06/08 | 13146 | support/latexmk/README 2021/06/08 | 131174548 | systems/win32/w32tex/web2c-lib.tar.xz @@ -639,16 +726,12 @@ 2021/06/08 | 11663 | macros/luatex/generic/minim-math/minim-math.doc 2021/06/08 | 1165 | macros/luatex/generic/minim/README 2021/06/08 | 116506 | macros/latex/contrib/biblatex-contrib/biblatex-mla/doc/examples.pdf -2021/06/08 | 1144 | macros/latex/contrib/keyfloat/README.txt -2021/06/08 | 1136 | systems/texlive/tlnet/archive/tiscreen.r59517.tar.xz 2021/06/08 | 110 | macros/latex/contrib/biblatex-contrib/biblatex-mla/mla-strict.cbx 2021/06/08 | 108 | macros/latex/contrib/biblatex-contrib/biblatex-mla/mla7.cbx 2021/06/08 | 10823 | macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-tabular.sty 2021/06/08 | 105712 | systems/win32/miktex/tm/packages/musixtex-fonts__doc.tar.lzma 2021/06/08 | 105336 | systems/texlive/tlnet/archive/musixtex-fonts.doc.r59507.tar.xz 2021/06/08 | 1046598 | systems/win32/miktex/tm/packages/suftesi__doc.tar.lzma -2021/06/08 | 1041110 | macros/latex/contrib/keyfloat.zip -2021/06/08 | 1012669 | macros/latex/contrib/keyfloat/keyfloat.pdf 2021/06/07 | 979067 | macros/latex/contrib/pythontex/pythontex.pdf 2021/06/07 | 9765 | macros/luatex/generic/luatexja/src/addons/luatexja-ruby.sty 2021/06/07 | 9604 | language/bengali/bangla/bangla.sty @@ -1930,200 +2013,3 @@ 2021/06/05 | 101085 | macros/latex/contrib/eq-pin2corr/doc/eq-pin2corr.pdf 2021/06/05 | 10105 | macros/latex-dev/base/webcomp.err 2021/06/05 | 100972 | graphics/mcf2graph/mcf_data_base.mcf -2021/06/04 | 990 | fonts/fontawesome5/README.md -2021/06/04 | 980 | fonts/fontawesome5/tex/ufontawesomefree3.fd -2021/06/04 | 980 | fonts/fontawesome5/tex/ufontawesomefree2.fd -2021/06/04 | 980 | fonts/fontawesome5/tex/ufontawesomefree1.fd -2021/06/04 | 980 | fonts/fontawesome5/tex/ufontawesomefree0.fd -2021/06/04 | 966920 | systems/texlive/tlnet/archive/newtx.doc.r59446.tar.xz -2021/06/04 | 90221 | macros/latex/contrib/bjfuthesis/example/figures/admin-movie.png -2021/06/04 | 8804 | systems/texlive/tlnet/archive/lua-typo.r59457.tar.xz -2021/06/04 | 877313 | systems/win32/miktex/tm/packages/tex4ht.tar.lzma -2021/06/04 | 876418 | language/japanese/platex/pldoc.pdf -2021/06/04 | 861 | language/japanese/platex/pl209.ins -2021/06/04 | 8604 | systems/texlive/tlnet/archive/derivative.r59453.tar.xz -2021/06/04 | 8540 | macros/latex/contrib/kdpbook/images/volume-1.pdf -2021/06/04 | 8363 | language/japanese/platex/plnewsc14.tex -2021/06/04 | 825261 | systems/win32/miktex/tm/packages/uplatex.tar.lzma -2021/06/04 | 796388 | systems/texlive/tlnet/archive/optex.r59458.tar.xz -2021/06/04 | 7818 | language/japanese/platex/plnewsc01.tex -2021/06/04 | 77894 | macros/latex/contrib/todonotes/todonotes.dtx -2021/06/04 | 776324 | systems/texlive/tlnet/archive/uplatex.doc.r59450.tar.xz -2021/06/04 | 762 | macros/latex/contrib/todonotes/examples/externalize.tex -2021/06/04 | 7614 | language/japanese/platex/pl209.dtx -2021/06/04 | 745088 | fonts/fontawesome5/doc/fontawesome5.pdf -2021/06/04 | 7431 | fonts/fontawesome5/tex/fontawesome5.sty -2021/06/04 | 7256 | macros/latex/contrib/kdpbook/images/signature.pdf -2021/06/04 | 718715 | macros/latex/contrib/bjfuthesis/example/figures/anonymous-index.png -2021/06/04 | 717008 | macros/latex/contrib/bjfuthesis/example/figures/anonymous-category.png -2021/06/04 | 7156 | macros/latex/contrib/kdpbook/images/volume-3.pdf -2021/06/04 | 71447 | language/japanese/platex/platex.dtx -2021/06/04 | 6995 | language/japanese/platex/jltxdoc.dtx -2021/06/04 | 697 | language/japanese/platex/platexrelease.ins -2021/06/04 | 6723 | macros/latex/contrib/kdpbook/images/volume-4.pdf -2021/06/04 | 6717 | language/japanese/platex/plnewsc06.tex -2021/06/04 | 668 | macros/latex/contrib/todonotes/examples/saveColorByUsingLayers.tex -2021/06/04 | 66197 | macros/latex/contrib/todonotes/examples/alterAppearenceOfListOfTodos.pdf -2021/06/04 | 6562387 | systems/win32/miktex/tm/packages/newtx.tar.lzma -2021/06/04 | 6504 | macros/latex/contrib/kdpbook/images/volume-2.pdf -2021/06/04 | 6351 | macros/latex/contrib/acrotex/README.md -2021/06/04 | 6088 | systems/texlive/tlnet/archive/ocgx2.doc.r59455.tar.xz -2021/06/04 | 6069 | language/japanese/platex/plnews06.tex -2021/06/04 | 58496 | fonts/fontawesome5/type1/FontAwesome5Free-Regular.pfb -2021/06/04 | 572 | macros/unicodetex/latex/einfart/README.md -2021/06/04 | 570771 | macros/latex/contrib/profcollege/latex/ProfCollege.sty -2021/06/04 | 569 | macros/unicodetex/latex/simplivre/README.md -2021/06/04 | 565 | language/japanese/platex/pldocs.ins -2021/06/04 | 5604400 | systems/texlive/tlnet/archive/newtx.r59446.tar.xz -2021/06/04 | 554 | macros/unicodetex/latex/lebhart/README.md -2021/06/04 | 552 | macros/unicodetex/latex/beaulivre/README.md -2021/06/04 | 55124 | fonts/fontawesome5/opentype/FontAwesome5Free-Regular-400.otf -2021/06/04 | 5492 | language/japanese/platex/Makefile -2021/06/04 | 545702 | macros/latex/contrib/bjfuthesis/example/figures/anonymous-details.png -2021/06/04 | 54376 | language/japanese/platex/plext.dtx -2021/06/04 | 543494 | macros/latex/contrib/acrotex/doc/aeb_man.tex -2021/06/04 | 5272 | fonts/fontawesome5/tex/fontawesome5-utex-helper.sty -2021/06/04 | 516 | systems/texlive/tlnet/archive/dtk-bibliography.r59447.tar.xz -2021/06/04 | 5163 | language/japanese/platex/plnewsc04.tex -2021/06/04 | 512 | systems/texlive/tlnet/archive/tex-nutshell.r59448.tar.xz -2021/06/04 | 508974 | macros/latex/contrib/bjfuthesis/example/figures/general-details.png -2021/06/04 | 50744 | systems/texlive/tlnet/archive/uplatex.source.r59450.tar.xz -2021/06/04 | 503116 | systems/win32/miktex/tm/packages/expkv.tar.lzma -2021/06/04 | 497831 | macros/latex/contrib/acrotex/examples/webeqtst.pdf -2021/06/04 | 487115 | macros/latex/contrib/bjfuthesis/example/figures/anonymous-search.png -2021/06/04 | 4760 | systems/texlive/tlnet/archive/expkv.r59452.tar.xz -2021/06/04 | 470104 | systems/texlive/tlnet/archive/expkv.doc.r59452.tar.xz -2021/06/04 | 4685 | language/japanese/platex/plnews02.tex -2021/06/04 | 467974 | macros/latex/contrib/todonotes.zip -2021/06/04 | 4618 | macros/latex/contrib/kdpbook/kdpcover.cls -2021/06/04 | 4606 | language/japanese/platex/plnewsc15.tex -2021/06/04 | 4490 | fonts/fontawesome5/doc/fulllist.tex -2021/06/04 | 4488 | systems/texlive/tlnet/archive/expkv-cs.r59451.tar.xz -2021/06/04 | 42908 | systems/texlive/tlnet/archive/tuda-ci.r59456.tar.xz -2021/06/04 | 4153 | language/japanese/platex/plnewsc08.tex -2021/06/04 | 414908 | systems/win32/miktex/tm/packages/dtk-bibliography.tar.lzma -2021/06/04 | 412992 | systems/texlive/tlnet/archive/dtk-bibliography.doc.r59447.tar.xz -2021/06/04 | 4047 | language/japanese/platex/plexpl3.dtx -2021/06/04 | 3949742 | macros/latex/contrib/acrotex.zip -2021/06/04 | 3877 | language/japanese/platex/plnews08.tex -2021/06/04 | 3835 | fonts/fontawesome5/doc/fontawesome5.tex -2021/06/04 | 382656 | macros/latex/contrib/bjfuthesis/example/figures/admin-knowledge-graph.png -2021/06/04 | 3796 | language/japanese/platex/plnewsc05.tex -2021/06/04 | 3778 | language/japanese/platex/plnews07.tex -2021/06/04 | 376907 | systems/win32/miktex/tm/packages/expkv-cs.tar.lzma -2021/06/04 | 3754 | language/japanese/platex/plnewsc16.tex -2021/06/04 | 3713 | language/japanese/platex/plnewsc02.tex -2021/06/04 | 358366 | macros/latex/contrib/acrotex/examples/jquiztst.pdf -2021/06/04 | 3553 | macros/latex/contrib/projlib/README.md -2021/06/04 | 353196 | systems/texlive/tlnet/archive/expkv-cs.doc.r59451.tar.xz -2021/06/04 | 3484 | language/japanese/platex/plnewsc11.tex -2021/06/04 | 3390 | macros/latex/contrib/kdpbook/kdpcover.tex -2021/06/04 | 336972 | macros/latex/contrib/todonotes/todonotes.pdf -2021/06/04 | 3321 | language/japanese/platex/plnewsc03.tex -2021/06/04 | 322528 | systems/texlive/tlnet/archive/pxchfon.doc.r59449.tar.xz -2021/06/04 | 320578 | macros/latex/contrib/acrotex/examples/jtxttst.pdf -2021/06/04 | 3197 | language/japanese/platex/plnewsc13.tex -2021/06/04 | 3194 | language/japanese/platex/plnews.cls -2021/06/04 | 3083 | fonts/fontawesome5/enc/fa5free0.enc -2021/06/04 | 3042 | fonts/fontawesome5/enc/fa5free1.enc -2021/06/04 | 303000 | fonts/fontawesome5/opentype/FontAwesome5Free-Solid-900.otf -2021/06/04 | 2999 | language/japanese/platex/plnewsc09.tex -2021/06/04 | 295383 | fonts/fontawesome5/type1/FontAwesome5Free-Solid.pfb -2021/06/04 | 2948 | language/japanese/platex/plnewsc10.tex -2021/06/04 | 293686 | macros/latex/contrib/bjfuthesis/example/figures/admin-navigation.png -2021/06/04 | 2931 | language/japanese/platex/plnews04.tex -2021/06/04 | 29246 | macros/latex/contrib/todonotes/examples/externalize.pdf -2021/06/04 | 2920 | fonts/fontawesome5/enc/fa5brands0.enc -2021/06/04 | 2906 | fonts/fontawesome5/enc/fa5free2.enc -2021/06/04 | 2905 | fonts/fontawesome5/enc/fa5free3.enc -2021/06/04 | 29034 | macros/latex/contrib/profcollege/latex/PfCEquationSoustraction2.tex -2021/06/04 | 285872 | systems/texlive/tlnet/archive/tex-nutshell.doc.r59448.tar.xz -2021/06/04 | 2784308 | macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf -2021/06/04 | 2763 | language/japanese/platex/plnews03.tex -2021/06/04 | 27036 | systems/texlive/tlnet/archive/expkv.source.r59452.tar.xz -2021/06/04 | 26848 | macros/latex/contrib/todonotes/examples/saveColorByUsingLayers.pdf -2021/06/04 | 2612 | fonts/fontawesome5/enc/fa5brands1.enc -2021/06/04 | 253 | language/japanese/platex/platex.ini -2021/06/04 | 253604 | language/japanese/platex/platex.pdf -2021/06/04 | 2421 | language/japanese/platex/plnewsc12.tex -2021/06/04 | 23766 | macros/latex/contrib/profcollege/latex/PfCEquationComposition2.tex -2021/06/04 | 23253 | language/japanese/platex/plvers.dtx -2021/06/04 | 2313 | language/japanese/platex/plnews05.tex -2021/06/04 | 23085 | macros/latex/contrib/profcollege/latex/PfCEquationTerme1.tex -2021/06/04 | 22768 | systems/texlive/tlnet/archive/lua-typo.source.r59457.tar.xz -2021/06/04 | 226031 | macros/latex/contrib/projlib/ProjLib-doc-cn.pdf -2021/06/04 | 2259587 | macros/latex/contrib/acrotex/doc/aeb_man.pdf -2021/06/04 | 2248888 | systems/texlive/tlnet/archive/circuit-macros.doc.r59444.tar.xz -2021/06/04 | 2200754 | systems/win32/miktex/tm/packages/optex.tar.lzma -2021/06/04 | 21877 | macros/latex/contrib/projlib/ProjLib-doc-en.tex -2021/06/04 | 214628 | systems/texlive/tlnet/archive/lua-typo.doc.r59457.tar.xz -2021/06/04 | 21078 | macros/latex/contrib/profcollege/latex/PfCEquationPose1.tex -2021/06/04 | 20678 | macros/latex/contrib/projlib/ProjLib-doc-cn.tex -2021/06/04 | 206554 | language/japanese/platex/plfonts.dtx -2021/06/04 | 205247 | systems/win32/miktex/tm/packages/derivative.tar.lzma -2021/06/04 | 203772 | fonts/fontawesome5/type1/FontAwesome5Brands-Regular.pfb -2021/06/04 | 2034 | language/japanese/platex/README.md -2021/06/04 | 19959 | macros/latex/contrib/profcollege/latex/PfCEquationLaurent1.tex -2021/06/04 | 19936 | systems/texlive/tlnet/archive/pxchfon.r59449.tar.xz -2021/06/04 | 19845 | systems/win32/miktex/tm/packages/ocgx2.tar.lzma -2021/06/04 | 1979 | macros/latex/contrib/todonotes/todonotes.ins -2021/06/04 | 197272 | macros/latex/contrib/acrotex/doc/eformman.tex -2021/06/04 | 196092 | systems/texlive/tlnet/archive/derivative.doc.r59453.tar.xz -2021/06/04 | 18820 | systems/texlive/tlnet/archive/expkv-cs.source.r59451.tar.xz -2021/06/04 | 1878 | fonts/fontawesome5/tex/fontawesome5.lua -2021/06/04 | 183060 | fonts/fontawesome5/opentype/FontAwesome5Brands-Regular-400.otf -2021/06/04 | 1828838 | install/language/japanese/platex.tds.zip -2021/06/04 | 1796 | fonts/fontawesome5/tex/fontawesome5-generic-helper.sty -2021/06/04 | 17567 | language/japanese/platex/platexrelease.dtx -2021/06/04 | 1724 | macros/latex/contrib/kdpbook/README.md -2021/06/04 | 1703973 | language/japanese/platex.zip -2021/06/04 | 1685003 | fonts/fontawesome5.zip -2021/06/04 | 1684520 | macros/latex/contrib/profcollege/doc/ProfCollege-doc.zip -2021/06/04 | 1631 | macros/latex/contrib/todonotes/README -2021/06/04 | 158330 | language/japanese/platex/jclasses.dtx -2021/06/04 | 1553 | language/japanese/platex/LICENSE -2021/06/04 | 15317 | macros/latex/contrib/profcollege/latex/PfCEquationSymbole1.tex -2021/06/04 | 149 | macros/latex/contrib/kdpbook/DEPENDS.txt -2021/06/04 | 1496 | systems/texlive/tlnet/archive/circuit-macros.r59444.tar.xz -2021/06/04 | 1488 | language/japanese/platex/plcls.ins -2021/06/04 | 14828 | systems/texlive/tlnet/archive/uplatex.r59450.tar.xz -2021/06/04 | 148274 | language/japanese/platex/platex-en.pdf -2021/06/04 | 14820 | systems/texlive/tlnet/archive/ocgx2.r59455.tar.xz -2021/06/04 | 142661 | macros/latex/contrib/projlib/ProjLib-doc-en.pdf -2021/06/04 | 1418780 | systems/texlive/tlnet/archive/optex.doc.r59458.tar.xz -2021/06/04 | 13987 | macros/latex/contrib/acrotex/examples/webeqtst.tex -2021/06/04 | 1380 | fonts/fontawesome5/tfm/fa5brands0.tfm -2021/06/04 | 137664 | language/japanese/platex/exppl2e.pdf -2021/06/04 | 13656 | language/japanese/platex/exppl2e.sty -2021/06/04 | 1361 | fonts/fontawesome5/tex/tufontawesomepro.fd -2021/06/04 | 135101 | macros/latex/contrib/kdpbook.zip -2021/06/04 | 1340 | fonts/fontawesome5/tfm/fa5free2solid.tfm -2021/06/04 | 1328 | fonts/fontawesome5/tfm/fa5free0solid.tfm -2021/06/04 | 1316 | fonts/fontawesome5/tfm/fa5free1solid.tfm -2021/06/04 | 1252 | macros/latex/contrib/minimalist/README.md -2021/06/04 | 1252 | fonts/fontawesome5/tex/tufontawesomebrands.fd -2021/06/04 | 1236 | fonts/fontawesome5/tfm/fa5free3solid.tfm -2021/06/04 | 1208 | macros/latex/contrib/colorist/README.md -2021/06/04 | 1206 | fonts/fontawesome5/tex/ufontawesomebrands1.fd -2021/06/04 | 1206 | fonts/fontawesome5/tex/ufontawesomebrands0.fd -2021/06/04 | 1204 | fonts/fontawesome5/tfm/fa5free1regular.tfm -2021/06/04 | 1191 | language/japanese/platex/plfmt.ins -2021/06/04 | 118624 | language/japanese/platex/plcore.dtx -2021/06/04 | 1164175 | systems/win32/miktex/tm/packages/tuda-ci.tar.lzma -2021/06/04 | 1144 | fonts/fontawesome5/tfm/fa5brands1.tfm -2021/06/04 | 1132 | fonts/fontawesome5/tfm/fa5free0regular.tfm -2021/06/04 | 1121940 | systems/texlive/tlnet/archive/tuda-ci.doc.r59456.tar.xz -2021/06/04 | 1108 | fonts/fontawesome5/tfm/fa5free2regular.tfm -2021/06/04 | 1082 | fonts/fontawesome5/map/fontawesome5.map -2021/06/04 | 1080 | fonts/fontawesome5/tfm/fa5free3regular.tfm -2021/06/04 | 107888 | fonts/fontawesome5/tex/fontawesome5-mapping.def -2021/06/04 | 107850 | language/japanese/platex/platexrelease.pdf -2021/06/04 | 1075 | fonts/fontawesome5/tex/tufontawesomefree.fd -2021/06/04 | 104845 | macros/latex/contrib/kdpbook/kdpcover.pdf -2021/06/04 | 10430 | language/japanese/platex/plnewsc07.tex -2021/06/04 | 10426 | language/japanese/platex/plnews01.tex -2021/06/04 | 10369920 | systems/win32/w32tex/newtxpx-boondoxfonts.tar.xz -2021/06/04 | 10363 | macros/latex/contrib/acrotex/examples/jquiztst.tex -2021/06/04 | 1034 | macros/latex/contrib/todonotes/examples/alterAppearenceOfListOfTodos.tex -2021/06/04 | 10168 | language/japanese/platex/kinsoku.dtx -2021/06/04 | 1000084 | macros/latex/contrib/acrotex/doc/eformman.pdf diff --git a/language/marathi/LICENSE.md b/language/marathi/LICENSE.md new file mode 100644 index 0000000000..b6e4c1fd62 --- /dev/null +++ b/language/marathi/LICENSE.md @@ -0,0 +1,207 @@ +--- +आलोक नित्यमुक्त परवाना +--- + +पहिली आवृत्ती (९ नोव्हेंबर, २०२०) + +© २०२१ आलोक मराठी नियतकालिक + +ह्या परवान्याची नवीनतम अधिकृत प्रत पुढील दुव्यावर उपलब्ध आहे. + +[https://varnamudra.com/aalok/nityamukta-parwana/](https://varnamudra.com/aalok/nityamukta-parwana/) + +ह्या परवान्याच्या प्रतीचे वितरण मुक्त आहे, परंतु त्यात परस्पर बदल करण्याची परवानगी +नाही. परवान्यातील मजकुरासंदर्भात कोणत्याही तक्रारी, सूचना अथवा सल्ले असल्यास आलोक नित्यमुक्त +परवान्याच्या गिट-पृष्ठावर त्यांची नोंद करावी. गिट-पृष्ठाच्या तक्रारींचे पान पुढील दुव्यावर +सापडेल. + +[https://gitlab.com/aalok/nityamukta-parwana/-/issues](https://gitlab.com/aalok/nityamukta-parwana/-/issues) + +--- +प्रस्तावना +--- + +आलोक नित्यमुक्त परवाना हा कोणत्याही प्रतिमुद्राधिकारप्राप्त सामग्रीचे वितरण मुक्तपणे करण्यासाठी +लिहिण्यात आलेला एक परवाना आहे. ह्या परवान्यासह वितरित होणाऱ्या सामग्रीची प्रतिमुद्रा +करण्याचा व ती व्यावसायिक अथवा अव्यावसायिक, परिवर्तित अथवा यथामूल स्वरूपात वितरित +करण्याचा अधिकार प्रतधारकास प्राप्त होतो, परंतु ह्या परवान्यासह वितरित होणाऱ्या सामग्रीवर +आधारित अशी सामग्री अथवा मूळ सामग्रीत बदल करून निर्माण केलेली सामग्री वितरित करायची असेल, +तर ती ह्या परवान्यातील सर्व अटींसह वितरित करणे सक्तीचे असते. + +----------------------------------------------------- +तांत्रिक शब्द व त्यांचे अर्थ +----------------------------------------------------- + +* सामग्री - ह्या परवान्यात वापरला गेलेला सामग्री हा शब्द प्रतिमुद्राधिकार लागू असलेल्या + कोणत्याही सामग्रीला उद्देशून येतो. + +* प्रतिमुद्रा - एखाद्या सामग्रीची नक्कल म्हणजे तिची प्रतिमुद्रा. उदा. एखाद्या कागदाची + छायाप्रत अथवा त्याचे काढलेले छायाचित्र ही मूळ कागदी प्रतीची प्रतिमुद्रा होय. + +* प्रतिमुद्राधिकार - कोणत्याही सामग्रीची निर्मिती करणाऱ्या व्यक्ती/संस्थेकडे त्या सामग्रीचे + प्रतिमुद्राधिकार असतात. प्रतिमुद्राधिकार कायद्याद्वारे पुढील हक्क प्रतिमुद्राधिकारधारकास + प्राप्त होतात. + + - प्रतिमुद्राधिकारप्राप्त सामग्रीची निर्मिती प्रतिमुद्राधिकारधारकानेच केली आहे हे + वैधानिकरित्या सिद्ध करण्याचा हक्क. + - प्रतिमुद्राधिकारप्राप्त सामग्रीची पुनर्निर्मिती करण्याचा हक्क. + - प्रतिमुद्राधिकारप्राप्त सामग्रीच्या प्रतींचे वितरण करण्याचा हक्क. + + संदर्भ - [http://www.legalserviceindia.com/article/l195-Copyright-Law-in-India.html](http://www.legalserviceindia.com/article/l195-Copyright-Law-in-India.html) +* मुक्त परवाना - प्रतिमुद्राधिकारधारकास मिळणाऱ्या (वर निर्दिष्ट केलेल्या) तीन हक्कांपैकी + पहिल्या हक्काचे संरक्षण व उर्वरित दोन हक्क प्रत्येक प्रतधारकास प्रदान करणे मुक्त परवान्यांद्वारे + साधले जाते. मुक्त परवान्यासह वितरित झालेल्या सामग्रीची परिवर्तित अथवा यथामूल पुनर्निर्मिती + व तिचे व्यावसायिक अथवा अव्यावसायिक वितरण प्रत प्राप्त झालेली कोणतीही व्यक्ती करू + शकते. काही महत्त्वाचे मुद्दे. + + - मुक्त परवान्यासह प्रतिमुद्राधिकारातील पहिल्या हक्काचे पूर्ण संरक्षण होते. सामग्रीच्या + निर्मात्या/निर्मातीखेरीज अन्य कोणीच वैधानिकरित्या सामग्रीच्या निर्मितीचा दावा करू शकत + नाही, परंतु मूळ मुक्त सामग्रीत बदल केला गेला असेल, तर मात्र बदल करणाऱ्याने/करणारीने बदल + समाविष्ट असलेल्या नव्या संपूर्ण सामग्रीचा प्रतिमुद्राधिकार स्वतःकडे घेऊन मूळ सामग्रीच्या + निर्मात्या/निर्मातीचा श्रेयनिर्देश करणे बंधनकारक असते. + - मुक्त परवान्यासह वितरित होणाऱ्या सामग्रीवर प्रतिमुद्राधिकारधारक तसेच अन्य प्रतधारक शुल्क + आकारू शकतात. + - ज्या सामग्रीत परिवर्तन करण्याचा अधिकार प्रतधारकास आहे, त्याच सामग्रीस मुक्त म्हणता येते. + - ज्या सामग्रीचे व्यावसायिक वितरण करण्याचा अधिकार प्रतधारकास आहे, त्याच सामग्रीस मुक्त + म्हणता येते. + - मुक्त परवान्यासह वितरित झालेल्या सामग्रीची प्रत एखाद्या व्यक्तीकडे असेल, तरी तिचे वितरण + करण्यासाठी कोणीही त्या व्यक्तीवर बळजबरी करू शकत नाही. मुक्त असलेल्या सामग्रीचे वितरण न + करण्याचा अधिकारही प्रतधारकाकडे आहे. + - मुक्त सामग्रीवर आधारित अथवा मुक्त सामग्रीत बदल करून तयार केलेली सामग्री अमुक्त असू शकते. + मुक्ततेची अट असलेल्या परवान्यांचा एक उपवर्ग आहे, त्याबद्दल आता जाणून घेऊ. + +* नित्यमुक्त परवाना - हा मुक्त परवान्यांचाच एक उपवर्ग आहे. ह्या परवान्यांसह वितरित होणारी + सामग्री सदैव मुक्त असते. तिच्या परिवर्तित स्वरूपाचे वितरणदेखील अमुक्त अटींसह करता येऊ शकत + नाही. नित्यमुक्त सामग्रीवर आधारित अथवा नित्यमुक्त सामग्रीत बदल करून तयार केलेली सामग्री + एका नित्यमुक्त परवान्यासह वितरित करण्याचे बंधन प्रतधारकास पाळावे लागते. तसे न केल्यास तो + परवान्याचा भंग ठरतो व त्यावर कायदेशीर कारवाई होऊ शकते. आलोक हा एक नित्यमुक्त परवाना + आहे. + +* अनुरूप परवाना - एखाद्या पुनर्निर्मित अथवा परिवर्तित सामग्रीस आलोकव्यतिरिक्त जे अन्य परवाने + चालू शकतात, त्या परवान्यांस अनुरूप परवाने असे म्हटले जाते. अननुरूप परवान्यांसह पुनर्वितरण केल्याचे + आढळल्यास त्या सामग्रीचा परवाना अवैध ठरवण्याचे अधिकार आलोक नियतकालिकाकडे आहेत. + +* परिवर्तन/बदल - मूळ सामग्रीत कोणत्याही प्रकारची भर घालणे, घट करणे, तिचा अनुवाद करणे व + इतर लहानात लहान भेद हे परिवर्तन म्हणून मोजले जातील. मिळालेली प्रतिमुद्रा यथामूल वितरित न + करता तिच्यात केलेला कुठलाही बदल मूळ सामग्रीचे परिवर्तन म्हणून पाहिला जाईल. परिवर्तित + सामग्रीचे प्रतिमुद्राधिकार बदल करणाऱ्या/करणारीने स्वतःकडे घेणे नित्यमुक्त परवान्यांमध्ये आवश्यक + ठरते. असे करताना मूळ सामग्रीच्या प्रतिमुद्राधिकारधारकास श्रेयनिर्देशन करणे हेदेखील बंधनकारक + होय. + +* बीज व फलित - ज्या धारिकेत आज्ञावली लिहिली जाते, तिला बीजधारिका असे म्हटले जाते. एखाद्या + चालकासह चालवल्यास आज्ञावली नेमून दिलेले कार्य पूर्ण करते. अशा वेळी मिळणारी धारिका फलित + म्हणून ओळखली जाते. ग्नू संस्थेचे परवाने व आलोक नित्यमुक्त परवाना हे आज्ञावलीय बीज मुक्तपणे + देण्याची वितरित करण्याची सक्ती निर्मात्यावर/निर्मातीवर करतो. + +----------------------------------------------------- +कोणत्या सामग्रीस लागू? +----------------------------------------------------- + +आलोक नित्यमुक्त परवाना प्रतिमुद्राधिकारप्राप्त कोणत्याही सामग्रीस वापरला जाऊ शकतो, परंतु +ते वितरण करताना सामग्रीची प्रतिमुद्रा कोणत्या स्वरूपातील आहे ह्यावरून तिची परवाना +वापरण्यासाठीची अर्हता ठरते. संगणकबाह्य कोणतीही सामग्री आलोक नित्यमुक्त परवाना वापरू +शकते. उदा. छापील लेखन, छापील छायाचित्रे, फिल्मवर आधारित चित्रपट अथवा छायाचित्रे, रिळावर +आधारलेली ध्वनिमुद्रणे. ही व अशी संगणकबाह्य कोणतीही सामग्री आलोक नित्यमुक्त परवान्यासह वितरित +केली गेली असेल, तर तिच्या पुनर्निर्मितीस व वितरणास निर्मात्याची/निर्मातीची परवानगी आहे असे +मानण्यात येईल. अशा संगणकबाह्य सामग्रीचे संगणकीकृत वितरण करावयाची परवावगी ह्या परवान्यासह +आपसूक मिळत असली तरीही कोणत्याही स्वरूपाचे पुनर्वितरण एखाद्या नित्यमुक्त परवान्यासह करण्याची +अट आहेच व आलोक नित्यमुक्त परवानाच वापरण्याची इच्छा असेल, तर संगणकबाह्य मुक्त सामग्रीचे +संगणकीकरण करताना पुढील मुद्द्यांची काळजी घेण्यात यावी. + +आलोक नित्यमुक्त परवान्यासह संगणकीकृत सामग्रीचे वितरण करावयाचे असल्यास पुढील अटींची पूर्तता करणे +आवश्यक आहे. + +* सामग्रीची निर्मिती मुक्त आज्ञावलीचा वापर करून झालेली असावी. +* फलित सामग्रीचे आज्ञावलीय बीज कुठे पाहता येईल ह्याचा स्पष्ट निर्देश सामग्रीतच केलेला असावा. +* संगणकीय आज्ञावलीचे बीजदेखील एका नित्यमुक्त परवान्यासह वितरित केलेले असावे. + +उदा. एखादा लेखी दस्तऐवज जर पीडीएफ् स्वरूपात वितरित करावयाचा असेल, तर त्याची निर्मिती +करण्यासाठी मायक्रोसॉफ्ट वर्ड/इन-डिझाईन/ॲडॉब अशा अमुक्त आज्ञावल्या वापरू नयेत. अमुक्त +आज्ञावल्यांचा वापर करून तयार करण्यात आलेल्या संगणकीकृत सामग्रीचे वितरण आलोक मुक्त परवान्यासह +करता येणार नाही. संगणकीकृत सामग्रीचे वितरण करताना जर तिच्या सार्वत्रिक आज्ञावलीय बीजाचा +निर्देश केला गेला नसेल व सामग्री अमुक्त आज्ञावल्यांचा वापर करून घडवण्यात आली असेल, तर त्या +सामग्रीचा परवाना अवैध ठरवण्याचे अधिकार आलोक मराठी नियतकालिकाकडे आहेत. + +विविध प्रकारची संगणकीय सामग्री व तिचे वितरण करण्यासाठी आम्ही शिफारस करत असलेले स्वरूप +पुढीलप्रमाणे - + +* लेखी दस्तऐवज - युनिकोड प्रणाली, .txt, .tex, .dvi (टेक्-फलित), .pdf (आवृत्ती १.७+ + आवश्यक, मुक्त आज्ञावलीच्या वापर होणे आवश्यक), .odf, .md, .html, .epub, .djvu, .csv +* छायाचित्रे - .flif (उत्कृष्ट गुणवत्तेसाठी), .png, .svg, .jpeg +* ध्वनिफीती - .flac (उत्कृष्ट गुणवत्तेसाठी), .ogg (कमी आकारमान व मध्यम गुणवत्तेसाठी) +* ध्वनिचित्रफीती - .mkv, .webm + +वर नोंदवलेले सामग्रीचे प्रकार व त्यांचे स्वरूप ही एक सर्वसमावेशक यादी नसून, केवळ आमच्या काही +शिफारसी आहेत. ह्याव्यतिरिक्त उपलब्ध असलेल्या मुक्त स्वरूपांसह संगणकावर वितरित होणारी सामग्री +आलोक नित्यमुक्त परवाना वापरण्यास पात्र आहे. मुक्त स्वरूपांची आणखी तपशीलवार यादी पुढील दुव्यावर +पाहता येऊ शकते. + +[https://en.wikipedia.org/wiki/List_of_open_formats](https://en.wikipedia.org/wiki/List_of_open_formats) + +प्रतिमुद्राधिकारप्राप्त सामग्री संगणकीय आज्ञावलीच असेल तर ती मनुष्यास वाचनीय (द्विमान सामग्री +मनुष्यास वाचनीय नसते) स्वरूपात महाजालावर उपलब्ध करून द्यावी. आज्ञावलीय बीज वितरित +करण्यासाठी गिटहबऐवजी गिटलॅब ह्या मुक्त प्रणालीचा वापर करावा असे आम्ही सुचवू. ही एक अट नसून +शिफारस आहे. + +----------------------------------------------------- +वितरणविषयक नियम +----------------------------------------------------- + +* सर्वप्रथम सामग्रीच्या निर्मात्याने/निर्मातीने प्रतिमुद्राधिकार आपले असल्याचा स्पष्ट निर्देश + करावा. तो करताना तारीख अथवा वर्ष स्पष्टपणे नमूद केलेले असावे. तत्पूर्वी प्रस्तुत सामग्रीची ही + कितवी आवृत्ती आहे व कधी प्रकाशित होत आहे तेही नमूद करावे. प्रतिमुद्राधिकाराचा निर्देश पुढील + प्रकारे करणे बंधनकारक आहे. + + > <आवृत्तिक्रमांक>वी आवृत्ती <प्रकाशनाची तारीख><br> + > © <प्रकाशनवर्ष> <निर्मात्याचे/निर्मातीचे नाव> + +* ह्या मजकुराखाली पुढील परिच्छेद लिहिण्यात यावा. + + > ह्या सामग्रीच्या वितरणाचे व प्रतिमुद्रणाचे अधिकार आलोक नित्यमुक्त परवान्यासह मुक्त करण्यात येत + > आहेत. ह्या सामग्रीची यथामूल अथवा परिवर्तित प्रतिमुद्रणे व्यावसायिक अथवा अव्यावसायिक + > स्वरूपात वितरित करण्यास प्रतिमुद्राधिकारधारक संमती देत आहे, परंतु असे करताना वितरकाने + > प्रतिमुद्राधिकारांचा योग्य श्रेयनिर्देश करणे व सामग्री परिवर्तित असल्यास ती ह्याच अटींसह + > वितरित करणे बंधनकारक आहे. ही सामग्री जशी आहे तशी पुरवण्यात येत आहे, पुरवणारा/पुरवणारी + > हिच्याबाबत कोणतीही हमी देत नाही. ह्या (व ह्यावर आधारित) सामग्रीचे अमुक्त वितरण + > बेकायदेशीर मानले जाईल. आलोक नित्यमुक्त परवान्याचा संपूर्ण मसुदा पुढील दुव्यावर वाचता + > येईल. + + > [https://varnamudra.com/aalok/nityamukta-parwana/](https://varnamudra.com/aalok/nityamukta-parwana/) + +----------------------------------------------------- +सामग्रीचे पुनर्वितरण कसे करावे? +----------------------------------------------------- + +* ह्या परवान्यासह वितरित होणाऱ्या सामग्रीच्या परिवर्तित स्वरूपाचे वितरण करायचे असेल, तर + मूळ सामग्रीच्या प्रतिमुद्राधिकारधारकास त्याचे श्रेय पुढीलप्रमाणे द्यावे व त्याखाली नव्या + निर्मात्याने/निर्मातीने प्रतिमुद्राधिकार स्वतःकडे घ्यावेत. उदा. + + > मूळ सामग्री - <सामग्रीचे नाव><br> + > निर्माता/निर्माती - <निर्माता/निर्मातीचे नाव><br> + > निर्मितीवर्ष - <मूळ सामग्रीच्या निर्मितीचे वर्ष><br> + + > आधारित/परिवर्तित सामग्री<br> + > <आवृत्तिक्रमांक>वी आवृत्ती <प्रकाशनाची तारीख><br> + > © <प्रकाशनवर्ष> <निर्मात्याचे/निर्मातीचे नाव><br> + +* एखादी सामग्री प्रकाशित झाली तेव्हा मुक्त नसेल, परंतु प्रतिमुद्राधिकारधारकास तिचे नित्यमुक्त + वितरण करण्याची इच्छा असेल, तर त्याने/तिने नित्यमुक्त परवान्यासह त्या सामग्रीची सुधारित + आवृत्ती प्रकाशित करावी. एखादी प्रकाशित अमुक्त सामग्री आलोक नित्यमुक्त परवान्यासह मुक्त + माध्यमांवर प्रकाशित करायची असेल, तरीही त्या सामग्रीच्या प्रतिमुद्राधिकारधारकाशी संपर्क + साधून, त्यांची लेखी परवानगी घेऊन, हा परवाना वापरता येईल. असे करतानादेखील + प्रतिमुद्राधिकार मूळ निर्मात्या/निर्मातीकडेच राहतील. + +--- +अनुरूप परवाने +--- + +आलोक नित्यमुक्त परवान्यास केवळ `ग्नू फ्री डॉक्युमेन्टेशन परवाना` व ग्नू संस्थेचा `जनरल पब्लिक +परवाना` हे दोन परवानेच अनुरूप आहेत. क्रिएटिव्ह कॉमन्सचे परवाने संगणकीय पुनर्वितरणाच्या वेळी +अमुक्त आज्ञावल्यांना प्रतिबंध करत नाहीत, शिवाय आज्ञावलीय बीज देण्याची सक्तीदेखील करत नाहीत, +त्यामुळे सामग्रीची परिवर्तनशीलता कमी होते व सामग्रीची मुक्तता घटते, त्यामुळे क्रिएटिव्ह कॉमन्सचे +परवाने आलोकच्या परिवर्तित सामग्रीकरिता वापरू नयेत. अन्य कोणताही असा परवाना ज्यात +आज्ञावलीच्या मुक्ततेचा विचार केला जातो व प्रतधारकाच्या सुरक्षेचा व स्वातंत्र्याचा विचार केला +जातो, त्या परवान्याचा समावेश अनुरूप परवान्यांमध्ये करता येईल. असा कोणताही परवाना आढळल्यास +आलोकच्या गिट-पृष्ठावर सुधारणांमध्ये तसे नोंदवावे. त्या परवान्याचा ह्या यादीत समावेश केला +जाईल. परंतु (पहिल्या आवृत्तीनुसार) केवळ हे दोन परवानेच आलोक परवान्याकरिता अनुरूप मानले गेले +आहेत. diff --git a/language/marathi/README.txt b/language/marathi/README.txt index 596405c568..80f2bfe8b4 100644 --- a/language/marathi/README.txt +++ b/language/marathi/README.txt @@ -6,14 +6,14 @@ readers an English description is provided at the end. -------------------------------------------------------------------------- आज्ञासंच: marathi लेखक: निरंजन -आवृत्ती: १.६.३ (११ मे, २०२१) +आवृत्ती: १.६.४ (११ जून, २०२१) माहिती: लुआलाटेक् व झीलाटेक् ह्यांच्यासह मराठीचा सुलभ वापर करण्यासाठी. इथून पुढे लाटेक्-वरील मराठीच्या स्थानिकीकरणाचे काम ह्या आज्ञासंचामार्फत केले जाईल. तूर्त expex व blindtext ह्या आज्ञासंचांचे स्थानिकीकरण ह्या आज्ञासंचामार्फत पुरवले आहे. संग्राहिका: https://gitlab.com/niruvt/marathi अडचणी: https://gitlab.com/niruvt/marathi/-/issues परवाने: आज्ञालेखांकरिता आलोक नित्यमुक्त परवाना (आवृत्ती १.०+) आणि ग्नू पब्लिक परवाना - (आवृत्ती ३.०+). हस्तपुस्तिकेकरिता ग्नू फ्री डॉक्युमेन्टेशन परवाना (१.३+) + (आवृत्ती ३.०+). केवळ हस्तपुस्तिकेकरिता ग्नू फ्री डॉक्युमेन्टेशन परवाना (१.३+) दुवे: https://varnamudra.com/aalok/parwana https://www.gnu.org/licenses/gpl-3.0.txt @@ -30,7 +30,7 @@ readers an English description is provided at the end. -------------------------------------------------------------------------- Package: marathi Author: Niranjan -Version: 1.6.3 (11 May, 2021) +Version: 1.6.4 (11 June, 2021) Description: For conveniently typesetting Marathi language with LuaLaTeX and XeLaTeX. This package will now onwards host localizations needed for Marathi @@ -39,7 +39,7 @@ Description: For conveniently typesetting Marathi Repository: https://gitlab.com/niruvt/marathi Bug tracker: https://gitlab.com/niruvt/marathi/-/issues License: `आलोक' copyleft license v1.0+ and GPL v3.0+ for the code. - GFDL v1.3+ for the documentation + GFDL v1.3+ only for the documentation. Links: https://varnamudra.com/aalok/parwana https://www.gnu.org/licenses/gpl-3.0.txt diff --git a/language/marathi/marathi.dtx b/language/marathi/marathi.dtx index 79342dfcf2..dc886c1625 100644 --- a/language/marathi/marathi.dtx +++ b/language/marathi/marathi.dtx @@ -41,14 +41,14 @@ readers an English description is provided at the end. -------------------------------------------------------------------------- आज्ञासंच: marathi लेखक: निरंजन -आवृत्ती: १.६.३ (११ मे, २०२१) +आवृत्ती: १.६.४ (११ जून, २०२१) माहिती: लुआलाटेक् व झीलाटेक् ह्यांच्यासह मराठीचा सुलभ वापर करण्यासाठी. इथून पुढे लाटेक्-वरील मराठीच्या स्थानिकीकरणाचे काम ह्या आज्ञासंचामार्फत केले जाईल. तूर्त expex व blindtext ह्या आज्ञासंचांचे स्थानिकीकरण ह्या आज्ञासंचामार्फत पुरवले आहे. संग्राहिका: https://gitlab.com/niruvt/marathi अडचणी: https://gitlab.com/niruvt/marathi/-/issues परवाने: आज्ञालेखांकरिता आलोक नित्यमुक्त परवाना (आवृत्ती १.०+) आणि ग्नू पब्लिक परवाना - (आवृत्ती ३.०+). हस्तपुस्तिकेकरिता ग्नू फ्री डॉक्युमेन्टेशन परवाना (१.३+) + (आवृत्ती ३.०+). केवळ हस्तपुस्तिकेकरिता ग्नू फ्री डॉक्युमेन्टेशन परवाना (१.३+) दुवे: https://varnamudra.com/aalok/parwana https://www.gnu.org/licenses/gpl-3.0.txt @@ -65,7 +65,7 @@ readers an English description is provided at the end. -------------------------------------------------------------------------- Package: marathi Author: Niranjan -Version: 1.6.3 (11 May, 2021) +Version: 1.6.4 (11 June, 2021) Description: For conveniently typesetting Marathi language with LuaLaTeX and XeLaTeX. This package will now onwards host localizations needed for Marathi @@ -74,7 +74,7 @@ Description: For conveniently typesetting Marathi Repository: https://gitlab.com/niruvt/marathi Bug tracker: https://gitlab.com/niruvt/marathi/-/issues License: `आलोक' copyleft license v1.0+ and GPL v3.0+ for the code. - GFDL v1.3+ for the documentation + GFDL v1.3+ only for the documentation. Links: https://varnamudra.com/aalok/parwana https://www.gnu.org/licenses/gpl-3.0.txt @@ -101,7 +101,7 @@ Copy the following files in the following path texmf-dist/tex/latex/marathi \hypersetup{% unicode,% pdfauthor={निरंजन},% - pdftitle={मराठी (आवृत्ती १.६.३, मे २०२१)},% + pdftitle={मराठी (आवृत्ती १.६.४, जून २०२१)},% pdfsubject={लुआलाटेक् व झीलाटेक्-सह मराठीत अक्षरजुळणी.},% pdfkeywords={मराठी, लुआलाटेक्, झीलाटेक्, बेबल, पॉलिग्लॉसिया},% pdfproducer={हायपर्रेफ्-सह झीलाटेक्},% @@ -155,7 +155,7 @@ Copy the following files in the following path texmf-dist/tex/latex/marathi % \author{निरंजन} % \date^^A % {^^A -% आवृत्ती १.६.३ \textemdash\ ११ मे, २०२१\\[1ex]^^A +% आवृत्ती १.६.४ \textemdash\ ११ जून, २०२१\\[1ex]^^A % {\small\textcolor{गिटलॅब}{\faIcon{gitlab}}\quad\url{https://gitlab.com/niruvt/marathi}}^^A % }^^A % @@ -329,7 +329,7 @@ Copy the following files in the following path texmf-dist/tex/latex/marathi %<*package> % \end{macrocode} % \begin{macrocode} -\ProvidesPackage{marathi}[2021-05-11 v1.6.3 झीलाटेक् व लुआलाटेक्-सह मराठीचा सुलभ वापर] +\ProvidesPackage{marathi}[2021-06-11 v1.6.4 झीलाटेक् व लुआलाटेक्-सह मराठीचा सुलभ वापर] % \end{macrocode} % ह्या आज्ञांसह आज्ञासंचाची पायाभूत माहिती पुरवली. डेव्हिड कार्लआयल ह्यांनी गिट % प्रकल्पावर नोंदवलेल्या @@ -401,6 +401,12 @@ Copy the following files in the following path texmf-dist/tex/latex/marathi \pgfkeys{marathi/अंतर/.code=\setstretch{#1}} }% }% +\AtBeginDocument +{% + \@ifpackageloaded{csquotes}{}{% + \RequirePackage[style=british]{csquotes}% + }% +}% \DeclareOption*{\expandafter\बदल\expandafter{\CurrentOption}} \providecommand{\अंतरबदल}[1]{\बदल{अंतर=#1}} \ProcessOptions\relax @@ -474,7 +480,7 @@ Copy the following files in the following path texmf-dist/tex/latex/marathi {% \usepackage{babel}% \babelprovide[% - import, main, maparabic, mapdigits,% + import,main,mapdigits,% counters/स्वर = अ आ इ ई उ ऊ ए ऐ ओ औ अं अः ॲ ऋ ऌ ऑ,% alph=स्वर,% counters/anka = एक दोन तीन चार पाच सहा सात आठ नऊ दहा अकरा बारा% diff --git a/language/marathi/marathi.ins b/language/marathi/marathi.ins index 48ce2a4931..40f7f5da40 100644 --- a/language/marathi/marathi.ins +++ b/language/marathi/marathi.ins @@ -6,7 +6,7 @@ \preamble -------------------------------------------------------------------------- -लाटेक् आज्ञासंच मराठी आवृत्ती १.६.३ +लाटेक् आज्ञासंच मराठी आवृत्ती १.६.४ © २०२१ निरंजन ह्या सामग्रीच्या वितरणाचे व प्रतिमुद्रणाचे अधिकार आलोक नित्यमुक्त परवान्यासह मुक्त करण्यात येत @@ -20,7 +20,7 @@ https://gitlab.com/aalok/nityamukta-parwana -------------------------------------------------------------------------- -LaTeX Package marathi v1.6.3 +LaTeX Package marathi v1.6.4 © 2021 Niranjan This program is free software: you can redistribute it and/or modify diff --git a/language/marathi/marathi.pdf b/language/marathi/marathi.pdf Binary files differindex e6c6fdca88..db7b54e22e 100644 --- a/language/marathi/marathi.pdf +++ b/language/marathi/marathi.pdf diff --git a/macros/generic/xint/CHANGES.html b/macros/generic/xint/CHANGES.html index f1edf6fd88..c8a210a56a 100644 --- a/macros/generic/xint/CHANGES.html +++ b/macros/generic/xint/CHANGES.html @@ -4,7 +4,7 @@ <meta charset="utf-8" /> <meta name="generator" content="pandoc" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> - <meta name="author" content="xint 1.4h" /> + <meta name="author" content="xint 1.4i" /> <title>CHANGE LOG</title> <style type="text/css"> code{white-space: pre-wrap;} @@ -25,69 +25,73 @@ <body> <header> <h1 class="title">CHANGE LOG</h1> -<p class="author">xint 1.4h</p> -<p class="date">2021/05/27</p> +<p class="author">xint 1.4i</p> +<p class="date">2021/06/11</p> </header> <nav id="TOC"> <ul> -<li><a href="#h-20210527"><code>1.4h (2021/05/27)</code></a><ul> +<li><a href="#i-20210611"><code>1.4i (2021/06/11)</code></a><ul> <li><a href="#bug-fixes">Bug fixes</a></li> +<li><a href="#new-features">New features</a></li> +</ul></li> +<li><a href="#h-20210527"><code>1.4h (2021/05/27)</code></a><ul> +<li><a href="#bug-fixes-1">Bug fixes</a></li> </ul></li> <li><a href="#g-20210525"><code>1.4g (2021/05/25)</code></a><ul> <li><a href="#breaking-changes">Breaking changes</a></li> <li><a href="#deprecated">Deprecated</a></li> -<li><a href="#bug-fixes-1">Bug fixes</a></li> -<li><a href="#new-features">New features</a></li> +<li><a href="#bug-fixes-2">Bug fixes</a></li> +<li><a href="#new-features-1">New features</a></li> </ul></li> <li><a href="#f-20210510"><code>1.4f (2021/05/10)</code></a><ul> <li><a href="#breaking-changes-1">Breaking changes</a></li> -<li><a href="#bug-fixes-2">Bug fixes</a></li> +<li><a href="#bug-fixes-3">Bug fixes</a></li> </ul></li> <li><a href="#e-20210505"><code>1.4e (2021/05/05)</code></a><ul> <li><a href="#breaking-changes-2">Breaking changes</a></li> -<li><a href="#new-features-1">New features</a></li> -<li><a href="#bug-fixes-3">Bug fixes</a></li> +<li><a href="#new-features-2">New features</a></li> +<li><a href="#bug-fixes-4">Bug fixes</a></li> </ul></li> <li><a href="#d-20210329"><code>1.4d (2021/03/29)</code></a><ul> <li><a href="#breaking-changes-3">Breaking changes</a></li> -<li><a href="#bug-fixes-4">Bug fixes</a></li> +<li><a href="#bug-fixes-5">Bug fixes</a></li> </ul></li> <li><a href="#c-20210220"><code>1.4c (2021/02/20)</code></a><ul> -<li><a href="#bug-fixes-5">Bug fixes</a></li> +<li><a href="#bug-fixes-6">Bug fixes</a></li> </ul></li> <li><a href="#b-20200225"><code>1.4b (2020/02/25)</code></a><ul> <li><a href="#future">Future</a></li> -<li><a href="#new-features-2">New features</a></li> -<li><a href="#bug-fixes-6">Bug fixes</a></li> +<li><a href="#new-features-3">New features</a></li> +<li><a href="#bug-fixes-7">Bug fixes</a></li> </ul></li> <li><a href="#a-20200219"><code>1.4a (2020/02/19)</code></a><ul> <li><a href="#breaking-changes-4">Breaking changes</a></li> -<li><a href="#new-features-3">New features</a></li> -<li><a href="#bug-fixes-7">Bug fixes</a></li> +<li><a href="#new-features-4">New features</a></li> +<li><a href="#bug-fixes-8">Bug fixes</a></li> </ul></li> <li><a href="#section"><code>1.4 (2020/01/31)</code></a><ul> <li><a href="#breaking-changes-5">Breaking changes</a></li> <li><a href="#improvements-and-new-features">Improvements and new features</a></li> -<li><a href="#bug-fixes-8">Bug fixes</a></li> +<li><a href="#bug-fixes-9">Bug fixes</a></li> <li><a href="#todo">TODO</a></li> </ul></li> <li><a href="#f-20190910"><code>1.3f (2019/09/10)</code></a><ul> <li><a href="#improvements-and-new-features-1">Improvements and new features</a></li> -<li><a href="#bug-fixes-9">Bug fixes</a></li> +<li><a href="#bug-fixes-10">Bug fixes</a></li> </ul></li> <li><a href="#e-20190405"><code>1.3e (2019/04/05)</code></a><ul> <li><a href="#breaking-changes-6">Breaking changes</a></li> <li><a href="#improvements-and-new-features-2">Improvements and new features</a></li> -<li><a href="#bug-fixes-10">Bug fixes</a></li> +<li><a href="#bug-fixes-11">Bug fixes</a></li> </ul></li> <li><a href="#d-20190106"><code>1.3d (2019/01/06)</code></a><ul> <li><a href="#breaking-changes-7">Breaking changes</a></li> <li><a href="#improvements-and-new-features-3">Improvements and new features</a></li> -<li><a href="#bug-fixes-11">Bug fixes</a></li> +<li><a href="#bug-fixes-12">Bug fixes</a></li> </ul></li> <li><a href="#c-20180617"><code>1.3c (2018/06/17)</code></a><ul> <li><a href="#improvements-and-new-features-4">Improvements and new features</a></li> -<li><a href="#bug-fixes-12">Bug fixes</a></li> +<li><a href="#bug-fixes-13">Bug fixes</a></li> </ul></li> <li><a href="#b-20180518"><code>1.3b (2018/05/18)</code></a><ul> <li><a href="#improvements-and-new-features-5">Improvements and new features</a></li> @@ -95,7 +99,7 @@ <li><a href="#a-20180307"><code>1.3a (2018/03/07)</code></a><ul> <li><a href="#removed">Removed</a></li> <li><a href="#improvements-and-new-features-6">Improvements and new features</a></li> -<li><a href="#bug-fixes-13">Bug fixes</a></li> +<li><a href="#bug-fixes-14">Bug fixes</a></li> </ul></li> <li><a href="#section-1"><code>1.3 (2018/03/01)</code></a><ul> <li><a href="#breaking-changes-8">Breaking changes</a></li> @@ -103,12 +107,12 @@ </ul></li> <li><a href="#q-20180206"><code>1.2q (2018/02/06)</code></a><ul> <li><a href="#improvements-and-new-features-8">Improvements and new features</a></li> -<li><a href="#bug-fixes-14">Bug fixes</a></li> +<li><a href="#bug-fixes-15">Bug fixes</a></li> </ul></li> <li><a href="#p-20171205"><code>1.2p (2017/12/05)</code></a><ul> <li><a href="#breaking-changes-9">Breaking changes</a></li> <li><a href="#improvements-and-new-features-9">Improvements and new features</a></li> -<li><a href="#bug-fixes-15">Bug fixes</a></li> +<li><a href="#bug-fixes-16">Bug fixes</a></li> </ul></li> <li><a href="#o-20170829"><code>1.2o (2017/08/29)</code></a><ul> <li><a href="#breaking-changes-10">Breaking changes</a></li> @@ -121,31 +125,31 @@ <li><a href="#m-20170731"><code>1.2m (2017/07/31)</code></a><ul> <li><a href="#breaking-changes-12">Breaking changes</a></li> <li><a href="#improvements-and-new-features-11">Improvements and new features</a></li> -<li><a href="#bug-fixes-16">Bug fixes</a></li> +<li><a href="#bug-fixes-17">Bug fixes</a></li> </ul></li> <li><a href="#l-20170726"><code>1.2l (2017/07/26)</code></a><ul> <li><a href="#removed-1">Removed</a></li> <li><a href="#improvements-and-new-features-12">Improvements and new features</a></li> -<li><a href="#bug-fixes-17">Bug fixes</a></li> +<li><a href="#bug-fixes-18">Bug fixes</a></li> </ul></li> <li><a href="#k-20170106"><code>1.2k (2017/01/06)</code></a><ul> <li><a href="#breaking-changes-13">Breaking changes</a></li> <li><a href="#improvements-and-new-features-13">Improvements and new features</a></li> -<li><a href="#bug-fixes-18">Bug fixes</a></li> +<li><a href="#bug-fixes-19">Bug fixes</a></li> </ul></li> <li><a href="#j-20161222"><code>1.2j (2016/12/22)</code></a><ul> <li><a href="#improvements-and-new-features-14">Improvements and new features</a></li> -<li><a href="#bug-fixes-19">Bug fixes</a></li> +<li><a href="#bug-fixes-20">Bug fixes</a></li> </ul></li> <li><a href="#i-20161213"><code>1.2i (2016/12/13)</code></a><ul> <li><a href="#breaking-changes-14">Breaking changes</a></li> <li><a href="#removed-2">Removed</a></li> <li><a href="#improvements-and-new-features-15">Improvements and new features</a></li> -<li><a href="#bug-fixes-20">Bug fixes</a></li> +<li><a href="#bug-fixes-21">Bug fixes</a></li> </ul></li> <li><a href="#h-20161120"><code>1.2h (2016/11/20)</code></a><ul> <li><a href="#improvements-and-new-features-16">Improvements and new features</a></li> -<li><a href="#bug-fixes-21">Bug fixes</a></li> +<li><a href="#bug-fixes-22">Bug fixes</a></li> </ul></li> <li><a href="#g-20160319"><code>1.2g (2016/03/19)</code></a><ul> <li><a href="#breaking-changes-15">Breaking changes</a></li> @@ -154,26 +158,26 @@ <li><a href="#f-20160312"><code>1.2f (2016/03/12)</code></a><ul> <li><a href="#breaking-changes-16">Breaking changes</a></li> <li><a href="#improvements-and-new-features-18">Improvements and new features</a></li> -<li><a href="#bug-fixes-22">Bug fixes</a></li> +<li><a href="#bug-fixes-23">Bug fixes</a></li> </ul></li> <li><a href="#e-20151122"><code>1.2e (2015/11/22)</code></a><ul> <li><a href="#improvements-and-new-features-19">Improvements and new features</a></li> -<li><a href="#bug-fixes-23">Bug fixes</a></li> +<li><a href="#bug-fixes-24">Bug fixes</a></li> </ul></li> <li><a href="#d-20151118"><code>1.2d (2015/11/18)</code></a><ul> <li><a href="#improvements-and-new-features-20">Improvements and new features</a></li> -<li><a href="#bug-fixes-24">Bug fixes</a></li> +<li><a href="#bug-fixes-25">Bug fixes</a></li> </ul></li> <li><a href="#c-20151116"><code>1.2c (2015/11/16)</code></a><ul> <li><a href="#improvements-and-new-features-21">Improvements and new features</a></li> -<li><a href="#bug-fixes-25">Bug fixes</a></li> +<li><a href="#bug-fixes-26">Bug fixes</a></li> </ul></li> <li><a href="#b-20151029"><code>1.2b (2015/10/29)</code></a><ul> -<li><a href="#bug-fixes-26">Bug fixes</a></li> +<li><a href="#bug-fixes-27">Bug fixes</a></li> </ul></li> <li><a href="#a-20151019"><code>1.2a (2015/10/19)</code></a><ul> <li><a href="#improvements-and-new-features-22">Improvements and new features</a></li> -<li><a href="#bug-fixes-27">Bug fixes</a></li> +<li><a href="#bug-fixes-28">Bug fixes</a></li> </ul></li> <li><a href="#section-2"><code>1.2 (2015/10/10)</code></a><ul> <li><a href="#removed-3">Removed</a></li> @@ -187,7 +191,7 @@ <li><a href="#removed-4">Removed</a></li> <li><a href="#deprecated-2">Deprecated</a></li> <li><a href="#improvements-and-new-features-24">Improvements and new features</a></li> -<li><a href="#bug-fixes-28">Bug fixes</a></li> +<li><a href="#bug-fixes-29">Bug fixes</a></li> </ul></li> <li><a href="#n-20140401"><code>1.09n (2014/04/01)</code></a></li> <li><a href="#m-20140226"><code>1.09m (2014/02/26)</code></a></li> @@ -215,13 +219,24 @@ <li><a href="#section-10"><code>1.0 (2013/03/28)</code></a></li> </ul> </nav> -<pre><code>Source: xint.dtx 1.4h 2021/05/27 (doc 2021/05/27) +<pre><code>Source: xint.dtx 1.4i 2021/06/11 (doc 2021/06/11) Author: Jean-Francois Burnol Info: Expandable operations on big integers, decimals, fractions License: LPPL 1.3c</code></pre> -<h2 id="h-20210527"><code>1.4h (2021/05/27)</code></h2> +<h2 id="i-20210611"><code>1.4i (2021/06/11)</code></h2> <h3 id="bug-fixes">Bug fixes</h3> <ul> +<li><p><strong>xintexpr</strong>: simultaneous assignments via <code>\xintdefvar</code> to 10 or more variables was broken if the right hand side was an ople (of length at least 10, as it had prior to this release to match the number of variables).</p></li> +<li><p><strong>xintexpr</strong>: the mechanism which allows to define variables with names already in use for pre-existing functions was broken for some built-in functions: those handling syntax with dummy variables (currently <code>subs()</code>, <code>subsm()</code>, <code>subsn()</code>, <code>seq()</code>, <code>add()</code>, <code>mul()</code>, <code>ndseq()</code>, <code>ndmap()</code>, <code>ndfillraw()</code>) and the so-called “pseudo” functions (currently <code>bool()</code>, <code>togl()</code>, <code>protect()</code>, <code>qint()</code>, <code>qfrac()</code>, <code>qfloat()</code>, <code>qraw()</code>, <code>random()</code>, <code>qrand()</code>, <code>rbit()</code>). For example the function <code>seq()</code> was broken if the user had defined a variable <code>seq</code>.</p></li> +</ul> +<h3 id="new-features">New features</h3> +<ul> +<li><p><strong>xintexpr</strong>: the concept of simultaneous assignments is extended: in case of more variables than values the extraneous variables do not cause an error message but are simply set to the <code>nil</code> value; in case of more values than variables, the last variable is defined to be the ople concatenating all the extra values.</p></li> +<li><p><strong>xintexpr</strong>: built-in functions usable with arbitrarily many arguments such as <code>max()</code>, <code>gcd()</code>, or <code>len()</code> are now again usable with a single numeric argument: since <code>1.4</code> a lone argument had to be a <code>nutple</code> (which was automatically unpacked). It can now again be a number.</p></li> +</ul> +<h2 id="h-20210527"><code>1.4h (2021/05/27)</code></h2> +<h3 id="bug-fixes-1">Bug fixes</h3> +<ul> <li><p><strong>xintexpr</strong>: the recent <code>1.4g</code> introduced a bug breaking input of the type <code><operator><space token><macro></code>.</p></li> <li><p><strong>xintexpr</strong>: since <code>1.4</code> (<code>2020/01/31</code>) the <code>omit</code> and <code>abort</code> keywords were broken if used inside a substitution, itself nested in a <code>seq()</code> or similar construct.</p></li> <li><p><strong>xintexpr</strong>: since <code>1.4c</code> the <code>\xintthespaceseparated</code> (added at <code>1.4a</code>) inserted two, not one, spaces at one specific location near the end of its output. A bit cosmetic problem, fixed nevertheless.</p></li> @@ -236,7 +251,7 @@ License: LPPL 1.3c</code></pre> <ul> <li><strong>xintfrac</strong>: old typesetting macros dating back to <code>1.03</code> and <code>1.04</code> releases <code>\xintFrac</code>, <code>\xintSignedFrac</code>, <code>\xintFwOver</code>, <code>\xintSignedFwOver</code> are deprecated. Please use the new names <code>\xintTeXFrac</code>, <code>\xintTeXsignedFrac</code>, <code>\xintTeXOver</code>, <code>\xintTeXsignedOver</code>. The old names will emit warnings.</li> </ul> -<h3 id="bug-fixes-1">Bug fixes</h3> +<h3 id="bug-fixes-2">Bug fixes</h3> <ul> <li><p><strong>xintexpr</strong>: with <strong>xintbinhex</strong> loaded, <code>"</code> is recognized as prefix for hexadecimal input; but a bug (present ever since this support for hexadecimal input was added) caused syntax such as <code>"\macro</code> to break the parser. Also, leading zeros such as in <code>"0000A</code> where not properly trimmed since <code>1.2m</code>.</p></li> <li><p><strong>xintexpr</strong>: authorize <code>x! == y</code> without parentheses. Formerly the parser mis-interpreted <code>!</code> as first character of the <code>!=</code> not-equal-to comparison operator, subsequently causing breakage when finding the second <code>=</code>.</p></li> @@ -251,7 +266,7 @@ License: LPPL 1.3c</code></pre> </ul> <p>Surely, further situations remain where bad input will crash parser.</p></li> </ul> -<h3 id="new-features">New features</h3> +<h3 id="new-features-1">New features</h3> <ul> <li><p>Messages written to the terminal and log file during the handling of recovery from exceptions use a new mechanism; when in interactive mode, the user is prompted only once, not thrice, to enter <code><return></code> for recovery and continued processing.</p></li> <li><p><strong>xintfrac</strong>: <code>\xintTeXfromSci</code> (added about 7 or 8 years too late) to help typesetting values output by <code>\xintfloateval</code> in a more useful way than <code>\xintTeXFrac</code> (formerly <code>\xintFrac</code>).</p></li> @@ -265,7 +280,7 @@ License: LPPL 1.3c</code></pre> <li><p><strong>xintexpr</strong>: further changes in the computation of powers, see the bug fixes below.</p></li> <li><p><strong>xintexpr</strong>: the <code>float_()</code> function got renamed into <code>float_dgt()</code>.</p></li> </ul> -<h3 id="bug-fixes-2">Bug fixes</h3> +<h3 id="bug-fixes-3">Bug fixes</h3> <ul> <li><p><strong>xintexpr</strong>: the documentation said <code>float_()</code> function had been renamed <code>float_dgt()</code> but actually that was not yet the case.</p></li> <li><p><strong>xintexpr</strong>: powers <code>a^b</code> (with exponent <code>b</code> neither integer nor half-integer) stopped being accurate regarding the last digits for <code>|b|</code> about <code>1000</code> and beyond. Except for <code>0.8<a<1.25</code> for which accuracy was maintained up to about <code>|b|=10^7</code>. Fixed via keeping the same suitable number of extra digits for internal computations of logarithms, independently of whether <code>a</code> is close to <code>1</code> or not.</p></li> @@ -279,13 +294,13 @@ License: LPPL 1.3c</code></pre> <li><p><strong>xintlog</strong>: <code>\poormanloghack</code> now a no-op.</p></li> <li><p><strong>xinttrig</strong>: loading the package does not define left-over variables holding the values of the inverse factorials used in the sine and cosine series.</p></li> <li><p><strong>xintexpr</strong>: the output format of <code>\xinteval</code>, which uses <code>\xintFracToSci,</code> has changed. In particular, if the number has a power of ten part, it is not output with an integer mantissa, but with a scientific mantissa <code>d.d...</code> with always at least one digit after the decimal mark (possibly <code>0</code>) and trailing zeros are trimmed out. This is the same output format as used for <code>\xintfloateval</code>, apart of course from the fact that the mantissa lengths are not limited.</p></li> -<li><p><strong>xintexpr</strong>: the output format of <code>\xintfloateval</code>, which uses <code>\xintPFloat</code>, changed. The <code>\xintfloatexprPrintOne</code> macro now expects to be used with either one or two arguments, the first one being within brackets not braces.</p></li> +<li><p><strong>xintexpr</strong>: the output format of <code>\xintfloateval</code>, which uses <code>\xintPFloat</code>, changed. The <code>\xintfloatexprPrintOne</code> macro has changed its signature to <code>[#1]{#2}</code> i.e. its first argument will be within brackets not braces.</p></li> <li><p><strong>xintexpr</strong>: when using <code>\xintieval{[D]...}</code> optional <code>[D]</code> with a negative <code>D</code>, which triggers quantization to a positive power of ten, the output (if not the zero value) will be an integer with <code>N=abs(D)</code> explicit trailing zeros, not an integer mantissa followed by <code>eN</code>.</p></li> <li><p><strong>xintexpr</strong>: <code>\xinteval</code> will not compute powers <code>a^N</code> exactly if <code>N</code> in absolute value is at least the (rounded) quotient of <code>10000</code> by the number of digits of <code>a</code>; it will then use the logarithm/exponential (in base 10) approach, according to the prevailing Digits setting (at <code>1.4f</code> this got modified again and integer exponents large enough to trigger floating point evaluation are handled exactly as in <code>\xintfloateval</code>, i.e. using the legacy <strong>xintfrac</strong> <code>\xintFloatPower</code>, not the logarithm/exponential approach which loses accuracy for exponents of the order of <code>100000000</code> and beyond).</p></li> <li><p><strong>xintexpr</strong>: <code>\xintdeffloatvar</code> now always rounds the assigned value to the target precision. Formerly, inputs actually involving no float operations, such as for example a sub-expression <code>\xintexpr1/20!\relax</code> (in contrast to <code>1/20!</code>), or an explicit single number having more digits than the precision, got stored “as is” in the defined variable, without pre-rounding to the Digits precision.</p></li> <li><p><strong>xintfrac</strong>:<code>\xintPFloat</code> and <code>\xintFracToSci</code> have both been modified. The macro <code>\xintFracToSciE</code> does not exist anymore, as <code>\xintFracToSci</code> in the case of scientific exponents hands over the process to <code>\xintPFloat</code> (without the rounding to Digits, of course).</p></li> </ul> -<h3 id="new-features-1">New features</h3> +<h3 id="new-features-2">New features</h3> <ul> <li><p><strong>xintlog</strong>: now working up to <code>62</code> digits. The legacy faster <code>poormanlog</code>-based macros are kept for computations with Digits up to <code>8</code>. Fractional powers are now available both in <code>xinteval</code> and <code>xintfloateval</code>, per default.</p></li> <li><p><strong>xinttrig</strong>: now working up to <code>62</code> digits and with increased accuracy. Special faster (or not as slow if you prefer) mode at <code>8</code> digits or less.</p></li> @@ -294,7 +309,7 @@ License: LPPL 1.3c</code></pre> <li><p><strong>xintfrac</strong>: <code>\xintPFloatE</code> may be redefined as a macro which fetches the scientific exponent as a mandatory argument delimited with a dot, and outputs a suitable formatted result (f-expandably), also delimited with a dot which will be removed by internal processing. The default however simply expands to the letter <code>e</code>.</p></li> <li><p><strong>xintfrac</strong>: <code>\xintDecToStringREZ</code> is like <code>\xintDecToString</code> but starts by removing trailing zeroes.</p></li> </ul> -<h3 id="bug-fixes-3">Bug fixes</h3> +<h3 id="bug-fixes-4">Bug fixes</h3> <ul> <li><strong>xintfrac</strong>, <strong>xintexpr</strong>: it was not possible to use <code>\xinttheDigits</code> in the right hand side of an <code>\xintDigits</code> assignment. For example: <code>\xintDigits*:=\numexpr\xinttheDigits+4;</code>. This is now allowed, and the same applies to the macro interface, for example <code>\xintSetDigits*{\xinttheDigits+4}</code>.</li> </ul> @@ -305,7 +320,7 @@ License: LPPL 1.3c</code></pre> <li><p>The output of <code>gcd()</code> and <code>lcm()</code> as applied to fractions is now always in lowest terms.</p></li> <li><p>The log message to report a variable creation (if <code>\xintverbosetrue</code>) does not use (double) quotes anymore around the name. By the way, quotes were never used for function names.</p></li> </ul> -<h3 id="bug-fixes-4">Bug fixes</h3> +<h3 id="bug-fixes-5">Bug fixes</h3> <ul> <li><p>Ever since <code>1.3</code> the <code>quo()</code> and <code>rem()</code> functions in <code>\xintexpr</code> (not the ones in <code>\xintiiexpr</code>) were broken as their (officially deprecated) support macros had been removed! They had somewhat useless definitions anyway. They have now been officially removed from the syntax. Their siblings in <code>\xintiieval</code> were renamed to <code>iquo()</code> and <code>irem()</code>.</p></li> <li><p>Sadly, <code>gcd()</code> was broken in <code>\xintexpr</code> since <code>1.4</code>, if the first argument vanished. And <code>gcd()</code> was broken in <code>\xintiiexpr</code> since <code>1.3d</code> if <em>any</em> argument vanished. I did have a unit test! (which obviously was too limited …)</p> @@ -313,7 +328,7 @@ License: LPPL 1.3c</code></pre> <li><p>The <code>first()</code> and <code>last()</code> functions, if used as arguments to numerical functions such as <code>sqr()</code> inside an <code>\xintdeffunc</code> caused the defined function to be broken.</p></li> </ul> <h2 id="c-20210220"><code>1.4c (2021/02/20)</code></h2> -<h3 id="bug-fixes-5">Bug fixes</h3> +<h3 id="bug-fixes-6">Bug fixes</h3> <ul> <li>Fix <code>1.4</code> regression which broke syntax <code>varname(...)</code> which supposedly is allowed and inserts a tacit multiplication.</li> </ul> @@ -325,14 +340,14 @@ License: LPPL 1.3c</code></pre> <li><p>At next major release the power operators <code>**</code> and <code>^</code> will turn from left to right associative. I.e. <code>2**2**3</code> will give <code>256</code>, not <code>64</code>. This is to match with Python and l3fp.</p></li> <li><p><code>\thexintexpr</code> et al. (introduced at <code>1.2h</code> but not documented anymore for some time) will be removed at next major release. The original <code>\xinttheexpr</code> et al. have always been so much better names. Besides, since <code>1.4</code>, <code>\xintexpr</code> can be used directly in typesetting flow.</p></li> </ul> -<h3 id="new-features-2">New features</h3> +<h3 id="new-features-3">New features</h3> <ul> <li><p>Function <code>zip()</code> is modeled on Python’s function of the same name.</p></li> <li><p>Function <code>flat()</code> removes all nesting to produce a “one-dimensional” list having the exact same leaves (some possibly empty) as the original (in the same order).</p></li> <li><p>Chaining of comparison operators (e.g. <code>x<y<z</code>) as in Python (but all comparisons are done even if one is found false) and l3fp.</p></li> <li><p>It was possible since <code>1.4</code>’s <code>\xintFracToSciE</code> to configure the separator between mantissas and exponents in the output of <code>\xinteval</code> but strangely there was no way to customize the output of <code>\xintfloateval</code>. The added <code>\xintPFloatE</code> fixes this.</p></li> </ul> -<h3 id="bug-fixes-6">Bug fixes</h3> +<h3 id="bug-fixes-7">Bug fixes</h3> <ul> <li><code>\xintieval{[D]...}</code> with a negative <code>D</code> (a feature added at <code>1.4a</code>) used erroneously a catcode 12 <code>e</code> in output, which moreover remained immuned to the <code>\xintFracToSciE</code> setting.</li> </ul> @@ -342,13 +357,13 @@ License: LPPL 1.3c</code></pre> <ul> <li>The macros implementing customization of <code>\xintthealign</code> have modified meanings and names.</li> </ul> -<h3 id="new-features-3">New features</h3> +<h3 id="new-features-4">New features</h3> <ul> <li><p><code>\xintthespaceseparated</code> (serves to provide suitable input to PS-Tricks <code>\listplot</code>).</p></li> <li><p>The optional argument <code>[D]</code> to <code>\xintieval/\xintiexpr</code> can be negative, with the same meaning as the non-negative case, i.e. rounding to an integer multiple of <code>10^(-D)</code>.</p> <p>The same applies to the functions <code>trunc()</code> and <code>round()</code>. And to the <code>\xintTrunc</code>, <code>\xintRound</code>, <code>\xintiTrunc</code>, and <code>\xintiRound</code> macros of <strong>xintfrac</strong>.</p></li> </ul> -<h3 id="bug-fixes-7">Bug fixes</h3> +<h3 id="bug-fixes-8">Bug fixes</h3> <ul> <li><p>Usage of <code>round()</code> and <code>trunc()</code> within <code>\xintdeffunc</code> got broken at <code>1.4</code>.</p></li> <li><p><code>add()</code> and <code>mul()</code> were supposedly accepting the <code>omit</code>, <code>abort</code> and <code>break()</code> keywords since <code>1.4</code> but this was broken.</p></li> @@ -400,7 +415,7 @@ License: LPPL 1.3c</code></pre> <li><p>Function declarations are able to parse a much wider part of the syntax, but some severe limitations remain. Refer to the user manual for related information.</p></li> <li><p>We have made an effort on some error messages, and when working interactively in a shell it may even be sometimes possible to insert for example a correct variable or function name in place of the not recognized one. But don’t expect miracles when trying to intervene in the midst of a purely expandable expansion…</p></li> </ul> -<h3 id="bug-fixes-8">Bug fixes</h3> +<h3 id="bug-fixes-9">Bug fixes</h3> <p>Bugs? Those identified in <code>1.3f</code> were almost features. As per <code>1.4</code> the code base of <strong>xintexpr</strong> received multiple successive core refactorings and added numerous new features, and our test suite although significantly enlarged is not yet extensive enough. Please report bugs by mail.</p> <h3 id="todo">TODO</h3> <ul> @@ -416,7 +431,7 @@ License: LPPL 1.3c</code></pre> <li><p><strong>xintexpr</strong>: add starred variants <code>\xintDigits*</code> and <code>\xintSetDigits*</code> which execute <code>\xintreloadxinttrig</code>.</p> <p>Revert 1.3e ban on usage of <code>\xinteval</code> et al. inside expressions by <code>\xintdeffunc</code>. And make them usable also inside macro definitions via <code>\xintNewExpr</code>.</p></li> </ul> -<h3 id="bug-fixes-9">Bug fixes</h3> +<h3 id="bug-fixes-10">Bug fixes</h3> <ul> <li><p><strong>xintexpr</strong>: fix bug preventing usage of <code>\xintdefefunc</code> to define a function without variables.</p> <p>Fix some issue with <code>\xintfloatexpr[D]..\relax</code> if used inside an expression parsed by <code>\xintdeffunc</code> et al.</p></li> @@ -436,7 +451,7 @@ License: LPPL 1.3c</code></pre> <li><p><strong>xintexpr</strong>: <code>\xintensuredummy</code>, <code>\xintrestorelettervar</code>.</p></li> <li><p>The optional argument of <code>\xintfloatexpr</code> or <code>\xintfloateval</code> (it must be at start of braced argument) can be negative; it then means to trim (and round) from the output at float precision that many least significant digits.</p></li> </ul> -<h3 id="bug-fixes-10">Bug fixes</h3> +<h3 id="bug-fixes-11">Bug fixes</h3> <ul> <li>Some bugfixes related to user functions with no variables at all; they were dysfunctional.</li> </ul> @@ -455,7 +470,7 @@ License: LPPL 1.3c</code></pre> <li><p><strong>xintexpr</strong>: functions <code>isone()</code> and <code>isint()</code>.</p></li> <li><p><strong>xintexpr</strong>: <code>\xinteval</code>, <code>\xintieval</code>, <code>\xintiieval</code>, and <code>\xintfloateval</code> as synonyms to <code>\xinttheexpr...\relax</code> etc…, but with the (comma-separated) expression as a usual braced macro argument.</p></li> </ul> -<h3 id="bug-fixes-11">Bug fixes</h3> +<h3 id="bug-fixes-12">Bug fixes</h3> <ul> <li><strong>xintcore</strong>, <strong>xintexpr</strong> : division in <code>\xintiiexpr</code> was broken for a zero dividend and a one-digit divisor (e.g. <code>0//7</code>) since <code>1.2p</code> due to a bug in <code>\xintiiDivMod</code> for such arguments. The bug was signaled (thanks to Kpym for report) and fixed shortly after <code>1.3c</code> release but I then completely forgot to upload a bugfix release to CTAN at that time, apologies for that.</li> </ul> @@ -468,7 +483,7 @@ License: LPPL 1.3c</code></pre> <li><p><strong>xintexpr</strong>: <code>\xintdefvar</code>, <code>\xintdeffunc</code> and their variants try to set the catcode of the semi-colon which delimits their arguments; of course this will not work if that catcode is already frozen.</p></li> <li><p><code>\xintUniformDeviate</code> is better documented and <code>sourcexint.pdf</code> is better hyperlinked and includes indices for the macros defined by each package.</p></li> </ul> -<h3 id="bug-fixes-12">Bug fixes</h3> +<h3 id="bug-fixes-13">Bug fixes</h3> <ul> <li><strong>xintfrac</strong>: since <code>1.3</code> release, it loaded <strong>xintgcd</strong> in contradiction to what the documentation says (hence also <strong>xintexpr</strong> loaded <strong>xintgcd</strong> automatically). There is no actual dependency so the loading is removed for now.</li> </ul> @@ -494,7 +509,7 @@ License: LPPL 1.3c</code></pre> <li><p><strong>xintfrac</strong>: <code>\xintREZ</code> is faster on inputs having one hundred digits or more.</p></li> <li><p>Added to the user manual mention of macros such as <code>\xintDivFloor</code>, <code>\xintMod</code>, <code>\xintModTrunc</code>, which had been left out so far.</p></li> </ul> -<h3 id="bug-fixes-13">Bug fixes</h3> +<h3 id="bug-fixes-14">Bug fixes</h3> <ul> <li><strong>xintexpr</strong>: the mechanism for adjunction to the expression parsers of user defined functions was refactored and improved at previous release <code>1.3</code>: in particular recursive definitions became possible. But an oversight made these recursive functions quite inefficient (to remain polite.) This release fixes the problem.</li> </ul> @@ -517,7 +532,7 @@ License: LPPL 1.3c</code></pre> <ul> <li><strong>xintexpr</strong>: tacit multiplication extended to cases such as <code>3!4!5!</code> or <code>(1+2)3</code>.</li> </ul> -<h3 id="bug-fixes-14">Bug fixes</h3> +<h3 id="bug-fixes-15">Bug fixes</h3> <ul> <li><strong>xintcore</strong>: sadly, refactoring at <code>1.2l</code> of subtraction left an extra character in an inner macro causing breakage in some rare circumstances. This should not have escaped our test suite!</li> </ul> @@ -536,7 +551,7 @@ License: LPPL 1.3c</code></pre> <li><p><strong>xintexpr</strong>: <code>\xintdefvar</code>’s syntax is extended to allow simultaneous assignments. Examples: <code>\xintdefvar x1, x2, x3 := 1, 3**10, 3**20;</code> or <code>\xintdefiivar A, B := B, A 'mod' B;</code> for already defined variables <code>A</code> and <code>B</code>.</p></li> <li><p><strong>xintexpr</strong>: added <code>divmod()</code> to the built-in functions. It is associated with floored division, like the Python language <code>divmod()</code>. Related support macros added to <strong>xintcore</strong>, and <strong>xintfrac</strong>.</p></li> </ul> -<h3 id="bug-fixes-15">Bug fixes</h3> +<h3 id="bug-fixes-16">Bug fixes</h3> <ul> <li><p><strong>xintgcd</strong>: <code>\xintBezout{6}{3}</code> (for example) expanded to <code>{6}{3}{-0}{-1}{3}</code>, but the <code>-0</code> should have been <code>0</code>.</p></li> <li><p><strong>xintgcd</strong>: it still used macro <code>\xintiAbs</code> although the latter had been deprecated from <strong>xintcore</strong>.</p></li> @@ -579,7 +594,7 @@ License: LPPL 1.3c</code></pre> <ul> <li><strong>xintbinhex</strong>: all macros have been rewritten using techniques from the 1.2 release (they had remained unmodified since <code>1.08</code> of <code>2013/06/07</code>.) The new macros are faster but limited to a few thousand digits. The <code>1.08</code> routines could handle tens of thousands of digits, but not in a reasonable time.</li> </ul> -<h3 id="bug-fixes-16">Bug fixes</h3> +<h3 id="bug-fixes-17">Bug fixes</h3> <ul> <li><p>user manual: the <code>Changes</code> section wrongly stated at <code>1.2l</code> that the macros of <strong>xintbinhex</strong> had been made robust against non terminated input such as <code>\number\mathcode`\-</code>. Unfortunately the author fell into the trap of believing his own documentation and he forgot to actually implement the change. Now done.</p></li> <li><p>user manual: the PDF bookmarks were messed up.</p></li> @@ -600,7 +615,7 @@ License: LPPL 1.3c</code></pre> <p>The situation with expressions is unchanged: syntax such as <code>\xintexpr \numexpr1+2\relax</code> is illegal as the ending <code>\relax</code> token will get swallowed by the <code>\numexpr</code>; but it is needed by the <code>xintexpr</code>-ession parser, hence the parser will expand forward and presumably end with in an “illegal token” error, or provoke some low-level TeX error (N.B.: a closing brace <code>}</code> for example can not terminate an <code>xintexpr</code>-ession, the parser must find a <code>\relax</code> token at some point). Thus there must be in this example a second <code>\relax</code>.</p></li> <li><p>experimental code for error conditions; there is no complete user interface yet, it is done in preparation for next major release and is completely unstable and undocumented.</p></li> </ul> -<h3 id="bug-fixes-17">Bug fixes</h3> +<h3 id="bug-fixes-18">Bug fixes</h3> <ul> <li><p><strong>xintbinhex</strong>: since <code>1.2 (2015/10/10)</code>, <code>\xintHexToDec</code> was broken due to an undefined macro (it was in <code>xint.sty</code>, but the module by itself is supposedly dependent only upon <code>xintcore.sty</code>).</p></li> <li><p><strong>xintgcd</strong>: macro <code>\xintBezout</code> produced partially wrong output if one of its two arguments was zero.</p></li> @@ -619,7 +634,7 @@ License: LPPL 1.3c</code></pre> <li><p>added <code>\xintiSqrtR</code>, there was only <code>\xintiiSqrtR</code> alongside <code>\xintiSqrt</code> and <code>\xintiiSqrt</code> (<strong>xint</strong>).</p></li> <li><p>added non public <code>\xintLastItem:f:csv</code> to <strong>xinttools</strong> for faster <code>last()</code> function, and improved <code>\xintNewExpr</code> compatibility. Also <code>\xintFirstItem:f:csv</code>.</p></li> </ul> -<h3 id="bug-fixes-18">Bug fixes</h3> +<h3 id="bug-fixes-19">Bug fixes</h3> <ul> <li><p>the <code>1.2f</code> half-integer powers computed within <code>\xintfloatexpr</code> had a silly rounding to the target precision just <em>before</em> the final square-root extraction, thus possibly losing some precision. The <code>1.2k</code> implementation keeps guard digits for this final square root extraction. As for integer exponents, it is guaranteed that the computed value differs from the exact one by less than <code>0.52 ulp</code> (for inputs having at most <code>\xinttheDigits</code> digits.)</p></li> <li><p>more regressions from <code>1.2i</code> were fixed: <code>\xintLen</code> (<strong>xint</strong>, <strong>xintfrac</strong>) and <code>\xintDouble</code> (<strong>xintcore</strong>) had forgotten that their argument was allowed to be negative. A regression test suite is now in place and is being slowly expanded to cover more macros.</p></li> @@ -635,7 +650,7 @@ License: LPPL 1.3c</code></pre> </ol></li> <li><p>significant documentations tweaks (inclusive of suppressing things!), and among them two beautiful hyperlinked tables with both horizontal and vertical rules which bring the documentation of the <strong>xintexpr</strong> syntax to a kind of awe-inspiring perfection… except that implementation of some math functions is still lacking.</p></li> </ul> -<h3 id="bug-fixes-19">Bug fixes</h3> +<h3 id="bug-fixes-20">Bug fixes</h3> <ul> <li>fix two <code>1.2i</code> regressions caused by undefined macros (<code>\xintNthElt</code> in certain branches and <code>[list][N]</code> item extraction in certain cases.) The test files existed but were not executed prior to release. Automation in progress.</li> </ul> @@ -667,7 +682,7 @@ License: LPPL 1.3c</code></pre> <li><p>the documentation has again been (slightly) re-organized; it has a new sub-section on the Miller-Rabin primality test, to illustrate some use of <code>\xintNewFunction</code> for recursive definitions.</p></li> <li><p>the documentation has dropped the LaTeX “command” terminology (which had been used initially in 2013 for some forgotten reasons and should have been removed long ago) and uses only the more apt “macro”, as after all, all of <strong>xint</strong> is about expansion of macros (plus the use of <code>\numexpr</code>).</p></li> </ul> -<h3 id="bug-fixes-20">Bug fixes</h3> +<h3 id="bug-fixes-21">Bug fixes</h3> <ul> <li><code>\xintDecSplitL</code> and <code>\xintDecSplitR</code> from <strong>xint</strong> produced their output in a spurious brace pair (bug introduced in <code>1.2f</code>).</li> </ul> @@ -677,7 +692,7 @@ License: LPPL 1.3c</code></pre> <li><p>new macro <code>\xintNewFunction</code> in <strong>xintexpr</strong> which allows to extend the parser syntax with functions in situations where <code>\xintdeffunc</code> is not usable (typically, because dummy variables are used over a not yet determined range of values because it depends on the variables).</p></li> <li><p>after three years of strict obedience to <code>xint</code> prefix, now <code>\thexintexpr</code>, <code>\thexintiexpr</code>, <code>\thexintfloatexpr</code>, and <code>\thexintiiexpr</code> are provided as synonyms to <code>\xinttheexpr</code>, etc…</p></li> </ul> -<h3 id="bug-fixes-21">Bug fixes</h3> +<h3 id="bug-fixes-22">Bug fixes</h3> <ul> <li><p>the <code>(cond)?{foo}{bar}</code> operator from <strong>xintexpr</strong> mis-behaved in certain circumstances (such as an empty <code>foo</code>).</p></li> <li><p>the <strong>xintexpr</strong> <code>1.2f</code> <code>binomial</code> function (which uses <code>\xintiiBinomial</code> from <strong>xint.sty</strong> or <code>\xintFloatBinomial</code> from <strong>xintfrac.sty</strong>) deliberately raised an error for <code>binomial(x,y)</code> with <code>y<0</code> or <code>x<y</code>. This was unfortunate, and it now simply evaluates to zero in such cases.</p></li> @@ -717,7 +732,7 @@ License: LPPL 1.3c</code></pre> <li><p>(TeXperts only) the macros defined (internally) from <code>\xintdeffunc</code> et al. constructs do not incorporate an initial <code>\romannumeral</code> anymore.</p></li> <li><p>renewed desperate efforts at improving the documentation by random shuffling of sections and well thought additions; cuts were considered and even performed.</p></li> </ul> -<h3 id="bug-fixes-22">Bug fixes</h3> +<h3 id="bug-fixes-23">Bug fixes</h3> <ul> <li><p>squaring macro <code>\xintSqr</code> from <strong>xintfrac.sty</strong> was broken due to a misspelled sub-macro name. Dates back to <code>1.1</code> release of <code>2014/10/28</code> <code>:-((</code>.</p></li> <li><p><code>1.2c</code>’s fix to the subtraction bug from <code>1.2</code> introduced another bug, which in some cases could create leading zeroes in the output, or even worse. This could invalidate other routines using subtractions, like <code>\xintiiSquareRoot</code>.</p></li> @@ -731,7 +746,7 @@ License: LPPL 1.3c</code></pre> <li><p>a space in <code>\xintdeffunc f(x)<space>:= expression ;</code> is now accepted.</p></li> <li><p>documentation enhancements: the <em>Quick Sort</em> section with its included code samples has been entirely re-written; the <em>Commands of the xintexpr package</em> section has been extended and reviewed entirely.</p></li> </ul> -<h3 id="bug-fixes-23">Bug fixes</h3> +<h3 id="bug-fixes-24">Bug fixes</h3> <ul> <li><p>in <strong>xintfrac</strong>: the <code>\xintFloatFac</code> from release <code>1.2</code> parsed its argument only through <code>\numexpr</code> but it should have used <code>\xintNum</code>.</p></li> <li><p>in <strong>xintexpr</strong>: release <code>1.2d</code> had broken the recognition of sub-expressions immediately after variable names (with tacit multiplication).</p></li> @@ -744,7 +759,7 @@ License: LPPL 1.3c</code></pre> <li><p>tacit multiplication applies to more cases, for example (x+y)z, and always ties more than standard * infix operator, e.g. x/2y is like x/(2*y).</p></li> <li><p>some documentation enhancements, particularly in the chapter on xintexpr.sty, and also in the code source comments.</p></li> </ul> -<h3 id="bug-fixes-24">Bug fixes</h3> +<h3 id="bug-fixes-25">Bug fixes</h3> <ul> <li>in <strong>xintcore</strong>: release <code>1.2c</code> had inadvertently broken the <code>\xintiiDivRound</code> macro.</li> </ul> @@ -754,12 +769,12 @@ License: LPPL 1.3c</code></pre> <li><p>macros <code>\xintdeffunc</code>, <code>\xintdefiifunc</code>, <code>\xintdeffloatfunc</code> and boolean <code>\ifxintverbose</code>.</p></li> <li><p>on-going code improvements and documentation enhancements, but stopped in order to issue this bugfix release.</p></li> </ul> -<h3 id="bug-fixes-25">Bug fixes</h3> +<h3 id="bug-fixes-26">Bug fixes</h3> <ul> <li>in <strong>xintcore</strong>: recent release <code>1.2</code> introduced a bug in the subtraction (happened when 00000001 was found under certain circumstances at certain mod 8 locations).</li> </ul> <h2 id="b-20151029"><code>1.2b (2015/10/29)</code></h2> -<h3 id="bug-fixes-26">Bug fixes</h3> +<h3 id="bug-fixes-27">Bug fixes</h3> <ul> <li>in <strong>xintcore</strong>: recent release <code>1.2</code> introduced a bug in the division macros, causing a crash when the divisor started with 99999999 (it was attempted to use with 1+99999999 a subroutine expecting only 8-digits numbers).</li> </ul> @@ -770,7 +785,7 @@ License: LPPL 1.3c</code></pre> <li><p>added <code>\xintiiMaxof/\xintiiMinof</code> (<strong>xint</strong>).</p></li> <li><p>TeX hackers only: replaced all code uses of <code>\romannumeral-`0</code> by the quicker <code>\romannumeral`&&@</code> (<code>^</code> being used as letter, had to find another character usable with catcode 7).</p></li> </ul> -<h3 id="bug-fixes-27">Bug fixes</h3> +<h3 id="bug-fixes-28">Bug fixes</h3> <ul> <li>in <strong>xintexpr</strong>: recent release <code>1.2</code> introduced a bad bug in the parsing of decimal numbers and as a result <code>\xinttheexpr 0.01\relax</code> expanded to <code>0</code> ! (sigh…)</li> </ul> @@ -871,7 +886,7 @@ License: LPPL 1.3c</code></pre> <li><p><code>\xintthecoords</code> converts a comma separated list of an even number of items to the format expected by the <code>TikZ</code> <code>coordinates</code> syntax,</p></li> <li><p>completely new version <code>\xintNewExpr</code>, <code>protect</code> function to handle external macros. The dollar sign <code>$</code> for place holders is not accepted anymore, only the standard macro parameter <code>#</code>. Not all constructs are compatible with <code>\xintNewExpr</code>.</p></li> </ul> -<h3 id="bug-fixes-28">Bug fixes</h3> +<h3 id="bug-fixes-29">Bug fixes</h3> <ul> <li><p><code>\xintZapFirstSpaces</code> hence also <code>\xintZapSpaces</code> from package <strong>xinttools</strong> were buggy when used with an argument either empty or containing only space tokens.</p></li> <li><p><code>\xintiiexpr</code> did not strip leading zeroes, hence <code>\xinttheiiexpr 001+1\relax</code> did not obtain the expected result …</p></li> diff --git a/macros/generic/xint/Makefile b/macros/generic/xint/Makefile index 0c18379fe1..185090f99d 100644 --- a/macros/generic/xint/Makefile +++ b/macros/generic/xint/Makefile @@ -1,5 +1,5 @@ # Makefile for building and installing xint -# (C) 2014-2020 Jean-Francois Burnol +# (C) 2014-2021 Jean-Francois Burnol # distributed under LPPL 1.3c. # Tested with GNU Make 3.81 on Mac OS X Mavericks, diff --git a/macros/generic/xint/README.md b/macros/generic/xint/README.md index 7351ecd696..db85e4b78a 100644 --- a/macros/generic/xint/README.md +++ b/macros/generic/xint/README.md @@ -1,8 +1,8 @@ % README -% xint 1.4h -% 2021/05/27 +% xint 1.4i +% 2021/06/11 - Source: xint.dtx 1.4h 2021/05/27 (doc 2021/05/27) + Source: xint.dtx 1.4i 2021/06/11 (doc 2021/06/11) Author: Jean-Francois Burnol Info: Expandable operations on big integers, decimals, fractions License: LPPL 1.3c @@ -30,22 +30,22 @@ Usage on the command line One can use `xintexpr` as an interactive calculator on the command line. See the [xintsession](http://ctan.org/pkg/xintsession) package. - *2^100; - (@_1) 1267650600228229401496703205376 - *cos(1); - (@_2) 0.5403023058681397 - *&fp=32 + >>> 2^100; + @_1 1267650600228229401496703205376 + >>> cos(1); + @_2 0.5403023058681397 + >>> &fp=32 (/usr/local/texlive/2021/texmf-dist/tex/generic/xint/xintlog.sty) (/usr/local/texlive/2021/texmf-dist/tex/generic/xint/xinttrig.sty) fp mode (log and trig reloaded at Digits=32) - *cos(1); - (@_3) 0.54030230586813971740093660744298 - *3^1000; - (@_4) 1.3220708194808066368904552597521e477 - *&exact + >>> cos(1); + @_3 0.54030230586813971740093660744298 + >>> 3^1000; + @_4 1.3220708194808066368904552597521e477 + >>> &exact exact mode (floating point evaluations use 32 digits) - *3^1000; - (@_5) 132207081948080663689045525975... (trimmed for this README) + >>> 3^1000; + @_5 132207081948080663689045525975... (trimmed for this README) Installation ============ diff --git a/macros/generic/xint/sourcexint.pdf b/macros/generic/xint/sourcexint.pdf Binary files differindex 55fa981cdc..4d96446c21 100644 --- a/macros/generic/xint/sourcexint.pdf +++ b/macros/generic/xint/sourcexint.pdf diff --git a/macros/generic/xint/xint.dtx b/macros/generic/xint/xint.dtx index e8dceb81d4..c7d9ecd116 100644 --- a/macros/generic/xint/xint.dtx +++ b/macros/generic/xint/xint.dtx @@ -3,27 +3,27 @@ % Extract all files via "etex xint.dtx" and do "make help" % or follow instructions from extracted README.md. %<*dtx> -\def\xintdtxtimestamp {Time-stamp: <27-05-2021 at 11:42:22 CEST>} +\def\xintdtxtimestamp {Time-stamp: <11-06-2021 at 22:26:15 CEST>} %</dtx> %<*drv> %% --------------------------------------------------------------- -\def\xintdocdate {2021/05/27} -\def\xintbndldate{2021/05/27} -\def\xintbndlversion {1.4h} +\def\xintdocdate {2021/06/11} +\def\xintbndldate{2021/06/11} +\def\xintbndlversion {1.4i} %</drv> %<readme>% README %<changes>% CHANGE LOG -%<readme|changes>% xint 1.4h -%<readme|changes>% 2021/05/27 +%<readme|changes>% xint 1.4i +%<readme|changes>% 2021/06/11 %<readme|changes> -%<readme|changes> Source: xint.dtx 1.4h 2021/05/27 (doc 2021/05/27) +%<readme|changes> Source: xint.dtx 1.4i 2021/06/11 (doc 2021/06/11) %<readme|changes> Author: Jean-Francois Burnol %<readme|changes> Info: Expandable operations on big integers, decimals, fractions %<readme|changes> License: LPPL 1.3c %<readme|changes> %<*!readme&!changes&!dohtmlsh&!makefile> %% --------------------------------------------------------------- -%% The xint bundle 1.4h 2021/05/27 +%% The xint bundle 1.4i 2021/06/11 %% Copyright (C) 2013-2021 by Jean-Francois Burnol %<xintkernel>%% xintkernel: Paraphernalia for the xint packages %<xinttools>%% xinttools: Expandable and non-expandable utilities @@ -66,22 +66,22 @@ Usage on the command line One can use `xintexpr` as an interactive calculator on the command line. See the [xintsession](http://ctan.org/pkg/xintsession) package. - *2^100; - (@_1) 1267650600228229401496703205376 - *cos(1); - (@_2) 0.5403023058681397 - *&fp=32 + >>> 2^100; + @_1 1267650600228229401496703205376 + >>> cos(1); + @_2 0.5403023058681397 + >>> &fp=32 (/usr/local/texlive/2021/texmf-dist/tex/generic/xint/xintlog.sty) (/usr/local/texlive/2021/texmf-dist/tex/generic/xint/xinttrig.sty) fp mode (log and trig reloaded at Digits=32) - *cos(1); - (@_3) 0.54030230586813971740093660744298 - *3^1000; - (@_4) 1.3220708194808066368904552597521e477 - *&exact + >>> cos(1); + @_3 0.54030230586813971740093660744298 + >>> 3^1000; + @_4 1.3220708194808066368904552597521e477 + >>> &exact exact mode (floating point evaluations use 32 digits) - *3^1000; - (@_5) 132207081948080663689045525975... (trimmed for this README) + >>> 3^1000; + @_5 132207081948080663689045525975... (trimmed for this README) Installation ============ @@ -152,6 +152,40 @@ See `xint.pdf` for contact information. %</readme>-------------------------------------------------------- %<*changes>------------------------------------------------------- +`1.4i (2021/06/11)` +---- + +### Bug fixes + + - **xintexpr**: simultaneous assignments via `\xintdefvar` to 10 or + more variables was broken if the right hand side was an ople (of + length at least 10, as it had prior to this release to match the + number of variables). + + - **xintexpr**: the mechanism which allows to define variables with + names already in use for pre-existing functions was broken for some + built-in functions: those handling syntax with dummy variables + (currently `subs()`, `subsm()`, `subsn()`, `seq()`, `add()`, `mul()`, + `ndseq()`, `ndmap()`, `ndfillraw()`) and the so-called "pseudo" + functions (currently `bool()`, `togl()`, `protect()`, `qint()`, + `qfrac()`, `qfloat()`, `qraw()`, `random()`, `qrand()`, `rbit()`). + For example the function `seq()` was broken if the user had defined a + variable `seq`. + +### New features + + - **xintexpr**: the concept of simultaneous assignments is extended: in + case of more variables than values the extraneous variables do not + cause an error message but are simply set to the `nil` value; in case + of more values than variables, the last variable is defined to be the + ople concatenating all the extra values. + + - **xintexpr**: built-in functions usable with arbitrarily many + arguments such as `max()`, `gcd()`, or `len()` are now again usable + with a single numeric argument: since `1.4` a lone argument had to be + a `nutple` (which was automatically unpacked). It can now again be a + number. + `1.4h (2021/05/27)` ---- @@ -314,9 +348,9 @@ See `xint.pdf` for contact information. limited. - **xintexpr**: the output format of `\xintfloateval`, which uses - `\xintPFloat`, changed. The `\xintfloatexprPrintOne` macro now - expects to be used with either one or two arguments, the first one - being within brackets not braces. + `\xintPFloat`, changed. The `\xintfloatexprPrintOne` macro has + changed its signature to `[#1]{#2}` i.e. its first argument + will be within brackets not braces. - **xintexpr**: when using `\xintieval{[D]...}` optional `[D]` with a negative `D`, which triggers quantization to a positive power of ten, @@ -2499,14 +2533,14 @@ It is recommended to work with xint.dtx and Makefile moved to some otherwise empty temporary repertory. make help - prints this help using more. And it will extract all files - inclusive of README.md, CHANGES.md, and TeX macro files. + displays this help using the more pager. make helpless - prints this help using less. + displays this help using the less pager. make doc - produces all documentation, requires Latexmk and Pandoc. + produces all documentation, requires Latexmk and Pandoc, + (as well as grep and file output redirection ">") make all produces all documentation, then creates xint.tds.zip. @@ -2520,7 +2554,7 @@ make xint.pdf make sourcexint.pdf extracts files and produces sourcexint.pdf, using latex, makeindex - and dvipdfmx. Requires Latexmk. + and dvipdfmx. Requires Latexmk (as well as grep and file ">" redirection). make CHANGES.html requires Pandoc. @@ -2580,11 +2614,12 @@ TEXMF_home = $(shell kpsewhich -var-value TEXMFHOME) packages = xintkernel.sty xintcore.sty xint.sty xintfrac.sty xintexpr.sty\ xintgcd.sty xintbinhex.sty xintseries.sty xintcfrac.sty\ xinttools.sty xinttrig.sty xintlog.sty -# Makefile.mk is not included in $(extracted). Its extraction rule is in -# master Makefile file. We can not extract Makefile from xint.dtx via +# Makefile.mk is not included in $(extracted). Its extraction rule is in +# master Makefile file. We can not extract Makefile from xint.dtx via # docstrip, as .tex is always appended if a filename with no extension is -# specified. If "make -f Makefile.mk" is run, Makefile.mk will not be -# overwritten because tex xint.dtx does not extract it (etex xint.dtx does). +# specified. Notice that if "make -f Makefile.mk" is executed, this will +# actually extract again Makefile.mk which will be overwritten but this +# does not seem to be problematic. extracted = $(packages) xint.tex xint.ins README.md CHANGES.md doHTMLs.sh filesfortex = $(packages) filesforsource = xint.dtx Makefile @@ -2599,7 +2634,11 @@ all: $(extracted) doc xint.tds.zip @echo 'make all done.' $(extracted): xint.dtx - tex xint.dtx + etex xint.dtx + +xint-dates.txt: CHANGES.md + grep '^`[1-9].* (.*/.*/.*)`$$' CHANGES.md > xint-dates.txt + rm -f sourcexint.dvi doc: xint.pdf sourcexint.pdf CHANGES.html @echo 'make doc done.' @@ -2608,7 +2647,7 @@ xint.pdf: xint.dtx xint.tex $(xint_cmd) dvipdfmx xint.dvi -sourcexint.pdf: xint.dtx xint.tex +sourcexint.pdf: xint.dtx xint.tex xint-dates.txt $(sourcexint_cmd) dvipdfmx sourcexint.dvi @@ -2669,7 +2708,7 @@ clean: xint.fls xint.fdb_latexmk cleanall: clean - rm -f $(extracted) CHANGES.html \ + rm -f $(extracted) CHANGES.html xint-dates.txt \ xint.pdf sourcexint.pdf xint.tds.zip xint.zip Makefile.mk %</makefile>$----------------------------------------------------- %<*dohtmlsh>------------------------------------------------------ @@ -2689,24 +2728,30 @@ pandoc -o CHANGES.html -s --toc -V highlighting-css=' body{margin-left : 10%; %</dohtmlsh>------------------------------------------------------ %<*drv>----------------------------------------------------------- +%% Extracting files (but you have done that already probably): +%% - etex xint.dtx +%% +%% To produce manually xint.pdf from extracted xint.tex (and other files): +%% - latex xint.tex (thrice) +%% - dvipdfmx xint.dvi +%% Or xelatex thrice on xint.tex, or pdflatex thrice (produces bigger sized +%% pdf). +%% +%% To produce manually sourcexint.pdf from extracted xint.tex (and other files): +%% - grep '^`[1-9].* (.*/.*/.*)`$' CHANGES.md > xint-dates.txt +%% - latexmk -jobname=sourcexint\ +%% -latex="latex %O \\\\chardef\\\\dosourcexint=1 \\\\input{%S}"\ +%% xint.tex +%% - dvipdfmx sourcexint.dvi %% -%% To produce manually xint.pdf from xint.tex: -%% - latex (thrice) then dvipdfmx, -%% - or xelatex/pdflatex thrice. +%% (quoting in the above may need shell-dependant changes) %% -%% To produce manually sourcexint.pdf from xint.tex: -%% (latexmk argument quoting may need shell-dependant changes) -%% latexmk -jobname=sourcexint\ -%% -latex="latex %O \\\\chardef\\\\dosourcexint=1 \\\\input{%S}"\ -%% xint.tex -%% dvipdfmx sourcexint.dvi +%% To get xint.pdf to include also the source code: +%% - replace 1 by 0 in \chardef\NoSourceCode line below, +%% - make clean then make xint.pdf %% -%% To get xint.pdf to include the source code and indices: -%% - etex xint.dtx (this will regenerate this file), -%% - replace 1 by 0 in \chardef line below, -%% - make clean -%% - make xint.pdf -%% This will use latexmk. Without it execute latex thrice then dvipdfmx. +%% This will use latexmk. Without it execute latex thrice on xint.tex then +%% dvipdfmx. Don't forget producing xint-dates.txt via the grep command. \NeedsTeXFormat{LaTeX2e} \ProvidesFile{xint.tex}% [\xintbndldate\space v\xintbndlversion\space driver file for xint documentation (JFB)]% @@ -2722,7 +2767,8 @@ pandoc -o CHANGES.html -s --toc -V highlighting-css=' body{margin-left : 10%; ^^Bfi^^Begroup \chardef\noetex 0 \ifx\numexpr\undefined\chardef\noetex 1 \fi -\ifnum\noetex=1 \chardef\extractfiles 0 % extract files, then stop +% changed 2021/05/30: do not extract files at all if not using etex +\ifnum\noetex=1 \chardef\extractfiles 3 % no extract, no typeset \else \ifx\ProvidesFile\undefined \chardef\extractfiles 0 % no LaTeX2e: etex, xetex, ... on xint.dtx @@ -2778,6 +2824,13 @@ pandoc -o CHANGES.html -s --toc -V highlighting-css=' body{margin-left : 10%; \Msg{*^^J}% \Msg{********************************************************************^^J}% }% +\ifx\XeTeXinterchartoks\undefined\else + \expandafter\def\expandafter\MessageDeFin\expandafter{\MessageDeFin +\Msg{* ATTENTION! extraction with xetex must be made with -8bit option.^^J}% +\Msg{* Extracted file Makefile.mk is invalid if this was not the case.^^J}% +\Msg{********************************************************************^^J}% +}% +\fi \begingroup \input docstrip.tex \askforoverwritefalse @@ -2786,9 +2839,9 @@ pandoc -o CHANGES.html -s --toc -V highlighting-css=' body{margin-left : 10%; \file{README.md}{\from{xint.dtx}{readme}} \file{CHANGES.md}{\from{xint.dtx}{changes}} % pure tex will use ^^I notation for TAB character, don't want that. - % there is a problem with xelatex, as it generates ^^I also. - \ifnum\noetex=1 \else\ifx\XeTeXinterchartoks\undefined - \file{Makefile.mk}{\from{xint.dtx}{makefile}}\fi\fi + % anyway, since 2021/05/30, tex xint.dtx has been made a no-op. + % there is a problem with xelatex, it generates ^^I if not with -8bit + \file{Makefile.mk}{\from{xint.dtx}{makefile}} \file{doHTMLs.sh}{\from{xint.dtx}{dohtmlsh}} \usepreamble\defaultpreamble \usepostamble\defaultpostamble @@ -2810,6 +2863,14 @@ pandoc -o CHANGES.html -s --toc -V highlighting-css=' body{margin-left : 10%; \ifnum\extractfiles=0 % no LaTeX, files now extracted. Stop. \MessageDeFin\expandafter\end \fi +\ifnum\extractfiles=3 % + \newlinechar10 +\errhelp{Extraction must be done via an engine with e-TeX extensions.^^J% + Please try again, using etex rather.^^J% + (if with xetex, use -8bit option).}% +\errmessage{Extraction aborted (must be done with etex)}% +\expandafter\end +\fi % From this point on, run is necessarily with e-TeX. % Check if \MessageDeFin got defined, if yes put it at end of run. \ifdefined\MessageDeFin\AtEndDocument{\MessageDeFin}\fi @@ -4033,7 +4094,7 @@ pdfpagemode=UseNone,% \put(10.5cm,14.85cm) {\makebox(0,0) {\resizebox{17cm}{!}{\vbox - {\hsize 8cm\Huge\baselineskip.8\baselineskip\color{black!10}% + {\hsize 8cm\Huge\baselineskip.8\baselineskip\color{black!5}% \specialprintnumber{F(1250)=}% \specialprintnumber{\Fibonacci{1250}}}\par}% }% @@ -4054,7 +4115,7 @@ pdfpagemode=UseNone,% text width=6em, text centered, rounded corners, minimum height=4em] \tikzstyle{line} = [draw, line width=1pt, color=black!30] -\vspace*{\stretch{0.3333}} +%\vspace*{\stretch{0.1666}} \begin{figure}[ht!] \phantomsection\label{dependencygraph} @@ -4112,7 +4173,7 @@ pdfpagemode=UseNone,% \end{tikzpicture}}\bigskip \end{figure} -\vspace{2\baselineskip} +\vspace{\baselineskip} \begin{addmargin}{2cm} \normalfont\footnotesize Dependency graph for the @@ -4127,14 +4188,19 @@ pdfpagemode=UseNone,% separate (\LaTeX{} only) package by the author which uses (by default) \xintcorename as its mathematical engine. - \ctanpackage{polexpr} is a - separate (\LaTeX{} only) package by the author which requires \xintexprname. + \ctanpackage{polexpr} handles definitions and algebraic operatione on + one-variable polynomials, as well as root localization to arbitrary + precision. It works both with Plain \TeX\ and with \LaTeX. - \xinttrigname and \xintlogname are loaded automatically by \xintexprname; they - will refuse to be loaded directly (but see \csbxint{reloadxinttrig}). + \xinttrigname and \xintlogname are loaded automatically by \xintexprname; + they can not be loaded directly via a separate |\usepackage| (in \LaTeX). \ctanpackage{poormanlog} is a \TeX{} and \LaTeX{} package by the author which is loaded automatically by \xintlogname. + + \ctanpackage{xintsession} is invoked on the command line as |etex + xintsession| (or, if available, |rlwrap etex xintsession|). It loads + \xintbinhexname automatically (but this is not indicated above graphically). \par \end{addmargin} @@ -4180,12 +4246,6 @@ cosine, ...). The math functions are implemented up to \dtt{62} digits of precision. The square root (as well of course as the four operations) achieve correct rounding in arbitrary precision. -\medskip -The formatted source code is available in file |sourcexint.pdf| -(|texdoc sourcexint|). - -\medskip - The syntax to modify the precision used for floating point evaluations is \begin{everbatim} \xintDigits*:= <Number>; @@ -4199,45 +4259,48 @@ The tables of the built-in will give a quick overview of the available syntax. The simplest way to test the syntax is to\footnote{I am assuming here Mac OS or Linux, adapt to your environment} work interactively on the command line -(this feature is available since April 2021): +(this feature is available since April 2021, the version of +\ctanpackage{xintsession} used here is |1.3a|): \begin{everbatim} rlwrap etex xintsession -[...hit RET once...] +[...welcome banner...] Magic words: `&pause' (or `;'), `&help', `&bye', `&exact', `&fp', `&int', `&pol'. - Say e.g. `&fp=24' to activate floating point mode with Digits=24. - Starting in exact mode (floating point evaluations use 16 digits) -(Please type a command or say `\end') -*2^100; -(@_1) 1267650600228229401496703205376 -*cos(1); -(@_2) 0.5403023058681397 -*&fp=32 + + \jobname is xintsession + Transcript will go to log and to xintsession-210609_12h00.tex +Starting in exact mode (floating point evaluations use 16 digits) +>>> 2^100; +@_1 1267650600228229401496703205376 +>>> cos(1); +@_2 0.5403023058681397 +>>> &fp=32 (/usr/local/texlive/2021/texmf-dist/tex/generic/xint/xintlog.sty) (/usr/local/texlive/2021/texmf-dist/tex/generic/xint/xinttrig.sty) fp mode (log and trig reloaded at Digits=32) -*cos(1); -(@_3) 0.54030230586813971740093660744298 -*3^1000; -(@_4) 1.3220708194808066368904552597521e477 -*&exact +>>> cos(1); +@_3 0.54030230586813971740093660744298 +>>> 3^1000; +@_4 1.3220708194808066368904552597521e477 +>>> &exact exact mode (floating point evaluations use 32 digits) -*3^1000; -(@_5) 1322070819480806636890455259752144365965422032752148167664920368226828 -5973467048995407783138506080619639097776968725823559509545821006189118653427252 -5795367402762022519832080387801477422896484127439040011758861804112894781562309 -4438061566173054086674490506178125480344405547054397038895817465368254916136220 -8302685637785822902284163983078878969185564040848989376093732421718463599386955 -1676501894058810906042608967143886410281435038564874716583201061436613217310276 -890285522000 -*&bye +>>> 3^1000; + +@_5 13220708194808066368904552597521443659654220327521481676649203682268285 +9734670489954077831385060806196390977769687258235595095458210061891186534272525 +7953674027620225198320803878014774228964841274390400117588618041128947815623094 +4380615661730540866744905061781254803444055470543970388958174653682549161362208 +3026856377858229022841639830788789691855640408489893760937324217184635993869551 +6765018940588109060426089671438864102814350385648747165832010614366132173102768 +902855220001 +>>> &bye Did I say something wrong? -Session transcript written on xintsession-210509_14h55.tex +Session transcript written on xintsession-210609_12h00.tex + ) No pages of output. Transcript written on xintsession.log. \end{everbatim} - \medskip Warning: I don't have the time to maintain perfectly such large documentation. @@ -4384,6 +4447,17 @@ support is needed... For bugfixes and possibly more details check |CHANGES.html|: \centeredline{|texdoc --list xint|} \begin{itemize} +\item The concept of simultaneous assignments is extended:\NewWith{1.4i} in + case of more variables than values the extraneous variables do not cause an + error message but are simply set to the |nil| value; in case of more values + than variables, the last variable is defined to be the ople concatenating + all the extra values. See \csbxint{defvar}. + +\item Built-in\NewWith{1.4i} functions usable with arbitrarily many arguments + such as \func{max}, \func{gcd}, or \func{len} are now again usable with a + single numeric argument: since |1.4| a lone argument had to be a |nutple| + (which was automatically unpacked). It can now again be a number. + \item \csbxint{TeXfromSci}\NewWith{1.4g} \item The most important feature is at |1.4e| the extended range and accuracy @@ -4416,11 +4490,15 @@ For bugfixes and possibly more details check |CHANGES.html|: \item The optional argument |[D]| to \csbxint{iexpr} (or \csbxint{ieval}) can be negative, with about the same meaning as the non-negative case, i.e. - rounding to an integer multiple of |1e-D|. + rounding to an integer multiple of |1e-D|. But attention that at |1.4f|, + for |D<0|, this is now interpreted as the rounded quotient by |1e-D| (no + trailing zeros appended, no scientific exponent either). - \item The same applies to the functions \func{trunc} and \func{round}. And - matching updates to \csbxint{Trunc}, \csbxint{Round}, \csbxint{iTrunc}, - and \csbxint{iRound}. + \item Also the second argument of \func{trunc} and \func{round} can be + negative (but then it enacts quantization, e.g |trunc(1234,-2)| produces + \dtt{\xinteval{trunc(1234,-2)}}. Matching updates to the support + macros \csbxint{Trunc}, \csbxint{Round}, \csbxint{iTrunc}, and + \csbxint{iRound}. \item Support by \func{add} and \func{mul} for \keyword{omit}, \keyword{abort} and \func{break}.% @@ -4475,7 +4553,7 @@ author a few decades to finish absorbing Python/NumPy. \end{itemize} \end{framed} -\subsection{Known bugs/features (last updated at \texttt{1.4g})} +\subsection{Known bugs/features (last updated at \texttt{1.4i})} \begin{description} \item[if(100>0,(100,125),(100,128)) breaks my code:] @@ -4538,10 +4616,20 @@ author a few decades to finish absorbing Python/NumPy. (although here this relies on output format of |\xinteval| using integer notation with no decoration in this case). - \item[{\detokenize{seq(1e-i,i=1..5)} crashes}] + \item[{seq(1e-i,i=1..5) crashes}] % Not clear if bug or feature. Use |seq(1e\xinteval{-i},i=1..5)| or, as a possibly faster way |seq(1e\xintiieval{-i},i=\xintiiexpr1..5\relax)|. + + \item[{omit/abort if nested and not last in the sub-expression cause a crash}] +% + For example |seq(subs((i)?{i}{abort},t=i)+10, i=-2, -1, 0, 1)| crashes, due + to the presence of the |+10|. This is a longstanding limitation, applying + ever since |omit/abort| were added to the syntax at |1.1|. Even without + the |+10| the nested case was broken by a |1.4| regression and got fixed + only at |1.4h|. The non-nested case |seq((i)?{i}{abort}+10, i=-2, -1, 0, + 1)| works and the «must be last in expression if nested» limitation is + currently considered a feature. \end{description} The list stops here, but there are certainly other pending bugs in my bug-log, @@ -4613,98 +4701,183 @@ The rendering here uses extra decoration. \emph{Skip this on first reading, else you will never start using the package.} \fbox{SKIP THIS!} (understood?) -In this section I will describe a mathematical terminology appropriate to -understand the core functioning of the package in so far as it regards its -numerical mode of operation. The description requires some adaptations to -also cover the functioning during function declarations and this is not -covered here. +In this section I will describe a mathematical terminology which models +how the parser handles the input syntax with numbers, commas, and brackets, +and how it maps internally to \TeX\ specific concept, particularly braces and +macro arguments. -We have \emph{atoms}, which represent numeric data. In \TeX{} syntax such -\emph{atoms} are always braced, more precisely, currently they look like -\dtt{\{raw xintcore or raw xintfrac format within \TeX{} braces\}}. Such -\TeX{} braces are not to be confused with set-theoretical braces: -\emph{atoms} are \emph{elements} and not \emph{sets}. +\etocsetnexttocdepth{subsubsection} +\localtableofcontents + +\subsubsection{Base terminology} + +We start with a set $\mathcal{A}$ of \emph{atoms}, which represent numeric +data. In \TeX{} syntax such \emph{atoms} are always braced, more precisely, +currently they look like +% +\centeredline{\dtt{\{raw format within \TeX{} braces\}}} +% +The \TeX{} braces are not set-theoretical braces here, they are simply used +for \TeX nical reasons (one could imagine using rather some terminator token, +but ultimately support macros for built-in and user defined functions rely on +\TeX\ macros with undelimited parameters, at least so far). Our category $\mathcal{C}$ of «oples» is the smallest collection of \emph{totally ordered finite sets} verifying these properties: \begin{enumerate} -\item The empty set \dtt{$\emptyset$} belongs to $\mathcal{C}$. -\item Each singleton set whose element is an atom qualifies as an - \emph{ople}. +\item The empty set \dtt{$\emptyset$} is an \emph{ople}, i.e.\@ it belongs to + $\mathcal{C}$. +\item Each singleton set \dtt{$\{O\}$} whose element \dtt{$O$} is either an + \emph{atom} $a\in\mathcal{A}$ or an \emph{ople} qualifies as an \emph{ople}. \item $\mathcal{C}$ is stable by concatenation. -\item If \dtt{O} is an \emph{ople}, then the singleton \dtt{\{O\}} having - \dtt{O} as unique element is also an \emph{ople}. \end{enumerate} Notes: \begin{itemize} \item -We denote the empty set \dtt{$\emptyset$} by \emph{nil}. There is +We denote the empty set \dtt{$\emptyset$} by \emph{nil}.% +% +\footnote{There is actually a built-in variable with this name. At |1.4|, |\xintexpr\relax| is -legal and also generates the \emph{nil}. +legal and also generates the \emph{nil}.} + +\item It is convenient to accept the empty set as being also an + \emph{atom}. If this is done, then we may refer to the original + \emph{atoms} (elements of $\mathcal{A}$) as \emph{non empty numerical data}. \item Concatenation is represented in the syntax by the comma. Thus repeated commas are like only one and |nil| is a neutral element. -\item -A singleton \emph{ople} \dtt{\{atom\}} whose single element is an atom -is called a \emph{number}. +\item A singleton \emph{ople} \dtt{$\{a\}$} whose single element is a + (non-empty) \emph{atom} is called a \emph{number}.% +% + \footnote{This has to be taken in a general sense, for example with + \ctanpackage{polexpr}, polynomials are represented by such «numbers».} +% \item -The operation of constructing \dtt{\{O\}} from the \emph{ople} \dtt{O} is +The operation of constructing \dtt{$\{O\}$} from the \emph{ople} \dtt{$O$} is called \emph{bracing} (set theory, \TeX), or \emph{bracketing} (\xintexprname input syntax, Python |lists|), or \emph{packing} (as a reverse to Python's -unpacking of sequence type objects). +unpacking of sequence type objects). In the expression input syntax it +corresponds to enclosing \dtt{$O$} within square brackets: \dtt{$[O]$}. -\item -A braced \emph{ople} is called a \emph{nutple}. Among them $\{nil\}$ is a bit -special. It is called the \emph{not-ple}. It is not |nil|! +\item A braced \emph{ople} is called a \emph{nutple}. Among them \dtt{\{nil\}} + is a bit special. It is called the \emph{not-ple}. It is not \dtt{nil}.% +% +\footnote{There is (experimental) a pre-defined «\dtt{None}» variable which + stands for the \emph{not-ple}. It can also be input as |[]|.} \end{itemize} -It is perhaps important to reflect on the following: - -\noindent The notation |3,5,7| can -be seen in two distinct but related ways: +Each \emph{ople} has a \emph{length} which is its cardinality as set. The +singleton |oples| are called \emph{one-ples}. There are thus two types of +\emph{one-ples}: \begin{itemize} -\item each one of |3|, |5|, |7| is an \emph{ople} (singleton) and |3,5,7| is their \emph{union} or rather \emph{concatenation} (order matters), -\item or each one of |3|, |5|, |7| refers to an \emph{atom} and |3,5,7| is an - enumeration of the atoms of the \emph{ople} it represents. -\end{itemize} -The second view is tempting, but recall that really the comma stands for -\emph{concatenation of totally ordered sets}, thus the first view is more -correct. This first view maps to \TeX{} notations where the value |3| is -stored as \dtt{\{\{3\}\}}. But under \csbxint{verbosetrue} regime, the -external brace pair, which is both a \TeX{} brace pair and a set-theoretical -notation gets removed. There only remains one, and what is shown is actually a -view of an \emph{atom}, where the braces are only \TeX{} braces. But more -complicated nested objects will have \TeX{} braces representing also -set-theoretical braces. If you are still here you can go on reading. - -Each \emph{ople} has a length which is its cardinality. The |oples| of length -1 are called \emph{one-ples}. There are two types of \emph{one-ples}: -\begin{itemize} -\item \emph{numbers}, -\item packed \emph{oples}: the \emph{nutples}. +\item \emph{numbers} \dtt{$\{a\}$}, $a \in \mathcal{A}$, +\item \emph{nutples} \dtt{$\{O\}$}, $O \in \mathcal{C}$. \end{itemize} -As said before the \emph{not-ple} |{{}}| is special. It can be input as -|[]|. Recall that a \emph{number} as an \emph{ople} is a singleton whose sole -element is an \emph{atom}. It is convenient to put the empty set |nil| on the -same footing as \emph{atoms}. Then the \emph{not-ple} is analogous to an -\emph{empty number}. - -We say that the empty set |nil| and \emph{atoms} are \emph{leaves}. Indeed, we -can associate with any \emph{ople} a tree. The root is the ople. In the case -of the |nil|, there is nothing else than the root, which we then consider also -a \emph{leaf}. Else the children at top level are the successive items of the -ople. Among the items some are \emph{atoms} giving \emph{leaves} of the tree, -others are \emph{nutples} which in turn have children. In the special case of +If we consider the empty set |nil| on the same footing as |atoms|, the two +types have only one common object which is the \emph{not-ple}. As a rule +arithmetic operations will either break or silently convert the \emph{not-ple} +to the zero value: +\begin{everbatim*} +\xinteval{3+[], 5^[], 10*[]} +\end{everbatim*}. +But attention that \csbxint{iieval} in contrast to \csbxint{eval} is broken by +such inputs. + +\subsubsection{Items (and sub-items) versus elements} + +In order to illustrate these concepts, let us consider how one should +interpret notation such as |3,5,7,9| when it arises in an +\csbxint{expr}|ession|: +\begin{description} +\item[tempting vocabulary:] Each of |3|, |5|, |7|, and |9| is an \emph{item}, or + \emph{element} of the (comma separated) \emph{list}. In other terms we have + here a list with 4 items. +\item[rigorous vocabulary:] each one of |3|, |5|, |7|, |9| stands for an + \emph{ople} (of the \emph{one-ple} type) and |3,5,7,9| stands for their \emph{concatenation}. +\end{description} +It is important to understand that in an \csbxint{expr}|ession|, there is no +difference between |3,5,7| and |3,,,,5,,,,,,,,,7|. So the view of the comma +as separator is misleading. In other terms, the comma is NOT a separator but +the (associative) operator of concatenation of totally ordered sets, and the +number |3| for example represents a (singleton) set. + +If we want to refer to |3| or |5| or |7| or |9| as «the items of the +(open) list |3,5,7,9|» (and probably this documentation already has such +utterances, due to legacy reasons from the pre-|1.4| internal model), we +\emph{must} realize that this clashes with using the word \emph{item} as +synonymous to \emph{element} in the set-theoretical sense. + +To repeat, any ople \dtt{$O$} is a finite totally ordered set: if not the empty +set, it has elements \dtt{$a_1$}, \dots, \dtt{$a_k$}, and the above means that +its \emph{items} are the singleton oples (aka one-ples) \dtt{$I_1=\{a_1\}$}, +\dots, \dtt{$I_k=\{a_k\}$}. Each \dtt{$a_j$} may be an |atom|, then +\dtt{$I_j$} is a |number|, or an |ople| (possibly the empty set), then +\dtt{$I_j$} is a |nutple| whose depth is one more then the one of the ople +\dtt{$a_j$}. + +Thus we can refer to «items» but must then understand they are not «elements»: +«items» are «singleton sub-sets». The length of an ople is the number of its +items. It is tempting to use «sub-item» to keep in mind they are «sub-sets» +but this would again create confusion: a |nutple| has only one item which is +itself; and we need some terminology to refer to the individual numbers in the +|nutple| given in input as |[1,2,3]| for example. It is natural to refer to +|1|, |2|, |3| as «sub-items» of |[1,2,3]| as the latter may be an «item» (it +is in particular an «item» of itself, the unique one at that). + +We distinguish the |oples| of length zero (there is only one, the empty set) +or at least two as those which can never be an «item». Those of length one, +the |one-ples|, are exactly those which can be «items». Among them some may +have «sub-items», they are the |nutples| with the exception of the |not-ple|, +others can't, they are the |numbers| and the |not-ple| (whose input syntax is +either |[]| or the variable |None|).% +% +\footnote{% +A note on the \csbxint{verbosetrue} regime: for a variable defined to be +|3,5,7,9|, it will say that its value is |{3}{5}{7}{9}|, because it does not +keep the external set-theoretical braces. The braces here are only \TeX{} +braces, and |{3}| is an |atom|. The |number| would be |{{3}}| with the +external braces being set-theoretical and also used internally as \TeX{} +braces. From the four numbers |{{3}}|, ..., |{{9}}| concatenation gives +|{{3}{5}{7}{9}}|, which is the |ople| |3,5,7,9|. But the log view drops +deliberately the external braces. If the variable is defined to be the +|nutple| |[3,5,7,9]|, then the log view will be |{{3}{5}{7}{9}}| (up to +details on how exactly the numeric quantities are coded) and the actual +internal \TeX{} entity will be |{{{3}{5}{7}{9}}}|, where the two external +layers of braces are both set-theoretical and \TeX nical braces.} + + +\subsubsection{Oples as trees} + +We say that the empty set |nil| and \emph{atoms} are \emph{leaves}. + +We associate with any \emph{ople} a tree. The root is the ople. In the case of +the |nil| ople, there is nothing else than the root, which we then consider +also a \emph{leaf}. Else the children at top level are the successive +\emph{elements} (not «items»!) of the ople.% +% +\footnote{\label{fn:alttree}% + We could also consider a tree for which the children of the root node would + be its items and recursively; in that case the leaves would be |numbers| and + possibly the |None|. The tree of the |nil| would be the empty tree, the tree + of |None| would have a single node and no edges. Such a tree would match + the input syntax (of course applying the rule that iterated commas are like + only one). The tree which is described in this section matches more + directly the internal syntax, hence is more useful to the author, who is + also the sole reader who extracts some benefit from reading this + documentation once in a while.} +% +Among the elements some are \emph{atoms} giving \emph{leaves} of the tree, +others are \emph{nutples} which in turn have children. In the special case of the \emph{not-ple} we consider it has a child, which is the empty set and this -why we consider the empty set |nil| a \emph{leaf}. We then proceed -recursively. We thus obtain from the root \emph{ople} a tree whose vertices -are either \emph{oples} or \emph{leaves}. Only the empty set |nil| is both a -\emph{leaf} and an \emph{ople}. +is why we consider the empty set |nil| to be also a potential \emph{leaf}. We +then proceed recursively. We thus obtain from the root \emph{ople} a tree +whose vertices are either \emph{oples} or \emph{leaves}. Only the empty set +|nil| is both a \emph{leaf} and an \emph{ople}. Considering the empty set |nil| as an \emph{atom} fits with the \xintexprname internal implementation based on \TeX: |nil| is an empty pair of braces |{}|, @@ -4713,18 +4886,18 @@ digits and other characters. We construct \emph{oples} by putting one after the other such constituents and bracing them, and then repeating the process recursively. -Considering the empty set as an \emph{atom} has also an impact on the -definition of the \emph{depth} (a.k.a as \emph{maximal dimension}) of an -\emph{ople}. For example the \emph{ople} $\{\{\}A_1A_2\}$ with three elements, -among them the empty set and two atoms is said to have depth $1$, or to have -maximal dimension $1$. And $\{\{\emptyset\}A_1A_2\}$ is of depth $2$ because -it has a leaf (the empty set) which is a child of a child of the -\emph{ople}. NumPy \emph{ndarrays} have a more restricted structure for -example $\{\{A_{00}A_{01}\}\{A_{10}A_{11}\}\}$ is a $2$-dimensional array, -where all leaves are at the same depth. When slicing empties the array from -its atoms, NumPy keeps the shape information but prints the array as -$[]$. This will not be the case with \xintexprname, which has no other way to -indicate the shape than display it. +It has also an impact on the definition of the \emph{depth} (a.k.a as +\emph{maximal dimension}) of an \emph{ople}. For example the \emph{ople} +$\{\emptyset A_1A_2\}$ with three elements, among them the empty set and two +atoms is said to have depth $1$, or to have maximal dimension $1$. And +$\{\{\emptyset\}A_1A_2\}$ is of depth $2$ because it has a leaf (the empty +set) which is a child of a child of the \emph{ople}. NumPy \emph{ndarrays} +have a more restricted structure for example +$\{\{A_{00}A_{01}\}\{A_{10}A_{11}\}\}$ is a $2$-dimensional array, where all +leaves are at the same depth. When slicing empties the array from its atoms, +NumPy keeps the shape information but prints the array as $[]$. This will not +be the case with \xintexprname, which has no other way to indicate the shape +than display it. \begin{everbatim*} \xinteval{[[],[]]} \end{everbatim*} @@ -4732,12 +4905,15 @@ indicate the shape than display it. \xinteval{[[0,1],[10,11]][:,2:]} \end{everbatim*} -«Set-theoretical» slicing of an \emph{ople} means replacing it by a -subset. This applies also if it is a \emph{number}. Then it can be sliced only -to itself or to the empty set (indeed it has only one element, which is an -atom). Similarly the \emph{not-ple} can only be sliced to give itself or the -empty set. And more generally a \emph{nutple} is a singleton so also can only -be set-sliced to either the empty set or itself. +\subsubsection{Ople slicing and indexing} +\label{sssec:opleslicing} + +«Set-theoretical» slicing of an \emph{ople} means replacing it with one of its +subsets. This applies also if it is a \emph{number}. Then it can be sliced +only to itself or to the empty set (indeed it has only one element, which is +an atom). Similarly the \emph{not-ple} can only be sliced to give itself or +the empty set. And more generally a \emph{nutple} is a singleton so also can +only be set-sliced to either the empty set or itself. \xintexprname extends «Python-like» slicing to act on \emph{oples}: \begin{itemize}[nosep] @@ -4753,10 +4929,10 @@ subset and repacking gives back the \emph{not-ple}. Slicing a general \emph{nutple} returns a \emph{nutple} but now of course in general distinct from the first one. -The syntax for Python slicing is to postfix a variable or a parenthesized ople -with |[a:b]|. See \autoref{ssec:lists} for more. There are never any -out-of-range errors when slicing or indexing. All operations are licit and -resolved by the |nil|, a.k.a. empty set. +The input syntax for Python slicing is to postfix a variable or a +parenthesized ople with |[a:b]|. See \autoref{ssec:lists} for more. There +are never any out-of-range errors when slicing or indexing. All operations +are licit and resolved by the |nil|, a.k.a. empty set. «Set-theoretical» item indexing of an \emph{ople} means reducing it to a subset which is a singleton. It is thus a special case of set-theoretical @@ -4779,24 +4955,26 @@ difference between the |[N]| extractor and the |[N:N+1]| slicer. But for \emph{oples} which are either |nil|, a \emph{number}, or of length at least 2, there is no difference. +\subsubsection{Nested slicing of oples} Nested slicing is a concept from NumPy, which is extended by \xintexprname to trees of varying depths. We have a chain of slicers and extractors. I will describe only the case of slicers and letting them act on a |nutple|. The -first slicer gives back a new |nutple|. The second slicer will be applied to -each of one of its remaining items. However some of them may be \emph{atoms} -or the empty set. In the NumPy context all leaves are at the same depth thus -this can happen only when we have reached beyond the last dimension -(axis). This is not permitted by NumPy and generates an error. \xintexprname -does not generate an error. But any attempt to slice an \emph{atom} or the -empty set (as element of its container) removes it. Recall we call them -\emph{leaves}. We can not slice leaves. We can only slice non-leaf items: such -items are necessarily |nutples|. The procedure then applies recursively. +first slicer gives back a new |nutple|. The second slicer will be applied to +each of one of its remaining elements. However some of them may be +\emph{atoms} or the empty set. In the NumPy context all leaves are at the +same depth thus this can happen only when we have reached beyond the last +dimension (axis). This is not permitted by NumPy and generates an error. +\xintexprname does not generate an error. But any attempt to slice an +\emph{atom} or the empty set (as element of its container) removes it. Recall +we call them \emph{leaves}. We can not slice leaves. We can only slice +non-leaf elements: such items are necessarily |nutples|. The procedure then +applies recursively. If we handle an extractor rather than a slicer, the procedure is similar: we can not extract out of an \emph{atom} or the empty set. They are thus removed. Else we have a |nutple|. It is thus unpacked and replaced by the -selected item. This item may be an atom or the empty set and any further +selected element. This element may be an atom or the empty set and any further slicer or extractor will remove them, or it is a |nutple| and the procedure applies with the next slicer/extractor. @@ -4806,20 +4984,57 @@ simply apply the first step as has been described previously and successive steps will only get applied to either \emph{nutples} or \emph{leaves}, the latter getting silently removed by any attempted operation. -One last thing. In the syntax of \xintexprname, variables as well as functions -have a name and a value. The value is an |ople|. We can always use a variable -whose value is an |ople| -in a function call, it will occupy the place of as many arguments as its -length indicates. But in a function declaration, the variables must stand for -|one-ples|, i.e. either |numbers| or |nutples|. - -The |*| unpacks a -|nutple|. The last positional argument in a function declaration can have a -special form |*|\meta{name}. This means that \meta{name} is a |nutple| which -receives as items all arguments in the function call beyond the first ones -corresponding to the function declaration. - -\medskip +\subsubsection{Function arguments versus variables} +\label{sssec:funcargs} + +In a function declaration with \csbxint{deffunc}, the call signature is parsed +as a comma separated list, so here it is not true that repeated commas are +like only one: repeated commas are not allowed and will break the function +declaration. + +When \xintexprname parses a function call, it first constructs the ople which +is delimited by the opening and closing parentheses, then it applies the +function body, after having mapped the successive items (not the elements) of +the parsed ople to the variables appearing in the function call +signature. Hence the arguments in the call signature stand for |one-ples| +(i.e. either |numbers| or |nutples|). + +Let me explain why we can not define a function |foo(A,B)| of two oples: the +function call will evaluate as an ople what is enclosed within the +parentheses. It is then impossible in general to split this uniquely into two +oples |A| and |B|, except if for example we know a priori the length of |A|. +We could imagine defining a declarative interface for a |foo(A,B)| with |A| +preset to have \dtt{37} items or at least a pre-defined number of items but +this is extraneous layer for a functionality no-one will use. + +The alternative would be to consider that declaring |foo(A,B)| means |A| will +pick-up always the first item and |B| all the remaining ones, and thus will be +an ople; here, there are some \TeX nical implementation reasons which have +dissuaded the author to do this. + +In its place, a special syntax |foo(A,*B)| for the declaration of the function +is available. It means that |B| stands for the |nutple| which +receives as items all arguments in the function call beyond the first one +already assigned to |A|. + +More generally, the last positional argument in a function declaration can +have the form |*|\meta{argname}. This then means that \meta{argname} +represents a |nutple| which will receive as items all arguments in the +function call remaining after the earlier positional arguments have been +assigned. The declared function body is free to again use the syntax +|*|\meta{argname} which will unpack it and thus produce the ople concatenating +all such optional arguments. + +With \csbxint{defvar} one can define a variable with value an |ople| of +arbitrary cardinality. Such a variable can be used in a function call, it +will then occupy the place of as many arguments as its cardinality (which is +its number of elements, hence of its associated items). For example if +function |foo| was declared as a function of 5 arguments |f(a,b,c,d,e)| it is +legitimate to use it as |f(A,B)| if |A| is an ople-valued variable of length +tree and |B| of length two. The actual arguments |a,b,c,d,e| will be made to +match the three items of |A| and the two items of |B|. + +\subsubsection{Final words on leaves} In case things were too clear, let's try to add a bit of confusion with an extra word on \emph{leaves}. When we discuss informally (particularly to @@ -4848,12 +5063,15 @@ $\{\{A_{00}A_{01}\}\{A_{10}A_{11}\}\}$ with atoms $A_{00}=\{1\}$, ..., being the Numbers may be called the \emph{leaves} of the \textbf{input}, but once parsed, the input becomes an \emph{ople} which is (morally) a tree whose leaves are \emph{atoms} (and the empty set). +This discussion can also be revisited with footnote +%%\footref{fn:alttree} +\ref{fn:alttree} in mind. -\medskip -I hope this is clear to everyone. If not, maybe time to say this section was -absolutely not needed to understand the rest of the manual, but I needed to -write it for my own satisfaction. Believe me, you need this section if you -want to write the underlying software! +\subsubsection{Farewell, thanks for your visit!} + +I hope this is clear to everyone. If not, maybe time to say this section is +not needed to understand almost all of the manual, but I needed to +write it to be able to maintain in future my own software. \subsection{The three parsers} @@ -4893,6 +5111,7 @@ for better readability. But the package currently provides no macros to let the output be formatted with such separators. Formatting of numeric output is apart from some minimal facilities such as +\csbxint{TeXfromSci}\NewWith{1.4g}, \csbxint{TeXFrac}, \csbxint{DecToString}, \csbxint{PRaw}, \csbxint{FracToSci} or \csbxint{PFloat} left to user macros or third-party packages% \begin{everbatim*} @@ -4934,10 +5153,7 @@ to user macros or third-party packages% sense only if |Q<P|). ATTENTION: the optional argument |[Q]| is to be located \emph{within} the braces at the start of the expression. - When |Q| is negative it means to round to |P+Q| digits only. Current - implementation of trigonometrical functions (\xinttrigname) is provisory and - does not use guard digits, using |[-2]| will trim the last two, probably - wrong, digits. + When |Q| is negative it means to round to |P+Q| digits only. On output, \csbxint{floateval} uses \csbxint{PFloat} for each number. This can be modified (cf.\@ \csbxint{floatexprPrintOne}). @@ -4958,12 +5174,7 @@ Two derived parsers: \item if |D>0|: the nearest fixed point number with |D| digits after the decimal mark, \item if |D=0|: the nearest integer, - \item if |D<0|: the\NewWith{1.4a} nearest multiple of |10^(-D)| (this case - is new with |1.4a| and uses scientific notation). - - At |1.4e| this was changed from using scientific notation on output to - inserting |-D| explicit zeroes, and at |1.4f| it is again changed to do neither! - \CHANGED{1.4f} + \item if |D<0|: the rounded quotient by |10^(-D)|.\CHANGED{1.4f} \end{itemize} ATTENTION: the optional argument |[D]| is to be located \emph{within} the braces at the start of the expression. @@ -5851,7 +6062,7 @@ Recall that this is NOT done automatically, for example when adding fractions. (for example when they got input in scientific notation). This function ignores the decimal part when doing the reduction. See \csbxint{PIrr}. \begin{everbatim*} -\xinttheexpr preduce(10e3/2), reduce(10e3/2)\relax +\xinttheexpr preduce(10e7/2), reduce(10e7/2)\relax \end{everbatim*} \funcdesc{abs} absolute value @@ -6393,29 +6604,18 @@ explicit |\xinteval| wrapping. \subsubsection{Functions with an arbitrary number of arguments} -At |1.4| \func{all}, \func{any}, \func{xor}, +The functions \func{all}, \func{any}, \func{xor}, \func{\textasciigrave+\textasciigrave}, \func{\textasciigrave\lowast\textasciigrave}, \func{max}, \func{min}, \func{gcd}, \func{lcm}, \func{first}, \func{last}, -\func{reversed} and \func{len} admit: -\begin{itemize} -\item at least two arguments, and then they operate as expected in the backwards - compatible way (notice that it is possible in \xintexprname to define - variables expanding to an |ople|, i.e. (at user level) an unpacked comma - separated list, |foo(ople)| thus falls into this category), -\item or only one argument,\IMPORTANT{} which then \emph{must} be a |nutple|, - i.e. a bracketed list (or a variable defined to hold such a - bracketed list, or a function producing such a |nutple|). The argument is then - automatically unpacked. - - In the specific case of \func{reversed} the output is then repacked so that +\func{reversed} and \func{len} work both with «open» and «packed» lists (aka |nutples|). + +Since |1.4|, when used with a single argument which is a |nutple|, it is automatically unpacked. +But from |1.4| to |1.4h| these functions could not be used with a single numeric argument: either they had at least two arguments, or only one and it had to be a |nutple|. At |1.4i| it is again possible to use them with a lone numeric argument.\NewWith{1.4i} + + In the specific case of \func{reversed} with a |nutple| argument the output is then repacked so that the output is a |nutple| if and only if the input was one (the reversal does not propagate to deeper nested |nutple|'s, it applies only at depth one). -\end{itemize} -The arguments of the functions doing computations on the arguments (such as -\func{gcd}) must be numerical, except if there is only one argument, and then -it must be a |nutple|. Prior to |1.4|, the functions worked also with a single -scalar argument, but this is now illegal. \begin{description} % [parsep=0pt,align=left, @@ -6528,7 +6728,7 @@ the case here. \funcdesc[x, y, ...]{len} computes the number of items in a comma separated list or inside a nutple (at first level only: it is not a counter of leaves). \begin{everbatim*} -\xinttheiiexpr len(1..50, [101..150], 1001..1050), len([1..10])\relax +\xinttheiiexpr len(37.5), len(1..50, [101..150], 1001..1050), len([1..10])\relax \end{everbatim*} \funcdesc[\lowast nutples]{zip} behaves\NewWith{1.4b} similarly to @@ -6710,13 +6910,13 @@ like extracting directly), but it is leaner to drop the extra «packing». We can illustrate its use with an expandable (!) implementation of the Brent-Salamin algorithm for the computation of $\pi$: \begin{everbatim*} -\xintDigits:= 87\relax -% Below 83 is 87-3-1 (3 guard digits, target 84=1+83 digits) and 43 is 84/2+1. +\xintDigits:= 87\relax % we target 84 digits, and use 3 guard digits \xintdeffloatfunc BS(a, b, t, p):= 0.5*(a+b), sqrt(a*b), t-p*sqr(a-b), \xintiiexpr 2p\relax; \xinteval {trunc(% I feel truncation is better than rounding to display decimals of π \xintfloatexpr iter(1, sqrt(0.5), 1, 1; % initial values +% this 43 is 84/2 + 1 (@[0]-@[1]<2e-43)?% stopping criteria; takes into account that the % exit computation (break() argument) doubles % number of exact digits (roughly) @@ -6724,6 +6924,7 @@ like extracting directly), but it is leaner to drop the extra «packing». {BS(@)}, % else do iteration i=1++) % This generates infinite iteration. The i is not used. \relax +% this 83 is 84 - 1 (there is a digit known to be 3 actually, before decimal mark) , 83)% closing parenthesis of trunc() }...% some dots following end of \xinteval argument \xintDigits:=16\relax @@ -6854,14 +7055,9 @@ legal. The |<integer>| must be a \TeX-allowable integer. First Fibonacci number at least |2^31| and its index % we use iterr to refer via @1 and @2 to the previous and previous to previous. \xinttheiiexpr iterr(0,1; (@1>=2^31)?{break(@1, i)}{@2+@1}, i=1++)\relax -\end{everbatim*} - -Note: the above example, up to |1.3f| used |break(i)| in place of current -|break(@1, i)|. This syntax looks in retrospect as having been a bug. -Starting with |1.4| the example does have to be written with |break(@1, i)|, -as |break(i)| conforming to intuition will only print the last |i| value. And -if one also wants the previous Fibonacci number one only has to use |break(@2, -@1, i)| for example. +\end{everbatim*}% +. If one also wants the previous Fibonacci number one only has to use |break(@2, +@1, i)| in the above example. \end{description} @@ -6928,8 +7124,10 @@ There are some breaking changes in the syntax at |1.4|,\CHANGED{1.4} because pre even allows nesting. We denote here by \emph{list} or \emph{sequence} a general \emph{ople}, either -given as a variable or explicitly. In the former case the parentheses are -optional. +given as a variable or explicitly. \emph{In the former case the parentheses are +optional}.% +% +\footnote{Even for an «open list», if it is given as a \emph{variable} then the indexing or slicing will not apply to its last item but to itself as an entity.} \begin{itemize} \item |(list)[n]| returns the |n+1|th item if |n>=0|. If |n<0| it enumerates @@ -6971,7 +7169,7 @@ from Python regarding its sequence types: \xintiiexpr [0..10][:6]\relax\ and \xintiiexpr [0..10][:-6]\relax \end{everbatim*} - \item |[list][n:]| suppresses the first |n| elements if |n>0|, or extracts + \item |(list)[n:]| suppresses the first |n| elements if |n>0|, or extracts the last \verb+|n|+ elements if |n<0|. \begin{everbatim*} \xintiiexpr (0..10)[6:]\relax\ and \xintiiexpr (0..10)[-6:]\relax @@ -7136,59 +7334,103 @@ which is not at all the presumably hoped for: Since release |1.1| it is possible to make an assignment to a variable name and let it be known to the parsers of \xintexprname. Since |1.2p| simultaneous -assignments are possible. +assignments are possible. Since |1.4| simultaneous assignments are possible with +a right-hand-side being a |nutple| which will be automatically unpacked. \begin{everbatim*} \xintdefvar myPi:=3.141592653589793238462643;% +$myPi = \xinteval{myPi}$\newline % (there is already built-in Pi variable) \xintdefvar x_1, x_2, x_3 := 10, 20, 30;% -\xintdefiivar List := seq(x(x+1)/2, x=0..10);% seq produces an «open» list -\xintdefiivar Nuple := ndmap(sqr, List);% ndmap produces a «bracketed» list -\xintdefiivar FourthPowers := ndmap(sqr, *Nuple);% "unpacking" is needed here. $x_1 = \xinteval{x_1}, x_2 = \xinteval{x_2}, x_3 = \xinteval{x_3}$\newline -$\pi^{100}\approx\xintfloateval{myPi^100}$ is evaluated \fbox{after} having rounded myPi -to the prevailing float precision (which here is the default \xinttheDigits)\newline -$\xintDigits:=20\relax \pi^{100}\approx\xintfloateval{myPi^100}$ (this one first -rounded the variable to 20 digits before evaluating its 100th power)\newline -Open List: \xintiieval{List}\newline -Nuple: \xintiieval{Nuple}\newline -FourthPowers: \xintiieval{FourthPowers}\par +\xintdefvar x_1, x_2, x_3 := [100, 200, 300];% +$x_1 = \xinteval{x_1}, x_2 = \xinteval{x_2}, x_3 = \xinteval{x_3}$\par \end{everbatim*} -By the way \xinttrigname defines indeed a variable |Pi|, but its value can be -modified at user level, with no impact whatsoever on the trigonometrical -functions. -Here is another example with simultaneous assignments: +Simultaneous assignments\NewWith{1.4i} with more variables than values do not +raise an error but simply set the extra variables to the \dtt{nil} value. +\begin{everbatim*} +\xintdefiivar a, b, c := [1, 2];% will be automatically unpacked +The value of a is \xinteval{a}, the one of b is \xinteval{b} and the one of c is \xinteval{c}. +\end{everbatim*} \begin{everbatim*} -\xintdefiivar A, B := 1500, 135;% -\xintloop -\xintifboolexpr{B} - {\xintdefiivar A, B := B, A 'mod' B;\iftrue} - {\iffalse} -\repeat -The last non zero remainder is \xintiiexpr A\relax. +\xintdefiivar a, b, c := 314;% +The value of a is \xinteval{a}, the one of b is \xinteval{b} and the one of c is \xinteval{c}. \end{everbatim*} -Note1: simultaneous assignments are more costly in terms of -memory impact. +Notice that \dtt{nil} variables must be used with caution as they break +arithmetic operations if used as operands to them. And they are not the same +as the \dtt{None} variables, which can also be input as |[]|. -Note2:\NewWith{1.4} in case of simultaneous assignments, the right hand side -will be automatically unpacked if necessary. +Simultaneous assignments\NewWith{1.4i} with less variables than values do not +raise an error but set the last variable to be the ople concatenating the +remaining values. +\begin{everbatim*} +\xintdefiivar seq := 1..10;% +\xintdefiivar a, seq := seq;% +\xintdefiivar b, seq := seq;% +\xintdefiivar c, d, seq := seq;% +The value of a is \xinteval{a}, the one of b is \xinteval{b}, the one of c is \xinteval{c}, +the one of d is \xinteval{d}, the one of seq is \xinteval{seq}. +\end{everbatim*} -For catcodes issues (particularly, for the semi-colon used to delimit the -fetched expression), see the discussion of \csbxint{exprSafeCatcodes}. -\begin{framed} +In the above we define a variable |seq| but there is a built-in +function \func{seq}. It is indeed allowed to use the same name for both a +variable and a function.% +% +\footnote{But until a bugfix added at release |1.4i|, some built-in function + names (those implementing syntax with dummy variables, and the so-called + «pseudo»-functions) were fragile under such overloading.} +But for safety we will unassign |seq| now: +\begin{everbatim*} +\xintunassignvar{a}\xintunassignvar{b}\xintunassignvar{c}\xintunassignvar{d}% +\xintunassignvar{seq}% +\end{everbatim*}% +Single letter names |a..z| and |A..Z| are pre-declared by the package for use +as a special type of variables called ``dummy variables''. Unnassigning them +restores this initial meaning. See further \csbxint{unassignvar} and +\csbxint{newdummy}. Since |1.4| even assigned variables can be used in the +call signatures of function declarations. + +Regarding the manipulation of an «open list» as above, there is no way +to obtain with only one use of the variable both its last item and the +reduction of the variable to its truncated self. One can do rather: +\begin{everbatim*} +\xintdefiivar mylist := 1..10;% +\xintdefiivar z, mylist := last(mylist), mylist[:-1];% +The value of z is \xinteval{z} and mylist is now \xinteval{mylist}.\par +\end{everbatim*} +This uses twice |mylist| and is about the same as doing it in two steps: +\begin{everbatim*} +\xintdefiivar w := last(mylist);% +\xintdefiivar mylist := mylist[:-1];% +The value of w is \xinteval{w} and mylist is now \xinteval{mylist}.% +\xintunassignvar{z}\xintunassignvar{w}\xintunassignvar{mylist}\par +\end{everbatim*} + +It is recommended generally speaking to work with «closed (i.e. bracketed) +lists» because only them and numbers can be arguments to functions (but see +\csbxint{deffunc} and the notion of variadic last argument). For more on the +Python-like slicing used above see \autoref{ssec:lists} and +\autoref{sssec:opleslicing}. For more information relative to variables +versus arguments see \autoref{sssec:funcargs}. + +\begin{itemize}[noitemsep] +\item For catcodes issues (particularly, for the semi-colon used to delimit + the fetched expression), see the discussion of \csbxint{exprSafeCatcodes}. +\item Both syntaxes |\xintdefvar foo := <expr>;| and |\xintdefvar foo = <expr>;| are accepted. -\end{framed} -Spaces in the variable name or around the equal sign are removed and are -immaterial. - -The variable names are expanded in an |\edef| (and stripped of spaces). +\item + Spaces in the variable name or around the equal sign are removed and are + immaterial. +\item + The variable names are expanded in an |\edef| (and stripped of spaces). Example: \begin{everbatim} \xintdefvar x\xintListWithSep{, x}{\xintSeq{0}{10}} := seq(2**i, i = 0..10);% \end{everbatim} This defines |x0|, |x1|, \dots, |x10| for future usage. +\end{itemize} Legal variable names are composed of letters, digits, |_| and |@| and characters. A variable name must start with a letter. Variable names starting @@ -7196,22 +7438,14 @@ with a |@| or |_| are reserved for internal usage.% % \footnote{The process of variable declaration does not check that these rules are met, and breakage will arise on use, if rules are not followed. For - example, prior to |1.4g|, using a variable which was previously illegally - declared with a name starting with a (normal, catcode 8) |_| would trigger an + example, prior to |1.4g|, using a variable (illegally) + declared with a name starting with a (normal, catcode 8) |_| triggered an infinite loop.} As |x_1x_2| or even |x_1x| are licit variable names, and as the parser does not trace back its steps, input syntax must be |x_1*x_2| if the aim is to multiply such variables. -Single letter names |a..z| and |A..Z| are pre-declared by the package for use -as special type of variables called ``dummy variables''. It is allowed to -overwrite their original meanings and assign them values. See further -\csbxint{unassignvar}. - -Since |1.4| even assigned variables can be used in the signature of -function declarations. - Using \csa{xintdefvar}, \csa{xintdefiivar}, or \csa{xintdeffloatvar} means that the variable value will be computed using respectively \csa{xintexpr}, \csa{xintiiexpr} or \csa{xintfloatexpr}. It can then be used in all three @@ -7229,12 +7463,10 @@ precision. So the variable holds the same value as would be printed via Prior to |1.4e|, this was the case only if the variable definition actually involved some computation. -The \csbxint{floatexpr}|..\relax| wrapper by itself induces no rounding. If +However the \csbxint{floatexpr}|..\relax| wrapper by itself induces no rounding. If it is encountered in the typesetting flow, the print-out will be rounded to \csbxint{theDigits} precision, but this is an effet of behaving like -\csbxint{floateval} in this context. But in itself, rounding happens only if -the expression involves operations; it will then be to the extended precision -decided by the extra guard digits (default: 2).\NewWith{1.4e} +\csbxint{floateval} in this context. \begin{everbatim*} % Since 1.4e, \xintdeffloatvar always rounds (to \xinttheDigits) \xintdeffloatvar e:=2.7182818284590452353602874713526624977572470936999595749669676;% @@ -7252,8 +7484,10 @@ decided by the extra guard digits (default: 2).\NewWith{1.4e} % tidbit: comparison operators do not pre-round, so 1.2345678 is not same as (1.2345678+0) % in low precision. \begingroup\xintDigits:=4;% with 2 guard digits, this makes 4+2=6 digits from "0+" rounding -4) \xintifboolfloatexpr{1.2345678 == 1.2345678+0} - {\error}{Different! Comparisons do not pre-round.}\par +4) \xintifboolfloatexpr{1.2345 == 1.23456} + {\error}{Different! Comparisons do not pre-round to Digits precision.}\newline +5) \xintifboolfloatexpr{1.2345 == 1.2345 + 0} + {\error}{Different! Right hand side rounded from operation, left hand side not rounded.}\par \endgroup \end{everbatim*} @@ -7372,29 +7606,6 @@ and it uses \csbxint{ensuredummy} to be certain everything is ok. \let\HOOKLOCALTOC\empty -\subsubsection{\csh{xintNewFunction}} -\label{xintNewFunction} - -This is syntactic sugar which allows to use notation of functions for what is -nothing more in disguise than a \TeX{} macro. Here is an example: -\begin{everbatim*} -\xintNewFunction {foo}[3]{add(mul(x+i, i=#1..#2),x=1..#3)} -\end{everbatim*} - -We now have a genuine function |foo()| of three variables which can -be used in \emph{all three parsers}. -\begin{everbatim*} -\xintexpr seq(foo(0, 3, j), j= 1..10)\relax -\end{everbatim*} - -Each time the created «macro-function» |foo()| will be encountered the -corresponding replacement text will get inserted as a sub-expression (of the -same type as the surrounding one), the macro parameters having been replaced -with the (already evaluated) function arguments, and the parser \emph{will - then have to parse the expression.} It is very much like a macro -substitution, but with parentheses and comma separated arguments (which can be -arbitrary expressions themselves). - \subsubsection{\csh{xintdeffunc}} \label{xintdeffunc} @@ -7424,18 +7635,22 @@ have gained experience in using this interface...): \item The function names are composed of letters, digits, underscores or |@| signs. A function name must start with a letter. It may be a single letter (see \autoref{sssec:overload}). -\item The variable names used in the function signature may be multi-letter - words.\NewWith{1.4} It is also allowed for them to already be in use for previously +\item The\NewWith{1.4} variable names used in the function signature may be multi-letter + words. It is also allowed for them to already be in use for previously declared variables. Their meanings will get restored for usage after the function declaration. -\item A function can have at most nine arguments. It can be defined as a +\item A function can be declared with at most nine arguments. It can be declared as a function with no arguments. -\item Recursive definitions are possible; for them to not generate error or +\item If\NewWith{1.4} in the function declaration the last argument is + prefixed by |*|, it stands for a |nutple| which will gather all arguments of + the function call beyond the first positional ones. See \autoref{sssec:funcargs} + for additional explanations on such «variadic» arguments. +\item Recursive\CHANGED{1.4} definitions are possible; for them to not generate error or fall in infinite loops, the use of the short-circuit conditionals |?| and - |??| is \emph{mandatory}.\CHANGED{1.4} -\item If a function is used in another definition it will check if it is + |??| is \emph{mandatory}. +\item If\CHANGED{1.4} a function is used in another definition it will check if it is applied to numerical arguments and if this is the case will expand - fully.\CHANGED{1.4} Prior to |1.4| one needed deprecated \csa{xintdefefunc} for this. But + fully. Prior to |1.4| one needed deprecated \csa{xintdefefunc} for this. But the latter is now but an alias for \csa{xintdeffunc}, the two have been merged. \item The previous item has an exception for functions with no arguments; they @@ -7550,7 +7765,7 @@ simultaneously! A special note on \func{subs}: it is and has always been hopeless in \csbxint{deffunc} context. All it does (if it works at all) after being malaxed by \csbxint{deffunc} is to copy over at the indicated places the \emph{recipe} to -compute something. Thus everywhere where that something is needed it will be +compute something. Thus at every location where that something is needed it will be evaluated from scratch again. Yes, this is disappointing. But... on the other hand the more general \func{seq} does work, or pretends to work. Let me illustrate to make thinks clear. We start with this: @@ -7735,6 +7950,36 @@ If true user defined variables (\csbxint{defvar}, ...) and functions well as macros obtained via \csbxint{NewExpr} et al.\@ have global scope. If false (default) they have local scope. +\subsubsection{\csh{xintNewFunction}} +\label{xintNewFunction} + +This is syntactic sugar which allows to use notation of functions for what is +nothing more in disguise than a \TeX{} macro. Here is an example: +\begin{everbatim*} +\xintNewFunction {foo}[3]{add(mul(x+i, i=#1..#2),x=1..#3)} +\end{everbatim*} + +We now have a genuine function |foo()| of three variables which can +be used in \emph{all three parsers}. +\begin{everbatim*} +\xintexpr seq(foo(0, 3, j), j= 1..10)\relax +\end{everbatim*} + +Each time the created «macro-function» |foo()| will be encountered the +corresponding replacement text will get inserted as a sub-expression (of the +same type as the surrounding one), the macro parameters having been replaced +with the (already evaluated) function arguments, and the parser \emph{will + then have to parse the expression.} It is very much like a macro +substitution, but with parentheses and comma separated arguments (which can be +arbitrary expressions themselves). + +It differs fundamentally from \csbxint{deffunc} as it realizes no pre-parsing +whatsoever of the associated sub-expression; using it shortens the input but +not the parsing time (which however is most of the time negligible compared to +actual numerical computations). Use it for syntax which \csbxint{deffunc} +does not parse successfully. + + \subsection{Examples of user defined functions} \subsubsection{Example with vectors and matrices} @@ -7974,11 +8219,14 @@ The sole macro is \csbxint{reloadxinttrig}. This package was first included in release |1.3e| (|2019/04/05|) of \xintexprname. It is automatically loaded by \xintexprname. -At |1.4e| (|2021/05/05|) the accuracy was significantly increased:\CHANGED{1.4e} formerly -the high-level user interface used to define the functions did not allow -operating with guard digits, so the last two digits were most of the time off -(at least the last digit). Now, some internal changes have fixed this problem -and the accuracy is high. Also it was extended up to \dtt{62} digits.\NewWith{1.4e} +At |1.4e| (|2021/05/05|) the accuracy was significantly +increased:\CHANGED{1.4e} formerly the high-level user interface used to define +the functions had as consequences that intermediate steps of the computations +could not operate with guard digits, and as a result so the last two digits +were most of the time off (at least the last one). Now, computations are done +internally in extended precision, and the accuracy is high up to the last +digits, with faithful rounding and high probability of correct rounding. And +the maximal number of digits was raised slightly to \dtt{62} digits. At \dtt{8} digits a special, faster, mode is used, which is less accurate. But faster. @@ -8661,12 +8909,8 @@ Since release |1.2f|, square root extraction achieves correct rounding in arbitrary precision. -The power -function in the expression parsers accepts integer exponents and also -half-integer exponents for float expressions.\footnote{Half-integer exponents - work inside expressions, but not via the \csbxint{FloatPower} macro.} -A preliminary implementation of fractional powers is available see -\xintlogname. Trigonometrical functions are available (\xinttrigname). +See \xintlogname for fractional powers and \xinttrigname for trigonometrical +functions. The maximal floating point decimal exponent is currently @@ -8923,9 +9167,6 @@ margin annotation signals what is the argument type. digits. With \xintfracname loaded, \csbxint{Num} is extended to accept fractions and its action is to truncate them to integers. - At |1.2o| many macros from \xintcorename/\xintname which - used. All these macros have now been removed at |1.3|. - \item the fraction input format\ntype{\Ff} applies to the arguments of \xintfracname macros handling genuine fractions. It allows two types of inputs: general and restricted. The restricted type is parsed faster, @@ -9407,83 +9648,133 @@ others are more annoying as they may pass through unsignaled. \subsection{Error messages} In situations such as division by zero, the \TeX{} run will be interrupted -with some error message. The user is asked to hit the RETURN key thrice, which -will display additional information. In non-interactive -|nonstopmode| the \TeX{} run goes on uninterrupted and the error data will be -found in the compilation log. - -Here is an example interactive run: +with some error message. It conveys some short information on +the cause of the problem, then an optimistic statement about a possible +recovery if the user (in interactive mode) simply hits the |<return>| key.% +\CHANGED{1.4g} +In non-interactive (|nonstopmode|) the \TeX{} run goes on uninterrupted and +the error data will be found in the compilation log. Often, \xintname will +fall-back to using a zero value. This is still an experimental feature.% +% +\footnote{Customizable handlers, error traps, error flags are implemented + in embryonic form but without user interface since |1.2l| release. This is + not ready yet.} +% +\footnote{The |1.4g| new formatting implementation benefited from a May 2021 + thread at the \LaTeX3 site where expandable error messages were discussed, + with in particular contributions of |@blefloch| and |@Skillmon|.} + + +The encouragements will be slightly better formatted if the run is with +\LaTeX\ compared to Plain \eTeX: Plain by default does not set the +|\newlinechar| which allows to issue linebreaks in messages at chosen +locations. In the examples here, \ctanpackage{xintsession} is used, and it +loads \xintname in a way activating the nicer |\newlinechar| formatted +messages, even though it runs (a priori, but not necessarily) under Plain +\eTeX. \begin{everbatim} -! Undefined control sequence. -<argument> \xint/ - DivisionByZero (hit <RET> thrice) -l.11 \xintiiDivision{123}{0} - +>>> 1/0; +Runaway argument? +! xint error: Division by zero: 1/0. +! Paragraph ended before \romannumeral (or \expanded, + \numexpr, ...) expansion could produce its final output. + See above the exception specifics. + xint will try to recover (if in interactive mode, hit <return> + at the ? prompt) and will go ahead hoping repair was complete. +<to be read again> + \par +... +l.491 \xintsession + \endinput%^^M ? -! Undefined control sequence. -<argument> \xint/ - Division of 123 by 0 -l.11 \xintiiDivision{123}{0} - +@_1 0 +>>> (-1)^3.2; +Runaway argument? +! xint error: Fractional power 32/1[-1] of negative -1[0]. +! Paragraph ended before \romannumeral (or \expanded, + \numexpr, ...) expansion could produce its final output. + See above the exception specifics. + xint will try to recover (if in interactive mode, hit <return> + at the ? prompt) and will go ahead hoping repair was complete. +<to be read again> + \par +... +l.491 \xintsession + \endinput%^^M ? -! Undefined control sequence. -<argument> \xint/ - next: {0}{0} -l.11 \xintiiDivision{123}{0} - +@_2 0 +>>> cos 1); +Runaway argument? +! xint error: `cos1' unknown, say `Isome_var' or I use 0. +! Paragraph ended before \romannumeral (or \expanded, + \numexpr, ...) expansion could produce its final output. + See above the exception specifics. + xint will try to recover (if in interactive mode, hit <return> + at the ? prompt) and will go ahead hoping repair was complete. +<to be read again> + \par +... +l.491 \xintsession + \endinput%^^M ? -[1] (./temptest.aux) ) -Output written on temptest.dvi (1 page, 216 bytes). -Transcript written on temptest.log. +Runaway argument? +! xint error: Extra ) removed. Hit <return>, fingers crossed. +! Paragraph ended before \romannumeral (or \expanded, + \numexpr, ...) expansion could produce its final output. + See above the exception specifics. + xint will try to recover (if in interactive mode, hit <return> + at the ? prompt) and will go ahead hoping repair was complete. +<to be read again> + \par +... +l.491 \xintsession + \endinput%^^M +? +@_3 0 +>>> 3=4; +Runaway argument? +! xint error: Expected an operator but got `='. Ignoring. +! Paragraph ended before \romannumeral (or \expanded, + \numexpr, ...) expansion could produce its final output. + See above the exception specifics. + xint will try to recover (if in interactive mode, hit <return> + at the ? prompt) and will go ahead hoping repair was complete. +<to be read again> + \par +... +l.491 \xintsession + \endinput%^^M +? +@_4 12 +>>> \end{everbatim} -This is an experimental feature, which is in preparation for next major -release.% -% -\footnote{The related macros checking or resetting error flags are implemented - in embryonic form but no user interface is provided with |1.2l| release.} -% -% -\footnote{The implementation is cloned from \LaTeX3.} - -% Deprecated macros also generate an (expandable) error message. Just hit the -% |RETURN| key once to proceed.\IMPORTANT\ Most deprecated macros at |1.2o| are -% listed either in \autoref{ssec:coredeprecated} or -% \autoref{ssec:xintdeprecated} or \autoref{ssec:xintdeprecatedNum}. All -% were removed at |1.3|. - -% obsoleted at xint 1.4 -% The expression parsers are at |1.2l| still using a slightly less evolved -% method which lets \TeX{} display an undefined control sequence name giving -% some indication of the underlying problem (we copied this method from the -% |bigintcalc| package). The name of the control sequence is the message. - -% \begin{multicols}{2}\parskip0pt\relax -% \begin{everbatim} -% \xintError:ignored -% \xintError:removed -% \xintError:inserted -% \xintError:unknownfunction -% \xintError:we_are_doomed -% \xintError:missing_xintthe! -% \end{everbatim} -% \end{multicols} - +In the last example, tacit multiplication was applied as \xintexprname was +looking for an operator, got some invalid input and then a number. Some constructs in \xintexprname-essions use delimited macros and there is thus possibility in case of an ill-formed expression to end up beyond the -|\relax| end-marker. Such a situation can also occur from a non-terminated +|\relax| end-marker. Such a situation can also occur from |\relax| being +swallowed by a non-terminated |\numexpr|: \begin{everbatim} \xintexpr 3 + \numexpr 5+4\relax followed by some LaTeX code... \end{everbatim} -as the |\numexpr| will swallow the |\relax| whose presence is mandatory for -|\xintexpr|, errors will inevitably arise and may +The correct input is +\begin{everbatim} +\xintexpr 3 + \numexpr 5+4\relax\relax +\end{everbatim} +But people in their right mind will have done +\begin{everbatim} +\xintexpr 3 + 5 + 4\relax +\end{everbatim} +A few will have done the computation in their heads. + +In such cases low-level errors will arise and may lead to very cryptic messages; but nothing unusual or especially traumatizing for the daring experienced \TeX/\LaTeX\ user, whose has seen zillions of un-helpful error messages already in her daily practice of -\TeX/\LaTeX.\footnote{not to mention the \LaTeX\ error messages used by - Emacs AUC\TeX\ mode also for Plain \TeX\ runs...} +\TeX/\LaTeX. \subsection{Package namespace, catcodes} @@ -9865,7 +10156,7 @@ These 504 digits generated from \string\pdfuniformdeviate: contain these respective amounts of 0, 1, and 2: % (this is definitely not the fastest way to count, but it is fun - and expandable) % !(i) (logical not) is short-cut for the vanishing test i==0, but it would be -% simpler to use (i)?{i is not zero}{i is zero} which permuted branches +% simpler to use (i)?{i is not zero}{i is zero} with permuted branches \xinttheiiexpr iter(0,0,0;(!(i))?{[@][0]+1,[@][1],[@][2]} {(isone(i))?{[@][0],[@][1]+1,[@][2]} {[@][0],[@][1],[@][2]+1}}, @@ -9934,10 +10225,19 @@ primitive itself). Except if the code using the pseudo-random number is very short, this time penalty will prove in practice much less severe (and this is one important reason why we opted for obtaining 28bits via the 7 high bits of 4 successive pseudo random numbers from the engine primitive). For example -let's raise 100 times a random integer to the tenth power: +let's raise 100 times a random integer to the tenth power:% % -\footnote{This is done on a |2.4GHz| processor. Hmm... or on a |2.8GHz| one, - I should add some automatic recognition to the build process...} +\InputIfFileExists{JFBUORDI}{}{}% +\ifdefined\JFBUORDI +\footnote{% + \if0\pdfstrcmp{IMAC}{\JFBUORDI}Timings done during dvi build on a computer with a |2.4GHz| cpu.\else + \if0\pdfstrcmp{MBA}{\JFBUORDI}Timings done during dvi build on a computer with a |2GHz| cpu.\else + %\error + DOCUMENTATION SEEMINGLY BUILT NOT ON AN AUTHOR-OWNED SYSTEM, BUT \string\JFBUORDI\space IS DEFINED, WEIRD!\fi\fi +} +\else +\footnote{These timings are done during a build on a computer not belonging to the author.} +\fi % \begin{everbatim*} \pdfsetrandomseed 12345678 @@ -11556,7 +11856,7 @@ represents the zero value). Truncation is done towards zero. \begin{everbatim*} \begin{multicols}{2} - \xintFor* #1 in {\xintSeq[-1]{7}{-14}}:{\xintTrunc{#1}{-11e12/7}\newline}% + \noindent\xintFor* #1 in {\xintSeq[-1]{7}{-14}}:{\xintTrunc{#1}{-11e12/7}\newline}% \xintTrunc{10}{1e-11}\newline \xintTrunc{10}{1/65536}\par \end{multicols} \end{everbatim*} @@ -11786,7 +12086,7 @@ a scientific part and it conserves the sign of |f| (even if the rounded value represents the zero value). \begin{everbatim*} \begin{multicols}{2} - \xintFor* #1 in {\xintSeq[-1]{7}{-14}}:{\xintRound{#1}{-11e12/7}\newline}% + \noindent\xintFor* #1 in {\xintSeq[-1]{7}{-14}}:{\xintRound{#1}{-11e12/7}\newline}% \xintRound{10}{1e-11}\newline \xintRound{10}{1/65536}\newline \end{multicols} \end{everbatim*}% @@ -11817,7 +12117,7 @@ times what \csa{xintTrunc}|{x}{f}| would produce. Attention that leading zeros are automatically removed: the output is in strict integer format. \begin{everbatim*} \begin{multicols}{2} - \xintFor* #1 in {\xintSeq[-1]{7}{-14}}:{\xintiTrunc{#1}{-11e12/7}\newline}% + \noindent\xintFor* #1 in {\xintSeq[-1]{7}{-14}}:{\xintiTrunc{#1}{-11e12/7}\newline}% \xintiTrunc{10}{1e-11}\newline \xintiTrunc{10}{1/65536}\par \end{multicols} \end{everbatim*} @@ -11835,7 +12135,7 @@ times what \csa{xintRound}|{x}{f}| would return. The output has no leading zeroes, it is always in strict integer format. \begin{everbatim*} \begin{multicols}{2} - \xintFor* #1 in {\xintSeq[-1]{7}{-14}}:{\xintiRound{#1}{-11e12/7}\newline}% + \noindent\xintFor* #1 in {\xintSeq[-1]{7}{-14}}:{\xintiRound{#1}{-11e12/7}\newline}% \xintiRound{10}{1e-11}\newline \xintiRound{10}{1/65536}\par \end{multicols} \end{everbatim*} @@ -12108,15 +12408,15 @@ Computes the square\etype{\Ff} of one fraction. \subsection{\csh{xintPow}}\label{xintPow} -\csa{xintPow}{|{f}{x}|}:\etype{\Ff\Numf} computes |f^x| with |f| a fraction and -|x| possibly also. +\csa{xintPow}{|{f}{x}|}:\etype{\Ff\Numf} computes |f^x| with |f| a fraction +and the exponent |x| possibly also, but if only \xintfracname is loaded it +will be truncated to an integer. -At |1.4e|\CHANGED{1.4e} the behaviour of the macro is modified if -\xintexprname is loaded, at it is then the support macro for powers -|a^b|, |a**b| and the \func{pow} function in \csbxint{eval}: the macro is -extended to allow non-integer exponents (in absence of \xintexprname, -non-integer exponents are allowed but truncated to integers...) and also it -checks a priori if an exact evaluation (in the case of an integer exponent) +At |1.4e|\CHANGED{1.4e} the behaviour of the macro is enhanced if +\xintexprname is loaded, at it then becomes the support macro for powers +|a^b|, |a**b| (and the \func{pow} function) in \csbxint{eval}: it now +handles also non-integer exponents. Also, if the exponent is an integer, it +checks a priori if an exact evaluation would produce more than about \dtt{10000} digits and then does in its place a floating point evaluation. @@ -16376,16 +16676,10 @@ there is \begin{everbatim} \xintiexpr [D] <expression> \relax \end{everbatim} -The parameter |D| must be zero or positive.\footnote{|D=0| - corresponds to using |round(<expression>)| not |round(<expression>,0)| which - would leave a trailing dot. Same for |trunc|. There is also function |float| - for floating point rounding to \csbxint{theDigits} or the given number of - significant digits as second argument.} Perhaps some future version will -give a meaning to using a negative |D|.\footnote{Thanks to KT for this - suggestion. Sorry for the delay in implementing it... matter of formatting - the output and corresponding choice of user interface are still in need of - some additional thinking.} - +For |D>0| this produces a decimal number with |D| figures after the decimal +mark, which is the rounding of the expression. For |D=0| the rounding to an +integer is produced. For |D<0| (and this was changed at |1.4f|), the rounded +quotient of the expression by \verb=1e|D|= is produced. \begin{itemize} \item the expression may contain arbitrarily many levels of nested parenthesized sub-expressions, @@ -16726,22 +17020,16 @@ expression) to |\xintexpr round(<expression>, D)\relax|. |\xintiexpr [0] ...| is the same as |\xintiexpr ...| and rounds to an integer. The case of negative |D| gives quantization to an integer multiple of -\dtt{1e-D}.\NewWith{1.4a} +\dtt{1e-D}.\NewWith{1.4a} This was modified at |1.4f| and the produced value +is now the rounded quotient by \dtt{1e-D} (i.e. no trailing zeros nor +scientific exponent in the output). If truncation rather than rounding is needed on can use |\xintexpr trunc(...)\relax| for truncation to an integer or |\xintexpr -trunc(...,D)\relax| for quantization to an integer multiple or \dtt{1eD}. But +trunc(...,D)\relax| for quantization to an integer multiple or \dtt{1eD} (if +|D>0|, for |D<0| the analog would be |trunc((...)/1e-D)|). But this works only for a single scalar value. -Already on October 20, 2015, it was suggested by \textsc{Kpym} to give some -meaning to negative |D|. The suggestion was to let it act like |-D| but -remove trailing zeroes of the output. Finally, I opted rather for -quantization. - -IMPORTANT:\IMPORTANT{} (2021/05/09) Currently, the case of negative |D| gives -(since |1.4e|) explicit trailing zeroes (formerly it used scientific -notation). This looks a bit silly indeed, so I am considering at next major -release to suppress these zeros. \subsection{\csh{xintiiexpr}, \csh{xinttheiiexpr}} \label{xintiiexpr}\label{xinttheiiexpr}\label{thexintiiexpr} @@ -17614,9 +17902,8 @@ chosen. This |0| is thus given to another |?| which consequently chooses are the prime numbers. \begin{everbatim*} -The first Fibonacci number beyond |2^64| bound is -\xinttheiiexpr subs(iterr(0,1;(@1>N)?{break(i)}{@1+@2},i=1++),N=2^64)\relax{} -and the previous number was its index. +The first Fibonacci number beyond |2^64|, |2^64|, and the index are respectively +\xinttheiiexpr subs(iterr(0,1;(@1>N)?{break(@1,N,i)}{@1+@2},i=1++),N=2^64)\relax. \end{everbatim*} % A006877 In the `3x+1' problem, these values for the starting value set new @@ -17633,10 +17920,6 @@ The 3x+1 problem: \syr{231}\par \end{everbatim*} OK, a final one:% -% -\footnote{Prior to |1.4|, the \func{break} worked differently and here one - used only |break(i/2)| for the same result. In retrospect this looks like a bug of - \func{break} inside an \func{iterr}.} \begin{everbatim*} \def\syrMax #1{\xintiiexpr iterr(#1,#1;even(i)? {(@2<=1)?{break(@1,i//2)}{odd(@2)?{3@2+1}{@2//2}}} @@ -18606,7 +18889,7 @@ problems). \hsize 87\fontcharwd\font`0 \lccode`~=32 \lowercase{\def~}{\discretionary{}{}{\kern\fontcharwd\font`0}}\catcode32 13 -\noindent\phantom{000}\scantokens\expandafter{\meaning\z}\par +\noindent\phantom{00}\scantokens\expandafter{\meaning\z}\par \endgroup \end{everbatim*} \fi % fin de si pas xetex @@ -18939,13 +19222,44 @@ currently this is implemented by using either |\xintifForFirst| or % \changed % ======== -\def\changed#1#2{% +% updated 2021/05/29 to use \xintreleasedate (always) and put +% second argument if non empty within square brackets. +% updated again same day to make \changed a LaTeX macro with optional +% parameter, so order is permuted +\newcommand\changed[2][]{% \par\smallskip\noindent - \textbf{#1\if\relax\detokenize{#2}\relax\else\space(#2)\fi.}% -% \hangindent\leftmarginii + \textbf{#2\space(\xintreleasedate{#2})\if\relax\detokenize{#1}\relax + \else\space[commented #1]\fi.}% \hangindent\parindent } +% \xintreleasedate +% ================ + +% added 2021/05/29 +% xint-dates.txt is produced from CHANGES.md by grep via Makefile rule +% 1.09 (2013/09/23) aajouté manuellement car pas dans CHANGES.md +% (il y avait un bug "a stray underscore in a code line of xintexpr.sty must +% be removed" et CTAN a annoncé seulement 1.09a) +% +\begingroup\endlinechar-1 +\catcode`\`=\active +\def`#1 (#2)`{\expandafter\gdef\csname xintreleasedate_#1\endcsname{#2}} +`1.09 (2013/09/23)`% pas dans CHANGES.md car remplacé immédiatement par 1.09a +\@@input xint-dates.txt +\endgroup + +\def\xintreleasedate#1{% + \ifcsname xintreleasedate_#1\endcsname + \csname xintreleasedate_#1\endcsname + \else + \immediate\write128{Pas de date pour #1 en ligne \the\inputlineno}% + \error + \fi +} + +\expandafter\edef\csname xintreleasedate_\xintbndlversion\endcsname{\xintbndldate} + % Hyperlinks % ========== @@ -19027,6 +19341,8 @@ Please refer to |CHANGES.html| for a (very) detailed history. \url{http://mirrors.ctan.org/macros/generic/xint/CHANGES.html}} \begin{itemize} +\item Release |1.4i| of |2021/06/11|: extension of the + «simultaneous assignments» concept (backwards compatible). \item Release |1.4g| of |2021/05/25|: powers are now parsed in a right associative way. Removal of the single-character operators |&|, \verb=|=, and |=| (deprecated at |1.1|). @@ -19137,17 +19453,17 @@ math shift catcode. % loaded by both |xintcore.sty| and |xinttools.sty| hence by all other % packages. % -% \changed{1.1}{} -% separated package. +% \changed{1.1} +% Separated package. % -% \changed{1.2i}{} +% \changed{1.2i} % \csbxint{replicate}, \csbxint{gobble}, \csbxint{LengthUpTo} % and \csbxint{LastItem}, and faster \csbxint{Length}. % -% \changed{1.3b}{} +% \changed{1.3b} % \csbxint{UniformDeviate}. % -% \changed{1.4}{2020/01/11} +% \changed[2020/01/11]{1.4} % \csbxint{Replicate}, \csbxint{Gobble}, \csbxint{LastOne}, \csbxint{FirstOne}. % % \subsection{Catcodes, \protect\eTeX{} and reload detection} @@ -19313,7 +19629,7 @@ math shift catcode. \fi \XINT_providespackage \ProvidesPackage {xintkernel}% - [2021/05/27 v1.4h Paraphernalia for the xint packages (JFB)]% + [2021/06/11 v1.4i Paraphernalia for the xint packages (JFB)]% % \end{macrocode} % \subsection{Constants} % \begin{macrocode} @@ -19355,7 +19671,7 @@ math shift catcode. \fi % \end{macrocode} % \subsection{Token management utilities} -% \changed{1.3b}{} +% \changed{1.3b} % |\xint_gobandstop_...| macros because this is handy for % \csbxint{RandomDigits}. % |1.3g| forces \cs{empty} and \cs{space} to have their standard meanings, @@ -19447,9 +19763,9 @@ math shift catcode. \long\def\xint_afterfi #1#2\fi {\fi #1}% % \end{macrocode} % \subsection{\csh{xint_bye}, \csh{xint_Bye}} -% \changed{1.09}{} +% \changed{1.09} % |\xint_bye| -% \changed{1.2i}{} +% \changed{1.2i} % |\xint_Bye| for \csbxint{DSRr} and \csbxint{Round}. Also |\xint_stop_afterbye|. % \begin{macrocode} \long\def\xint_bye #1\xint_bye {}% @@ -19457,8 +19773,8 @@ math shift catcode. \long\def\xint_stop_afterbye #1\xint_bye { }% % \end{macrocode} % \subsection{\csh{xintdothis}, \csh{xintorthat}} -% \changed{1.1}{} -% \changed{1.2}{} names without underscores. +% \changed{1.1} +% \changed{1.2} Names without underscores. % % To be used this way: % \lverb| @@ -19477,7 +19793,7 @@ math shift catcode. \let\xintorthat \xint_firstofone % \end{macrocode} % \subsection{\csh{xint_zapspaces}} -% \changed{1.1}{} +% \changed{1.1} % % This little (quite fragile in the normal sense i.e. non robust in the normal % sense of programming lingua) utility zaps leading, intermediate, trailing, @@ -19507,12 +19823,12 @@ math shift catcode. % optional argument of |\xintiexpr| and |\xintfloatexpr|; maybe in future % internal usage will drop this in favour of a more robust utility. % -% \changed{1.2e}{} |\xint_zapspaces_o|. +% \changed{1.2e} |\xint_zapspaces_o|. % -% \changed{1.2i}{} made |\long|. +% \changed{1.2i} Made |\long|. % -% ATTENTION THAT \xinttoolsnameimp HAS AN \xintzapspaces WHICH SHOULD NOT -% GET CONFUSED WITH THIS ONE +% ATTENTION THAT \xinttoolsnameimp HAS AN |\xintzapspaces| WHICH SHOULD NOT +% GET CONFUSED WITH THIS ONE. % \begin{macrocode} \long\def\xint_zapspaces #1 #2{#1#2\xint_zapspaces }% 1.1 \long\def\xint_zapspaces_o #1{\expandafter\xint_zapspaces#1 \xint_gobble_i}% @@ -19531,7 +19847,7 @@ math shift catcode. \ifdefined\fdef\else\let\fdef\xintfdef\fi % \end{macrocode} % \subsection{\csh{xintReverseOrder}} -% \changed{1.0}{} does not expand its argument. The whole of xint codebase now +% \changed{1.0} Does not expand its argument. The whole of xint codebase now % contains only two calls to |\XINT_rord_main| (in \xintgcdnameimp). % % Attention: removes brace pairs (and swallows spaces). @@ -19563,12 +19879,12 @@ math shift catcode. }}\XINT_rord_cleanup { }% % \end{macrocode} % \subsection{\csh{xintLength}} -% \changed{1.0}{} does not expand its argument. See \csbxint{NthElt}|{0}| from +% \changed{1.0} Does not expand its argument. See \csbxint{NthElt}|{0}| from % \xinttoolsnameimp which f-expands its argument. % -% \changed{1.2g}{} added \csbxint{CSVLength} to \xinttoolsnameimp. +% \changed{1.2g} Added \csbxint{CSVLength} to \xinttoolsnameimp. % -% \changed{1.2i}{} rewrote this venerable macro. New code about 40\% +% \changed{1.2i} Rewrote this venerable macro. New code about 40\% % faster across all lengths. Syntax with |\romannumeral0| adds some % slight (negligible) overhead; it is done to fit some general % principles of structure of the xint package macros but maybe @@ -19597,7 +19913,7 @@ math shift catcode. }% % \end{macrocode} % \subsection{\csh{xintLastItem}} -% \changed{1.2i}{2016/12/10} +% \changed[2016/12/10]{1.2i} % One level % of braces removed in output. Output empty if input empty. Attention! % This means @@ -19651,7 +19967,7 @@ math shift catcode. % removed one level of brace pair so it is anadequate for the last() function. % % By the way it is logical to interpret «item» as meaning {cj} inclusive of -% the braces; but xint user manual was not written in this spirit. And thus +% the braces; but legacy xint user manual was not written in this spirit. And thus % \xintLastItem did brace stripping, thus we need another name for maintaining % backwards compatibility (although the cardinality of users is small). % @@ -19688,7 +20004,7 @@ math shift catcode. % For xintexpr 1.4 too. Jan 3, 2020. % % This is an experimental macro, don't use it. If input is nil (empty set) it -% expands to nil, if not it fetches first item and brace it. Fetching will +% expands to nil, if not it fetches first item and braces it. Fetching will % have stripped one brace pair if item was braced to start with, which is % the case in non-symbolic xintexpr data objects. % @@ -19704,12 +20020,12 @@ math shift catcode. \def\XINT_firstone_empty\xint:#1{ }% % \end{macrocode} % \subsection{\csh{xintLengthUpTo}} -% \changed{1.2i}{} for use by \csbxint{Keep} and \csbxint{Trim} +% \changed{1.2i} For use by \csbxint{Keep} and \csbxint{Trim} % (\xinttoolsnameimp). The argument N **must be non-negative**. % % |\xintLengthUpTo{N}{List}| produces |-0| if length(List)>N, else it returns % N-length(List). Hence subtracting it from N always computes min(N,length(List)). -% \changed{1.2j}{} changed ending and interface to core loop. +% \changed{1.2j} Changed ending and interface to core loop. % \begin{macrocode} \def\xintLengthUpTo {\romannumeral0\xintlengthupto}% \long\def\xintlengthupto #1#2% @@ -19746,7 +20062,7 @@ math shift catcode. }% % \end{macrocode} % \subsection{\csh{xintreplicate}, \csh{xintReplicate}} -% \changed{1.2i}{} +% \changed{1.2i} % % This is cloned from LaTeX3's |\prg_replicate:nn|, see Joseph's post % at @@ -19764,7 +20080,7 @@ math shift catcode. % \centeredline{|\romannumeral\XINT_rep N\endcsname {foo}|} % to skip the |\numexpr|. % -% \changed{1.4}{2020/01/11} +% \changed[2020/01/11]{1.4} % Added |\xintReplicate| ! The reason I did not before is that the prevailing % habits in xint source code was to trigger with |\romannumeral0| not % |\romannumeral| which is the lowercased named macros. Thus adding the @@ -19824,13 +20140,13 @@ math shift catcode. {\xint_c_ #1#1#1#1#1#1#1#1#1}% % \end{macrocode} % \subsection{\csh{xintgobble}, \csh{xintGobble}} -% \changed{1.2i}{} +% \changed{1.2i} % % I hesitated about allowing as many as |9^6-1=531440| tokens to gobble, but % |9^5-1=59058| is too low for playing with long decimal expansions. % \centeredline{Usage: |\romannumeral\xintgobble{N}...|} % -% \changed{1.4}{2020/01/11} +% \changed[2020/01/11]{1.4} % Added |\xintGobble|. % \begin{macrocode} \def\xintGobble{\romannumeral\xintgobble}% @@ -19941,7 +20257,7 @@ math shift catcode. {\noexpand\csname XINT_g67\expandafter\noexpand\csname XINT_g61\endcsname}% % \end{macrocode} % \subsection{(WIP) \csh{xintUniformDeviate}} -% \changed{1.3b}{} See user manual for related information. +% \changed{1.3b} See user manual for related information. % \begin{macrocode} \ifdefined\xint_texuniformdeviate \expandafter\xint_firstoftwo @@ -19983,13 +20299,13 @@ math shift catcode. }% % \end{macrocode} % \subsection{\csh{xintMessage}, \csh{ifxintverbose}} -% \changed{1.2c}{} for use by \csbxint{defvar} and \csbxint{deffunc} of +% \changed{1.2c} For use by \csbxint{defvar} and \csbxint{deffunc} of % \xintexprnameimp. % -% \changed{1.2e}{} uses |\write128| rather than |\write16| for compatibility +% \changed{1.2e} Uses |\write128| rather than |\write16| for compatibility % with future extended range of output streams, in LuaTeX in particular. % -% \changed{1.3e}{} set the |\newlinechar|. +% \changed{1.3e} Set the |\newlinechar|. % \begin{macrocode} \def\xintMessage #1#2#3{% \edef\XINT_newlinechar{\the\newlinechar}% @@ -20001,22 +20317,22 @@ math shift catcode. \newif\ifxintverbose % \end{macrocode} % \subsection{\csh{ifxintglobaldefs}, \csh{XINT_global}}\label{src-xintglobaldefstrue} -% \changed{1.3c}{} +% \changed{1.3c} % \begin{macrocode} \newif\ifxintglobaldefs \def\XINT_global{\ifxintglobaldefs\global\fi}% % \end{macrocode} % \subsection{(WIP) Expandable error message} -% \changed{1.2l}{2017/07/26} but really belongs to next major release beyond |1.3|. +% \changed[2017/07/26]{1.2l} But really belongs to next major release beyond |1.3|. % Basically copied over from l3kernel code. Using |\ ! /| control sequence, % which must be left undefined. |\xintError:| would be 6 letters more. % -% \changed{1.4}{2020/01/25} Finally rather than |\ ! /| I use |\xint/|. +% \changed[2020/01/25]{1.4} Finally rather than |\ ! /| I use |\xint/|. % -% \changed{1.4g}{2021/05/19} Rewrote to use not an undefined control +% \changed[2021/05/19]{1.4g} Rewrote to use not an undefined control % sequence but trigger "Use of |\xint/| doesn't match its definition." message. % -% \changed{1.4g}{2021/05/20} Things evolve fast and I switch to a third +% \changed[2021/05/20]{1.4g} Things evolve fast and I switch to a third % method which will exploit "Paragraph ended before |\foo| was complete" style % error. See % \centeredline{\url{https://github.com/latex3/latex3/issues/931#issuecomment-845367201}} @@ -20273,7 +20589,7 @@ mode) and will go ahead hoping repair\endcsname % \begin{macrocode} \XINT_providespackage \ProvidesPackage{xinttools}% - [2021/05/27 v1.4h Expandable and non-expandable utilities (JFB)]% + [2021/06/11 v1.4i Expandable and non-expandable utilities (JFB)]% % \end{macrocode} % \lverb|\XINT_toks is used in macros such as \xintFor. It is not used % elsewhere in the xint bundle.| @@ -22617,7 +22933,7 @@ mode) and will go ahead hoping repair\endcsname % \begin{macrocode} \XINT_providespackage \ProvidesPackage{xintcore}% - [2021/05/27 v1.4h Expandable arithmetic on big integers (JFB)]% + [2021/06/11 v1.4i Expandable arithmetic on big integers (JFB)]% % \end{macrocode} % \subsection{(WIP!) Error conditions and exceptions} % \lverb|As per the Mike Cowlishaw/IBM's General Decimal Arithmetic Specification @@ -25442,7 +25758,7 @@ mode) and will go ahead hoping repair\endcsname {#2}{#1#3}}% % \end{macrocode} % \subsection{\csh{xintiiDivMod}} -% \changed{1.2p}{} +% \changed{1.2p} % It is associated with floored division (like Python divmod % function), and with the |//| operator in \csbxint{iiexpr}. % \begin{macrocode} @@ -25971,7 +26287,7 @@ mode) and will go ahead hoping repair\endcsname % \begin{macrocode} \XINT_providespackage \ProvidesPackage{xint}% - [2021/05/27 v1.4h Expandable operations on big integers (JFB)]% + [2021/06/11 v1.4i Expandable operations on big integers (JFB)]% % \end{macrocode} % \subsection{More token management} % \begin{macrocode} @@ -28154,7 +28470,7 @@ mode) and will go ahead hoping repair\endcsname % |1.4|: removed from \xintgcdnameimp the original caode as now % \xintgcdnameimp loads \xintnameimp. % -% \changed{1.4d}{2021/03/22} Damn'ed! Since |1.3d| (2019/01/06) the code was +% \changed[2021/03/22]{1.4d} Damn'ed! Since |1.3d| (2019/01/06) the code was % broken if one of the arguments vanished due to a typo in macro names: % "AisZero" at one location and "Aiszero" at next, and same for B... % @@ -28550,7 +28866,7 @@ mode) and will go ahead hoping repair\endcsname % \begin{macrocode} \XINT_providespackage \ProvidesPackage{xintbinhex}% - [2021/05/27 v1.4h Expandable binary and hexadecimal conversions (JFB)]% + [2021/06/11 v1.4i Expandable binary and hexadecimal conversions (JFB)]% % \end{macrocode} % \subsection{Constants, etc...} % \lverb|1.2n switches to \csname-governed expansion at various places.| @@ -29222,7 +29538,7 @@ mode) and will go ahead hoping repair\endcsname % \begin{macrocode} \XINT_providespackage \ProvidesPackage{xintgcd}% - [2021/05/27 v1.4h Euclide algorithm with xint package (JFB)]% + [2021/06/11 v1.4i Euclide algorithm with xint package (JFB)]% % \end{macrocode} % \subsection{\csh{xintBezout}} % \lverb|& @@ -29822,7 +30138,7 @@ mode) and will go ahead hoping repair\endcsname % \begin{macrocode} \XINT_providespackage \ProvidesPackage{xintfrac}% - [2021/05/27 v1.4h Expandable operations on fractions (JFB)]% + [2021/06/11 v1.4i Expandable operations on fractions (JFB)]% % \end{macrocode} % \subsection{\csh{XINT_cntSgnFork}} % \lverb|1.09i. Used internally, #1 must expand to \m@ne, \z@, or \@ne or @@ -32451,7 +32767,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \def\xintopp #1{\expandafter\XINT_opp\romannumeral0\xintraw {#1}}% % \end{macrocode} % \subsection{\csh{xintInv}} -% \changed{1.3d}{} +% \changed{1.3d} % \begin{macrocode} \def\xintInv {\romannumeral0\xintinv }% \def\xintinv #1{\expandafter\XINT_inv\romannumeral0\xintraw {#1}}% @@ -32482,13 +32798,13 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \def\xintsgn #1{\expandafter\XINT_sgn\romannumeral0\xintraw {#1}\xint:}% % \end{macrocode} % \subsection{\csh{xintGCD}} -% \changed{1.4}{} +% \changed{1.4} % They replace the former \xintgcdnameimp macros of the same names which % truncated to integers their arguments. Fraction-producing |gcd()| and % |lcm()| functions were available since |1.3d| \xintexprnameimp, with % non-public support macros handling comma separated values. % -% \changed{1.4d}{} +% \changed{1.4d} % Somewhat strangely \csh{xintGCD} was formerly \csh{xintGCDof} used with only two % arguments, as the latter directly implemented a fractionl gcd algorithm % using \csh{xintMod} repeatedly for two arguments. @@ -32559,7 +32875,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2% }% % \end{macrocode} % \subsection{\csh{xintGCDof}} -% \changed{1.4}{} +% \changed{1.4} % This inherits from former non public \xintexprnameimp macro called % |\xintGCDof:csv|, which handled comma separated items. % @@ -32571,7 +32887,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % An empty input is allowed but I have some hesitations on the return % value of 1. % -% \changed{1.4d}{} +% \changed{1.4d} % Sadly the |1.4| version had multiple problems: % \begin{itemize} % \item broken if first argument vanished, @@ -35290,7 +35606,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % \begin{macrocode} \XINT_providespackage \ProvidesPackage{xintseries}% - [2021/05/27 v1.4h Expandable partial sums with xint package (JFB)]% + [2021/06/11 v1.4i Expandable partial sums with xint package (JFB)]% % \end{macrocode} % \subsection{\csh{xintSeries}} % \begin{macrocode} @@ -35798,7 +36114,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % \begin{macrocode} \XINT_providespackage \ProvidesPackage{xintcfrac}% - [2021/05/27 v1.4h Expandable continued fractions with xint package (JFB)]% + [2021/06/11 v1.4i Expandable continued fractions with xint package (JFB)]% % \end{macrocode} % \subsection{\csh{xintCFrac}} % \begin{macrocode} @@ -37191,7 +37507,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % \begin{macrocode} \XINT_providespackage \ProvidesPackage{xintexpr}% - [2021/05/27 v1.4h Expandable expression parser (JFB)]% + [2021/06/11 v1.4i Expandable expression parser (JFB)]% \catcode`! 11 \let\XINT_Cmp \xintiiCmp \def\XINTfstop{\noexpand\XINTfstop}% @@ -37715,7 +38031,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \def\xintifbooliiexpr #1{\romannumeral0\xintiiifnotzero {\xinttheiiexpr #1\relax}}% % \end{macrocode} % \subsubsection{\csh{xintifsgnexpr}, \csh{xintifsgnfloatexpr}, \csh{xintifsgniiexpr}} -% \changed{1.3d}{} +% \changed{1.3d} % \lverb|They do not accept comma separated expressions.| % \begin{macrocode} \def\xintifsgnexpr #1{\romannumeral0\xintiiifsgn {\xinttheexpr #1\relax}}% @@ -37828,8 +38144,81 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \let\XINT:NEhook:x:select:obey\empty \let\XINT:NEhook:x:listsel\empty \let\XINT:NEhook:f:reverse\empty -\def\XINT:NEhook:f:from:delim:u #1#2^{#1#2^}% -\def\XINT:NEhook:f:noeval:from:braced:u#1#2^{#1{#2}}% +% \end{macrocode} +% \lverb|At 1.4 it was \def\XINT:NEhook:f:from:delim:u #1#2^{#1#2^} +% which was trick to allow automatic unpacking of a nutple argument +% to multi-arguments functions such as gcd() or max(). But this +% sacrificied the usage with a single numeric argument.| +% \changed{1.4i} +% \lverb|More sophisticated code to check if the argument ople +% was actually a single number. Notice that this forces numeric +% types to actually use catcode 12 tokens, and polexpr diverges +% a bit using P, but actually always testing with \if not \ifx. +% +% This is used by gcd(), lcm(), max(), min(), `+`(), `*`(), all(), any(), +% xor(). +% +% The nil and None will give the same result due to the initial brace +% stripping done by \XINT:NEhook:f:from:delim:u (there was even a prior brace +% stripping to provide the #2 which is empty here for the nil and {} for the +% None). | +% \begin{macrocode} +\def\XINT:NEhook:f:from:delim:u #1#2^% +{% + \expandafter\XINT_fooof_checkifnumber\expandafter#1\string#2^% +}% +\def\XINT_fooof_checkifnumber#1#2% +{% + \expandafter#1% + \romannumeral0\expanded{\if ^#2^\else + \if\bgroup#2\noexpand\XINT_fooof_no\else + \noexpand\XINT_fooof_yes#2\fi\fi}% +}% +\def\XINT_fooof_yes#1^{{#1}^}% +\def\XINT_fooof_no{\expandafter{\iffalse}\fi}% +% \end{macrocode} +% \changed{1.4i} +% \lverb|Same changes as for the other multiple arguments functions, +% making them again usable with a single numeric input. +% +% Was at 1.4 \def\XINT:NEhook:f:noeval:from:braced:u#1#2^{#1{#2}} which +% is not compatible with a single numeric input. +% +% Used by len(), first(), last() but it is a potential implementation bug that +% the three share this as the location where expansion takes places is one +% level deeper for the support macro of len(). +% +% The None is here handled as nil, i.e. it is unpacked, which is fine +% as the documentations says nutples are unpacked. +% +% This is somewhat complicated here due to the macro interfaces of +% \xintFirstOne, \xintLastOne and \xintLength which used a braced +% not a delimited argument, this forces here some re-grab which adds overhead. +% +% To avoid this one would like to move the check to inside {#2}, but then +% there is a difficulty caused by the nil (or None), if we apply a string +% technique as it will hit the closing brace. +%| +% \begin{macrocode} +\def\XINT:NEhook:f:LFL #1{\expandafter#1\expandafter}% +\def\XINT:NEhook:r:check #1^% +{% + \expandafter\XINT:NEhook:r:check_a\string#1^% +}% +\let\XINT:NEsaved:r:check \XINT:NEhook:r:check +\def\XINT:NEhook:r:check_a #1% +{% + \if ^#1\xint_dothis\xint_c_\fi + \if\bgroup#1\xint_dothis\XINT:NEhook:r:check_no\fi + \xint_orthat{\XINT:NEhook:r:check_yes#1}% +}% +\def\XINT:NEhook:r:check_no +{% + \expandafter\XINT:NEhook:r:check_no_b + \expandafter\xint_c_\expandafter{\iffalse}\fi +}% +\def\XINT:NEhook:r:check_no_b#1^{#1}% +\def\XINT:NEhook:r:check_yes#1^{\xint_c_{#1}}% \let\XINT:NEhook:branch\expandafter \let\XINT:NEhook:seqx\empty \let\XINT:NEhook:iter\expandafter @@ -38647,7 +39036,9 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % % \lverb|The "onliteral" intercepts is for bool, togl, protect, ... but also % for add, mul, seq, etc... Genuine functions have expr, iiexpr and flexpr -% versions (or only one or two of the three). +% versions (or only one or two of the three) and trigger here the use of the +% suitable parser-dependant form. The former (pseudo functions and functions +% handling dummy variables) first trigger a parser independent mechanism. % % With 1.2c "onliteral" is also used to disambiguate a variable followed % by an opening parenthesis from a function and then apply tacit multiplication. @@ -38660,36 +39051,52 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % The advantage of 1.2c code is that the same name can be used for % a variable or a function. % | +% +% \changed[2021/06/11]{1.4i} +% +% \lverb|The 1.2c abuse of «onliteral» for both tacit multiplication in front +% of an opening parenthesis and «generic» functions or pseudo-functions meant +% that the latter were vulnerable against user redefinition of a function name +% as a variable name. This applied to subs, subsm, subsn, seq, add, mul, +% ndseq, ndmap, ndfillraw, bool, togl, protect, qint, qfrac, qfloat, qraw, +% random, qrand, rbit and the most susceptible in real life was probably "seq". +% +% Now variables have an associated «var*» named macro, not «onliteral». +% +% In passing I refactor here in a \romannumeral inspired way how \csname and +% TeX booleans are intertwined, minimizing \expandafter usage.| +% % \begin{macrocode} \def\XINT_tmpa #1#2#3{% \def #1##1% {% - \ifcsname XINT_#3_func_##1\endcsname - \csname XINT_#3_func_##1\expandafter\endcsname - \romannumeral`&&@\expandafter#2% - \else + \csname + XINT_\ifcsname XINT_#3_func_##1\endcsname + #3_func_##1\expandafter\endcsname\romannumeral`&&@\expandafter#2% + \romannumeral\else \ifcsname XINT_expr_onliteral_##1\endcsname - \csname XINT_expr_onliteral_##1\expandafter\expandafter\expandafter - \endcsname + expr_onliteral_##1\expandafter\endcsname\romannumeral \else - \csname XINT_#3_func_\XINT_expr_unknown_function {##1}% - \expandafter\endcsname - \romannumeral`&&@\expandafter\expandafter\expandafter#2% - \fi - \fi - }% + \ifcsname XINT_expr_var*_##1\endcsname + expr_var*_##1\expandafter\endcsname\romannumeral + \else + #3_func_\XINT_expr_unknown_function {##1}% + \expandafter\endcsname\romannumeral`&&@\expandafter#2% + \romannumeral + \fi\fi\fi\xint_c_ + }% }% -\def\XINT_expr_unknown_function #1% - {\XINT_expandableerror{`#1' is unknown, say `Isome_func' or I use 0.}}% -\def\XINT_expr_func_ #1#2#3{#1#2{{0}}}% -\let\XINT_flexpr_func_\XINT_expr_func_ -\let\XINT_iiexpr_func_\XINT_expr_func_ \xintFor #1 in {expr,flexpr,iiexpr} \do {% \expandafter\XINT_tmpa \csname XINT_#1_op_`\expandafter\endcsname \csname XINT_#1_oparen\endcsname {#1}% }% +\def\XINT_expr_unknown_function #1% + {\XINT_expandableerror{`#1' is unknown, say `Isome_func' or I use 0.}}% +\def\XINT_expr_func_ #1#2#3{#1#2{{0}}}% +\let\XINT_flexpr_func_\XINT_expr_func_ +\let\XINT_iiexpr_func_\XINT_expr_func_ % \end{macrocode} % % \subsection{\csh{XINT_expr_op__}: replace a variable by its value and @@ -38713,7 +39120,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % % Abusing variables to manipulate the incoming token stream is a bit bad, % usually I prefer functions for this (such as the break() function) but then -% I have define 3 macros for the 3 parsers. +% I have to define 3 macros for the 3 parsers. % % This trick of fake variables puts thus a general overhead at various % locations, and the situation here is REALLY not satisfactory. But 1.4 has @@ -38738,9 +39145,13 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % The above comments mention only omit and abort, but the case of real dummy % variables also needs consideration. % -% At 1.4g, I test first for existence of \XINT_expr_onliteral_foo. This is +% At 1.4g, I test first for existence of \XINT_expr_onliteral_foo. +% +% Updated for 1.4i: now rather existence of \XINT_expr_var*_foo is tested. +% +% This is % a trick which allosw to distinguish actual or dummy variables from really -% fake variables omit and abord (must check if there are othersà. For the real +% fake variables omit and abort (must check if there are others). For the real % or dummy variables we can trigger the expansion of the \XINT_expr_getop % before the one of the variable. I could test vor varvalue_foo but this % applies only to real variables not dummy variables. Actual and dummy @@ -38768,7 +39179,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % \begin{macrocode} \def\XINT_expr_op__ #1% op__ with two _'s {% - \ifcsname XINT_expr_onliteral_#1\endcsname + \ifcsname XINT_expr_var*_#1\endcsname \csname XINT_expr_var_#1\expandafter\endcsname \romannumeral`&&@\expandafter\XINT_expr_getop \else @@ -40266,12 +40677,12 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % % \subsubsection{\csh{xintdefvar}, \csh{xintdefiivar}, % \csh{xintdeffloatvar}} -% \changed{1.1}{} +% \changed{1.1} % -% \changed{1.2p}{2017/12/01} extends |\xintdefvar| et al.\@ to accept +% \changed[2017/12/01]{1.2p} Extends |\xintdefvar| et al.\@ to accept % simultaneous assignments to multiple variables. % -% \changed{1.3c}{2018/06/17} +% \changed[2018/06/17]{1.3c} % Use \csbxint{exprSafeCatcodes} (to palliate issue with % active semi-colon from Babel+French if in body of a \LaTeX{} document). % @@ -40302,24 +40713,32 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % supported by \xintdeffloatvar. One must do \xintdeffloatvar % foo = \xintfloatexpr[16] blabla \relax; to achieve the effect.| % -% \changed{1.4}{2020/01/27} +% \changed[2020/01/27]{1.4} % The expression will be fetched up to final semi-colon in a manner % allowing inner semi-colons as used in the iter(), rseq(), subsm(), % subsn() etc... syntax. They don't need to be hidden within a % braced pair anymore. % -% TODO: prior to |1.4| a variable «value» was passed along as a single token. -% Now it is managed, like everything else, as explicit braced contents. But -% most of the code is ready for passing it along again as a single (braced, -% now) token again, because all needed |\expanded/\unexpanded| things are in -% place. However this is «most of the code». I am really eager to get |1.4| -% released now, because I can't devote more time in immediate future. It is -% too late to engage into an umpteenth deep refactoring at a time where things -% work and many new features were added and most aspects of inner working got -% adapted. However in future it could be that variables holding large data -% will be managed much faster. -% -% |1.4c| |2021/02/20|. One year later I realized I had broken tacit +% \changed{1.4} +% Automatic unpacking in case of simultaneous assignments if the expression +% evaluates to a nutple. +% +% Notes (added much later on 2021/06/10 during preparation of |1.4i|): +% \begin{enumerate} +% \item the code did not try to intercept illicit syntax such as +% |\xintdefvar a,b,c:=<number>;|. It blindly «unpacked» the number handling it as if +% it was a nutple. The extended functionality added at |1.4i| requires to +% check for such a situation, as the syntax is not illicit anymore. +% \item the code was broken in case the expression to evaluate was an ople of +% length 10 or more, due to a silly mistake at some point during |1.4| +% development which replaced some |\ifnum| by an |\if|, perhaps due to +% mental confusion with the fact that functions can have at most 9 +% arguments, but here the code is about defining variables. Anyway this got +% fixed as corollary to the |1.4i| extension. +% \end{enumerate} +% +% +% \changed[2021/02/20]{1.4c} One year later I realized I had broken tacit % multiplication for situations such as |variable(1+2)|. As hinted at in % comments above before |1.4| release I had been doing some deep refactoring % here, which I cancelled almost completely in the end... but not quite, and @@ -40331,22 +40750,17 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % breakage elsewhere, and that the February 2020 |1.4| did not break something % else. % +% \changed[2021/04/17]{1.4e} % \lverb|& -% 1.4e, done 2021/04/17, modifies \xintdeffloatvar to round to the prevailing +% Modifies \xintdeffloatvar to round to the prevailing % precision (formerly, any operation would induce rounding, but in case of % things such as \xintdeffloatvar foo:=\xintexpr 1/100!\relax; there was no % automatic rounding. One could use 0+ syntax to trigger it, and for oples, % some trick like \xintfloatexpr[\XINTdigits]...\relax extra wrapper. -% -% Now inner computations are done with guard digits. But, with some -% hesitation, I decided that it would be problematic if \xintfloateval{} would -% print only a partial view of a variable, the variable having unknown hidden -% extra digits. Also, xintsession 0.1 was done to use \xintfloateval{} to -% display the computation result, and it would be very confusing if one could -% not copy paste that value and expect exact same behaviour as the automatic -% label variable. -% -% 1.4g (2021/05/22). The \expandafter\expandafter\expandafter et al. chain +% | +% \changed[2021/05/22]{1.4g} +% \lverb|& +% The \expandafter\expandafter\expandafter et al. chain % which was kept by \XINT_expr_defvar_one_b for expanding only at time of use % the \XINT_expr_var_foo in \XINT_expr_onliteral_foo were senseless overhead % added at 1.4c. This is used only for real variables, not dummy variables or @@ -40360,6 +40774,26 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % % | % +% \changed[2021/06/10]{1.4i} +% +% Implement extended notion of simultaneous assignments: if there are more +% variables than values, define the extra variables to be nil. If there are +% less variables than values let the last variable +% be defined as the ople concatenating all non reclaimed values. +% +% If there are at least two variables, the right hand side, if it turns out to +% be a nutple, is (as since |1.4|) automatically unpacked, then the above +% rules apply. +% +% \changed[2021/06/11]{1.4i} +% +% \lverb|Fix the long-standing «seq renaming bug» via a change here of the +% name of auxiliary macro. Previously «onliteral_<varname>» now +% «var*_<varname>». I hesitated with using «var_varname*» rather. +% +% Hesitated adding \XINT_expr_letvar_one (motivation: case of simultaneous +% assignments leading to defining «nil» variables). Finally, no.| +% % \begin{macrocode} \catcode`* 11 \def\XINT_expr_defvar_one #1#2% @@ -40370,11 +40804,11 @@ on input line \noexpand\the\inputlineno.&&J}}#2% }% \def\XINT_expr_defvar_one_b #1% {% - \XINT_global - \expandafter\edef\csname XINT_expr_var_#1\endcsname + \XINT_global + \expandafter\edef\csname XINT_expr_var_#1\endcsname {{\expandafter\noexpand\csname XINT_expr_varvalue_#1\endcsname}}% \XINT_global - \expandafter\edef\csname XINT_expr_onliteral_#1\endcsname + \expandafter\edef\csname XINT_expr_var*_#1\endcsname {\XINT_expr_prec_tacit *\csname XINT_expr_var_#1\endcsname(}% \ifxintverbose\xintMessage{xintexpr}{Info} {Variable #1 \ifxintglobaldefs globally \fi @@ -40421,35 +40855,62 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \else \edef\XINT_defvar_tmpb{#1#2\relax}% \edef\XINT_defvar_tmpd{\expandafter\xintLength\expandafter{\XINT_defvar_tmpb}}% - \let\XINT_defvar_tmpe\empty - \if1\XINT_defvar_tmpd - \def\XINT_defvar_tmpe{unpacked }% + \ifnum\XINT_defvar_tmpd=\xint_c_i \oodef\XINT_defvar_tmpb{\expandafter\xint_firstofone\XINT_defvar_tmpb}% - \edef\XINT_defvar_tmpd{\expandafter\xintLength\expandafter{\XINT_defvar_tmpb}}% - \fi - \ifnum\XINT_defvar_tmpc=\XINT_defvar_tmpd\space - \xintAssignArray\xintCSVtoList\XINT_defvar_tmpa\to\XINT_defvar_tmpvar - \xintAssignArray\xintApply\XINT_embrace{\XINT_defvar_tmpb}\to\XINT_defvar_tmpval - \def\XINT_defvar_tmpd{1}% - \xintloop - \expandafter\XINT_expr_defvar_one - \csname XINT_defvar_tmpvar\XINT_defvar_tmpd\expandafter\endcsname - \csname XINT_defvar_tmpval\XINT_defvar_tmpd\endcsname - \ifnum\XINT_defvar_tmpd<\XINT_defvar_tmpc\space - \edef\XINT_defvar_tmpd{\the\numexpr\XINT_defvar_tmpd+1}% - \repeat - \xintRelaxArray\XINT_defvar_tmpvar - \xintRelaxArray\XINT_defvar_tmpval - \else - \xintMessage {xintexpr}{Error} - {Aborting: mismatch between number of variables (\XINT_defvar_tmpc) - and number of \XINT_defvar_tmpe values (\XINT_defvar_tmpd).}% + \if0\expandafter\expandafter\expandafter\XINT_defvar_checkifnutple + \expandafter\string\XINT_defvar_tmpb _\xint_bye + \odef\XINT_defvar_tmpb{\expandafter{\XINT_defvar_tmpb}}% + \else + \edef\XINT_defvar_tmpd{\expandafter\xintLength\expandafter{\XINT_defvar_tmpb}}% + \fi \fi + \xintAssignArray\xintCSVtoList\XINT_defvar_tmpa\to\XINT_defvar_tmpvar + \def\XINT_defvar_tmpe{1}% + \expandafter\XINT_expr_defvar_multiple\XINT_defvar_tmpb\relax + \fi +}% +\def\XINT_defvar_checkifnutple#1% +{% + \if#1_1\fi + \if#1\bgroup1\fi + 0\xint_bye +}% +\def\XINT_expr_defvar_multiple +{% + \ifnum\XINT_defvar_tmpe<\XINT_defvar_tmpc\space + \expandafter\XINT_expr_defvar_multiple_one + \else + \expandafter\XINT_expr_defvar_multiple_last\expandafter\empty \fi +}% +\def\XINT_expr_defvar_multiple_one +{% + \ifnum\XINT_defvar_tmpe>\XINT_defvar_tmpd\space + \expandafter\XINT_expr_defvar_one + \csname XINT_defvar_tmpvar\XINT_defvar_tmpe\endcsname{}% + \edef\XINT_defvar_tmpe{\the\numexpr\XINT_defvar_tmpe+1}% + \expandafter\XINT_expr_defvar_multiple + \else + \expandafter\XINT_expr_defvar_multiple_one_a + \fi +}% +\def\XINT_expr_defvar_multiple_one_a #1% +{% + \expandafter\XINT_expr_defvar_one + \csname XINT_defvar_tmpvar\XINT_defvar_tmpe\endcsname{{#1}}% + \edef\XINT_defvar_tmpe{\the\numexpr\XINT_defvar_tmpe+1}% + \XINT_expr_defvar_multiple +}% +\def\XINT_expr_defvar_multiple_last #1\relax +{% + \expandafter\XINT_expr_defvar_one + \csname XINT_defvar_tmpvar\XINT_defvar_tmpe\endcsname{#1}% + \xintRelaxArray\XINT_defvar_tmpvar \let\XINT_defvar_tmpa\empty \let\XINT_defvar_tmpb\empty \let\XINT_defvar_tmpc\empty \let\XINT_defvar_tmpd\empty + \let\XINT_defvar_tmpe\empty }% \catcode`~ 3 \catcode`: 11 @@ -40479,9 +40940,9 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \def\xintdeffloatvar_a #1={\XINT_expr_defvar\xintthebareroundedfloateval{#1}}% % \end{macrocode} % \subsubsection{\csh{xintunassignvar}} -% \changed{1.2e}{} +% \changed{1.2e} % -% \changed{1.3d}{} +% \changed{1.3d} % Embarrassingly I had for a long time a misunderstanding of |\ifcsname| % (let's blame its documentation) and I was not aware that it chooses FALSE % branch if tested control sequence has been |\let| to |\undefined|... So @@ -40490,6 +40951,9 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % % The |\ifcsname| tests are done in \csbXINT{_expr_op__} and % \csbXINT{_expr_op_`}. +% +% \changed{1.4i} +% Track |s/onliteral/var*/| change in macro names. % \begin{macrocode} \def\xintunassignvar #1{% \edef\XINT_unvar_tmpa{#1}% @@ -40503,7 +40967,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \XINT_global\expandafter \let\csname XINT_expr_var_\XINT_unvar_tmpa\endcsname\xint_undefined \XINT_global\expandafter - \let\csname XINT_expr_onliteral_\XINT_unvar_tmpa\endcsname\xint_undefined + \let\csname XINT_expr_var*_\XINT_unvar_tmpa\endcsname\xint_undefined \ifxintverbose\xintMessage {xintexpr}{Info} {Variable \XINT_unvar_tmpa\space has been \ifxintglobaldefs globally \fi ``unassigned''.}% @@ -40523,6 +40987,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % % 1.4 adds multi-letter names as usable dummy variables! % | +% \changed[2021/06/11]{1.4i} +% \lverb|s/onliteral/var*/ to fix the «seq renaming bug».| % % % \begin{macrocode} @@ -40535,10 +41001,10 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \expandafter\let\csname XINT_expr_var_\XINT_tmpa/old\expandafter\endcsname \csname XINT_expr_var_\XINT_tmpa\expandafter\endcsname \fi - \ifcsname XINT_expr_onliteral_\XINT_tmpa\endcsname + \ifcsname XINT_expr_var*_\XINT_tmpa\endcsname \XINT_global - \expandafter\let\csname XINT_expr_onliteral_\XINT_tmpa/old\expandafter\endcsname - \csname XINT_expr_onliteral_\XINT_tmpa\expandafter\endcsname + \expandafter\let\csname XINT_expr_var*_\XINT_tmpa/old\expandafter\endcsname + \csname XINT_expr_var*_\XINT_tmpa\expandafter\endcsname \fi \expandafter\XINT_global \expanded @@ -40548,7 +41014,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \expandafter\XINT_global \expanded {\edef\expandafter\noexpand - \csname XINT_expr_onliteral_\XINT_tmpa\endcsname ##1\relax !\XINT_tmpa##2}% + \csname XINT_expr_var*_\XINT_tmpa\endcsname ##1\relax !\XINT_tmpa##2}% {\XINT_expr_prec_tacit *{##2}(##1\relax !\XINT_tmpa{##2}}%) }% \xintApplyUnbraced \XINT_expr_makedummy {abcdefghijklmnopqrstuvwxyz}% @@ -40560,25 +41026,27 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \ifxintglobaldefs globally \fi usable as dummy variable.}% \fi }% +\catcode`* 12 % \begin{macrocode} -% Je ne définis pas de onliteral for them (it only serves for allowing -% tacit multiplication if variable name is in front of an opening -% parenthesis). -% % The |nil| variable was need in |xint < 1.4| (with some other meaning) % in places the syntax could not allow emptiness, such as |,,|, and % other things, but at |1.4| meaning as changed. % % The other variables are new with |1.4|. % Don't use the |None|, it is tentative, and may be input as |[]|. +% +% Refactored at |1.4i| to define them as really genuine variables, +% i.e. also with associated |var*| macros involved in tacit multiplication +% (even though it will be broken with |nil|, and with |None| in |\xintiiexpr|). +% No real reason, because |\XINT_expr_op__| managed them fine even in absence +% of |var*| macros. % \begin{macrocode} -\def\XINT_expr_var_nil{{}}% -\def\XINT_expr_var_None{{{}}}% ? tentative -\def\XINT_expr_var_false{{{0}}}% Maple, TeX -\def\XINT_expr_var_true{{{1}}}% -\def\XINT_expr_var_False{{{0}}}% Python -\def\XINT_expr_var_True{{{1}}}% -\catcode`* 12 +\XINT_expr_defvar_one{nil}{}% +\XINT_expr_defvar_one{None}{{}}% ? tentative +\XINT_expr_defvar_one{false}{{0}}% Maple, TeX +\XINT_expr_defvar_one{true}{{1}}% +\XINT_expr_defvar_one{False}{{0}}% Python +\XINT_expr_defvar_one{True}{{1}}% % \end{macrocode} % \subsubsection{\csh{xintensuredummy}, \csh{xintrestorevariable}} % \lverb|1.3e \xintensuredummy differs from \xintnewdummy only in the informational message... @@ -40603,10 +41071,10 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \expandafter\let\csname XINT_expr_var_\XINT_tmpa\expandafter\endcsname \csname XINT_expr_var_\XINT_tmpa/old\expandafter\endcsname \fi - \ifcsname XINT_expr_onliteral_\XINT_tmpa/old\endcsname + \ifcsname XINT_expr_var*_\XINT_tmpa/old\endcsname \XINT_global - \expandafter\let\csname XINT_expr_onliteral_\XINT_tmpa\expandafter\endcsname - \csname XINT_expr_onliteral_\XINT_tmpa/old\expandafter\endcsname + \expandafter\let\csname XINT_expr_var*_\XINT_tmpa\expandafter\endcsname + \csname XINT_expr_var*_\XINT_tmpa/old\expandafter\endcsname \fi }% \def\xintrestorevariable #1{% @@ -40789,7 +41257,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % structures handling dummy variables would have needed refactoring. % % So finally things here remain unchanged and the refactoring to fix this -% breakage was done in \XINT_allexpr_subsx (and also subsm). See there. | +% breakage was done in \XINT_allexpr_subsx (and also subsm). +% Done at 1.4h. See \XINT_allexpr_subsx for comments.| % % \begin{macrocode} \edef\XINT_expr_var_omit #1\relax !{1\string !?!\relax !}% @@ -40831,7 +41300,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % \begin{macrocode} \catcode`* 11 \def\XINT_expr_var_@ #1~#2{{#2}#1~{#2}}% -\def\XINT_expr_onliteral_@ #1~#2{\XINT_expr_prec_tacit *{#2}(#1~{#2}}% +\def\XINT_expr_var*_@ #1~#2{\XINT_expr_prec_tacit *{#2}(#1~{#2}}% \expandafter \def\csname XINT_expr_var_@1\endcsname #1~#2{{{#2}}#1~{#2}}% \expandafter @@ -40840,13 +41309,13 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \def\csname XINT_expr_var_@3\endcsname #1~#2#3#4{{{#4}}#1~{#2}{#3}{#4}}% \expandafter \def\csname XINT_expr_var_@4\endcsname #1~#2#3#4#5{{{#5}}#1~{#2}{#3}{#4}{#5}}% -\expandafter\def\csname XINT_expr_onliteral_@1\endcsname #1~#2% +\expandafter\def\csname XINT_expr_var*_@1\endcsname #1~#2% {\XINT_expr_prec_tacit *{{#2}}(#1~{#2}}% -\expandafter\def\csname XINT_expr_onliteral_@2\endcsname #1~#2#3% +\expandafter\def\csname XINT_expr_var*_@2\endcsname #1~#2#3% {\XINT_expr_prec_tacit *{{#3}}(#1~{#2}{#3}}% -\expandafter\def\csname XINT_expr_onliteral_@3\endcsname #1~#2#3#4% +\expandafter\def\csname XINT_expr_var*_@3\endcsname #1~#2#3#4% {\XINT_expr_prec_tacit *{{#4}}(#1~{#2}{#3}{#4}}% -\expandafter\def\csname XINT_expr_onliteral_@4\endcsname #1~#2#3#4#5% +\expandafter\def\csname XINT_expr_var*_@4\endcsname #1~#2#3#4#5% {\XINT_expr_prec_tacit *{{#5}}(#1~{#2}{#3}{#4}{#5}}% \catcode`* 12 \catcode`? 3 @@ -41042,10 +41511,11 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % the files which show this bug already at time of 1.4 release but did not % compile them, and they were not included in my test suite. % -% I hesitated with modifying the delimiter from "\relax !" (catcode 11 !) to -% "\relax \xint_Bye" for the dummy variables which would have allowed some -% trickery with clean-up from \xint_Bye but got afraid from the breakage -% potential of such refactoring with many induced changes. +% I hesitated with modifying the delimiter from "\relax !<varname>" (catcode +% 11 !) to "\relax \xint_Bye<varname>" for the dummy variables which would +% have allowed some trickery using \xint_Bye...\xint_bye clean-up but got +% afraid from the breakage potential of such refactoring with many induced +% changes. % % A variant like this: %( \def\XINT_allexpr_subsx #1#2#3#4% @@ -41074,10 +41544,10 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % But in the end I decided to simply fix the first envisioned code above. % This accepts expansion of supposedly inert #3{#2}. There is again the % \iffalse but it is moved to the right. This change limits possibly hacky -% future developments. +% future developments. Done at 1.4h (2021/01/27). % -% No need for the \expandafter's from \XINT_expr_put_op_first in \XINT_expr_clean_and_put_op_first. -% | +% No need for the \expandafter's from \XINT_expr_put_op_first in +% \XINT_expr_clean_and_put_op_first. | % \begin{macrocode} \def\XINT_allexpr_subsx #1#2#3#4% {% @@ -41805,13 +42275,13 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % \lverb|bool, togl and protect use delimited macros. They are not true % functions, they turn off the parser to gather their "variable".| % -% \changed{1.2}{} adds |qint()|, |qfrac()|, |qfloat()|. +% \changed{1.2} Adds |qint()|, |qfrac()|, |qfloat()|. % -% \changed{1.3c}{} adds |qraw()|. Useful to limit impact on \TeX{} memory +% \changed{1.3c} Adds |qraw()|. Useful to limit impact on \TeX{} memory % from abuse of |\csname|'s storage when generating many comma separated % values from a loop. % -% \changed{1.3e}{} |qfloat()| keeps a short mantissa if possible. +% \changed{1.3e} |qfloat()| keeps a short mantissa if possible. % % \lverb|They allow the user to hand over quickly a big number to the parser, % spaces not immediately removed but should be harmless in general. The qraw() @@ -42199,12 +42669,12 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % % After some hesitation at 1.4e regarding guard digits mechanism the float_() % got renamed to float_dgt(), but then renamed back to float_() to avoid a -% breaking change and having to document it. But I don't like the name. +% breaking change and having to document it. % -% The documentation of 1.4e mentioned float_dgt(), but here it was still -% float_()... now changed for real. +% Nevertheless the documentation of 1.4e mentioned float_dgt()... but it was still +% float_()... now changed into float_dgt() for real at 1.4f. % -% 1.4f adds private float_dgtormax and sfloat_dgtormax for matters of xinttrig. +% 1.4f also adds private float_dgtormax and sfloat_dgtormax for matters of xinttrig. % % | % \begin{macrocode} @@ -42246,11 +42716,6 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \XINT:expr:f:one:and:opt #3,!\xintiLogTen\XINTFloatiLogTen }}% }% -% \end{macrocode} -% \lverb|& -% 1.4e does not add guard digits usage to ilog10(x) -% | -% \begin{macrocode} \expandafter\def\csname XINT_flexpr_func_ilog10\endcsname #1#2#3% {% \expandafter #1\expandafter #2\expandafter{\expandafter{% @@ -42489,7 +42954,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \def\XINT_expr_func_len #1#2#3% {% \expandafter#1\expandafter#2\expandafter{\expandafter{% - \romannumeral`&&@\XINT:NEhook:f:noeval:from:braced:u\xintLength#3^% + \romannumeral`&&@\XINT:NEhook:f:LFL\xintLength + {\romannumeral\XINT:NEhook:r:check#3^}% }}% }% \let\XINT_flexpr_func_len \XINT_expr_func_len @@ -42497,7 +42963,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \def\XINT_expr_func_first #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% - \romannumeral`&&@\XINT:NEhook:f:noeval:from:braced:u\xintFirstOne#3^% + \romannumeral`&&@\XINT:NEhook:f:LFL\xintFirstOne + {\romannumeral\XINT:NEhook:r:check#3^}% }% }% \let\XINT_flexpr_func_first\XINT_expr_func_first @@ -42505,7 +42972,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \def\XINT_expr_func_last #1#2#3% {% \expandafter #1\expandafter #2\expandafter{% - \romannumeral`&&@\XINT:NEhook:f:noeval:from:braced:u\xintLastOne#3^% + \romannumeral`&&@\XINT:NEhook:f:LFL\xintLastOne + {\romannumeral\XINT:NEhook:r:check#3^}% }% }% \let\XINT_flexpr_func_last\XINT_expr_func_last @@ -42636,40 +43104,40 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % \subsubsection{\csh{xintdeffunc}, \csh{xintdefiifunc}, % \csh{xintdeffloatfunc}} % -% \changed{1.2c}{2015/11/12} +% \changed[2015/11/12]{1.2c} % \lverb|Note: it is possible to have same name assigned both to a variable % and a function: things such as add(f(f), f=1..10) are possible.| % -% \changed{1.2c}{2015/11/13} +% \changed[2015/11/13]{1.2c} % \lverb|Function names first expanded then detokenized and cleaned of spaces.| % -% \changed{1.2e}{2015/11/21} +% \changed[2015/11/21]{1.2e} % \lverb|No \detokenize anymore on the function % names. And #1(#2)#3=#4 parameter pattern to avoid to have to worry if a : is % there and it is active.| % -% \changed{1.2f}{2016/02/22} +% \changed[2016/02/22]{1.2f} % \lverb|La macro associée à la fonction ne débute % plus par un \romannumeral, car de toute façon elle est pour emploi dans % \csname..\endcsname.| % -% \changed{1.2f}{2016/03/08} +% \changed[2016/03/08]{1.2f} % \lverb|Comma separated expressions allowed (formerly this required using % parenthesis \xintdeffunc foo(x,..):=(.., .., ..);| % -% \changed{1.3c}{2018/06/17} +% \changed[2018/06/17]{1.3c} % \lverb|Usage of \xintexprSafeCatcodes to be compatible with an active % semi-colon at time of use; the colon was not a problem (see ##3) already.| % -% \changed{1.3e}{??} +% \changed{1.3e} % \lverb|\xintdefefunc variant added for functions which will expand % completely if used with numeric arguments in other function definitions. % They can't be used for recursive definitions.| % -% \changed{1.4}{2020/01/10} +% \changed[2020/01/10]{1.4} % \lverb|Multi-letter variables can be used (with no prior declaration)| % -% \changed{1.4}{2020/01/11} +% \changed[2020/01/11]{1.4} % \lverb|The new internal data model has caused many worries initially (such % as whether to allow functions with «ople» outputs in contrast to «numbers» % or «nutples») but in the end all is simpler again and the refactoring of ? @@ -42687,6 +43155,10 @@ on input line \noexpand\the\inputlineno.&&J}}#2% % % | % +% \changed[2020/01/19]{1.4} +% \lverb|Addition de la syntaxe déclarative \xintdeffunc foo(a,b,...,*z) = ...; +% +% | % % \begin{macrocode} \def\XINT_tmpa #1#2#3#4#5% @@ -42779,6 +43251,9 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \XINT:NEhook:userfunc{XINT_#4_userfunc_#3}#2%##3% }% \else +% \end{macrocode} +% \lverb|Last argument in the call signature is variadic (was prefixed by *).| +% \begin{macrocode} \def #1##1{% \XINT_global\def #1####1####2%####3% {% @@ -42787,7 +43262,56 @@ on input line \noexpand\the\inputlineno.&&J}}#2% }}\expandafter#1\expandafter{\the\numexpr\XINT_deffunc_tmpb-1}% \fi }% +% \end{macrocode} +% \lverb|Deliberate brace stripping of #3 to reveal the elements of the ople, +% which may be atoms i.e. numeric data such as {1}, or again oples, which +% means that the corresponding item was a nutple, for example it came from +% input syntax such as foo(1, 2, [1, 2], 3), so (up to details of raw +% encoding) {1}{2}{{1}{2}}{3}, which gives 4 braced arguments to macro #2.| +% \begin{macrocode} \def\XINT:NEhook:userfunc #1#2#3{#2#3\iffalse{{\fi}}}% +% \end{macrocode} +% \lverb|Here #1 indicates the number k-1 of standard positional arguments of +% the call signature, the kth and last one having been declared of variadic +% type. The braces around \xintTrim{#1}{#4} have the effect to gather all +% these remaining elements to provide a single one to the TeX macro. +% +% For example input was foo(1,2,3,4,5) and call signature was foo(a,b,*z). +% Then #4 will fetch {{1}{2}{3}{4}{5}}, with one level of brace removal. +% We will have \xintKeep{2}{{1}{2}{3}{4}{5}} which produces {1}{2}. +% Then {\xintTrim{2}{{1}{2}{3}{4}{5}}} which produces {{3}{4}{5}}. +% So the macro will be used as \macro{1}{2}{{3}{4}{5}} having been +% declared as a macro with 3 arguments. +% +% The above comments were added in June 2021 but the code was done on January +% 19, 2020 for 1.4. +% +% Note on June 10, 2021: at core level \XINT_NewFunc is used which is derived +% from \XINT_NewExpr which has always prepared TeX macros with non-delimited +% parameters. A refactoring could add a final delimiter, for example \relax. +% The macro with 3 arguments would be defined as \def\macro#1#2#3\relax{...} +% for example. Then we could transfer to TeX core processing what is achieved +% here via \xintKeep/\xintTrim, of course adding efficiency, via insertion of +% the delimiter. In the case of foo(1,2,3,4,5) we would have the #3 of +% delimited \macro fetch {3}{4}{5}, no brace removal, which is equivalent to +% current situation fetching {{3}{4}{5}} with brace removal. But let's see in +% case of foo(1,2,3) then. This would lead to delimited \macro{1}{2}{3}\relax +% and #3 will fetch {3}, removing one brace pair. Whereas current +% non-delimited \macro is used as \macro{1}{2}{{3}} from the Keep/Trim, then +% #3 fetches {{3}}, removing one brace pair. Not the same thing. So it seems +% there is a stumbling-block here to adopt such an alternative method, in +% relation with brace removal. Rather relieved in fact, as my head starts +% spinning in ople world. Seems better to stop thinking about doing something +% like that, and what it would imply as consequences for user declarative +% interface also. Oples are dangerous to mental health, let's stick with +% one-ples: « named arguments in function body declaration must stand for +% one-ples », even the last one, although a priori it could be envisioned if +% foo has been declared with call signature (x,y,z) and is used with more +% items that z is mapped to the ople of extra elements beyond the first +% two ones. For my sanity I stick with my January 2020 concept of (x,y,*z) +% which makes z stand for a nutple always and having to be used as such in the +% function body (possibly unpacked there using *z).| +% \begin{macrocode} \def\XINT:NEhook:userfunc:argv #1#2#3#4% {\expandafter#3\expanded{\xintKeep{#1}{#4}{\xintTrim{#1}{#4}}}\iffalse{{\fi}}}% \let\xintdefefunc\xintdeffunc @@ -43173,25 +43697,43 @@ on input line \noexpand\the\inputlineno.&&J}}#2% {% \if0\expandafter\XINT:NE:hastilde\detokenize{##2}~!\relax \expandafter\XINT:NE:hashash\detokenize{##2}#1!\relax 0% - \expandafter##1% + \xint_afterfi{\expandafter\XINT_fooof_checkifnumber\expandafter##1\string}% \else \xint_afterfi{\XINT:NE:f:from:delim:u:p##1\empty}% \fi ##2^% }}\expandafter\XINT:NE:f:from:delim:u\string#% \def\XINT:NE:f:from:delim:u:p #1#2^% - {\detokenize{\expandafter#1}~expanded{#2}$XINT_expr_caret}%$ -\def\XINT:NE:f:noeval:from:braced:u #1{% -\def\XINT:NE:f:noeval:from:braced:u ##1##2^% {% - \if0\XINT:NE:hastilde ##2~!\relax\XINT:NE:hashash ##2#1!\relax 0% + \detokenize{\expandafter\XINT:fooof:checkifnumber\expandafter#1}~expanded{#2}$XINT_expr_caret%$ +}% +\def\XINT:fooof:checkifnumber#1{\expandafter\XINT_fooof_checkifnumber\expandafter#1\string}% +\def\XINT:NE:f:LFL#1#2{\expandafter\XINT:NE:f:LFL_a\expandafter#1#2\XINT:NE:f:LFL_a}% +\def\XINT:NE:f:LFL_a#1#2% +{% + \if#2i\else\expandafter\XINT:NE:f:LFL_p + \fi #1% +}% +\def\XINT:NE:r:check#1{% +\def\XINT:NE:r:check##1\XINT:NE:f:LFL_a +{% + \if0\expandafter\XINT:NE:hastilde\detokenize{##1}~!\relax% + \expandafter\XINT:NE:hashash\detokenize{##1}#1!\relax 0% \else - \expandafter\XINT:NE:f:noeval:from:braced:u:p + \expandafter\XINT:NE:r:check:p \fi - ##1{##2}% -}}\expandafter\XINT:NE:f:noeval:from:braced:u\string#% -\def\XINT:NE:f:noeval:from:braced:u:p #1#2% - {\detokenize{\romannumeral`$XINT_expr_null\expandafter#1}~expanded{{#2}}}%$ + 1\expandafter{\romannumeral\XINT:NEsaved:r:check##1}% +}}\expandafter\XINT:NE:r:check\string#% +\def\XINT:NE:r:check:p 1\expandafter#1{\XINT:NE:r:check:p_i#1}% +\def\XINT:NE:r:check:p_i\romannumeral\XINT:NEsaved:r:check{\XINT:NE:r:check:p_ii\empty}% +\def\XINT:NE:r:check:p_ii#1^% +{% + 5~expanded{{~romannumeral~XINT:NEsaved:r:check#1$XINT_expr_caret}}%$ +}% +\def\XINT:NE:f:LFL_p#1% +{% + \detokenize{\romannumeral`$XINT_expr_null\expandafter#1}%$ +}% \catcode`- 11 \def\XINT:NE:exec_? #1#2% {% @@ -43597,7 +44139,8 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \let\XINT:NEhook:x:listsel \XINT:NE:x:listsel \let\XINT:NEhook:f:reverse \XINT:NE:f:reverse \let\XINT:NEhook:f:from:delim:u \XINT:NE:f:from:delim:u - \let\XINT:NEhook:f:noeval:from:braced:u\XINT:NE:f:noeval:from:braced:u + \let\XINT:NEhook:f:LFL \XINT:NE:f:LFL + \let\XINT:NEhook:r:check \XINT:NE:r:check \let\XINT:NEhook:branch \XINT:NE:branch \let\XINT:NEhook:seqx \XINT:NE:seqx \let\XINT:NEhook:opx \XINT:NE:opx @@ -43778,7 +44321,7 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \XINTsetcatcodes % clean up to avoid surprises if something changes % \end{macrocode} % \subsubsection{\csh{ifxintexprsafecatcodes}, \csh{xintexprSafeCatcodes}, \csh{xintexprRestoreCatcodes}} -% \changed{1.3c}{2018/06/17} +% \changed[2018/06/17]{1.3c} % \lverb|Added \ifxintexprsafecatcodes to allow nesting| % \begin{macrocode} \newif\ifxintexprsafecatcodes @@ -43989,10 +44532,10 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \expandafter\xint_secondoftwo \fi {\immediate\write-1{Reloading xinttrig library using Digits=\xinttheDigits.}}% -{\expandafter\gdef\csname xintlibver@trig\endcsname{2021/05/27 v1.4h}% +{\expandafter\gdef\csname xintlibver@trig\endcsname{2021/06/11 v1.4i}% \XINT_providespackage \ProvidesPackage{xinttrig}% -[2021/05/27 v1.4h Trigonometrical functions for xintexpr (JFB)]% +[2021/06/11 v1.4i Trigonometrical functions for xintexpr (JFB)]% }% % \end{macrocode} % \subsection{Ensure used letters are dummy letters} @@ -45309,10 +45852,10 @@ on input line \noexpand\the\inputlineno.&&J}}#2% \expandafter\xint_secondoftwo \fi {\immediate\write-1{Reloading xintlog library using Digits=\xinttheDigits.}}% -{\expandafter\gdef\csname xintlibver@log\endcsname{2021/05/27 v1.4h}% +{\expandafter\gdef\csname xintlibver@log\endcsname{2021/06/11 v1.4i}% \XINT_providespackage \ProvidesPackage{xintlog}% -[2021/05/27 v1.4h Logarithms and exponentials for xintexpr (JFB)]% +[2021/06/11 v1.4i Logarithms and exponentials for xintexpr (JFB)]% }% % \end{macrocode} % \subsection{\csh{xintreloadxintlog}} @@ -47348,7 +47891,7 @@ xint.sty:205 xintbinhex.sty:53 xintcfrac.sty:183 xintcore.sty:272 -xintexpr.sty:439 +xintexpr.sty:453 xintfrac.sty:511 xintgcd.sty:41 xintkernel.sty:17 @@ -47358,14 +47901,14 @@ xinttools.sty:157 xinttrig.sty:65 \fi % grep -o "^{%" xint*sty | wc -l -\def\totala{ 2141} +\def\totala{ 2155} \iffalse % grep -c -e "^}%" xint*sty xint.sty:204 xintbinhex.sty:52 xintcfrac.sty:183 xintcore.sty:269 -xintexpr.sty:422 +xintexpr.sty:436 xintfrac.sty:515 xintgcd.sty:43 xintkernel.sty:17 @@ -47375,7 +47918,7 @@ xinttools.sty:156 xinttrig.sty:64 \fi % grep -o "^}%" xint*sty | wc -l -\def\totalb{ 2124} +\def\totalb{ 2138} \cleardoublepage \section{Cumulative line count} @@ -47399,7 +47942,8 @@ xinttrig.sty:64 \TeX\strut. Version {\xintbndlversion} of {\xintbndldate}.\par } -\CheckSum {38427}% 1.4h +\CheckSum {38591}% 1.4i +% 38427 pour 1.4h % 38423 pour 1.4g, 38212 pour 1.4f, 38813 pour 1.4e, 35184 pour 1.4d % 35109 pour 1.4c, 35103 pour 1.4b, 34648 pour 1.4a, 34575 pour 1.4 % 33497 pour 1.3f, 33274 pour 1.3e, 31601 pour 1.3d, 31122 pour 1.3c diff --git a/macros/generic/xint/xint.pdf b/macros/generic/xint/xint.pdf Binary files differindex 25d711ab0f..aefccc2af7 100644 --- a/macros/generic/xint/xint.pdf +++ b/macros/generic/xint/xint.pdf diff --git a/macros/latex/contrib/animate/ChangeLog b/macros/latex/contrib/animate/ChangeLog index de1293448a..df96396f01 100644 --- a/macros/latex/contrib/animate/ChangeLog +++ b/macros/latex/contrib/animate/ChangeLog @@ -1,3 +1,6 @@ +2021-06-11 + * fix: `undefined references' warning, when placing animation in a \phantom + 2020-10-07 * fix: pausing on the 0th/last frames (PDF output) diff --git a/macros/latex/contrib/animate/animate.pdf b/macros/latex/contrib/animate/animate.pdf Binary files differindex a1a258477c..1cb9d5a557 100644 --- a/macros/latex/contrib/animate/animate.pdf +++ b/macros/latex/contrib/animate/animate.pdf diff --git a/macros/latex/contrib/animate/animate.sty b/macros/latex/contrib/animate/animate.sty index caa4574eec..a492a7677d 100644 --- a/macros/latex/contrib/animate/animate.sty +++ b/macros/latex/contrib/animate/animate.sty @@ -11,9 +11,9 @@ % Supports LaTeX->dvips->ps2pdf, (Xe)LaTeX->(x)dvipdfmx, LuaLaTeX, % pdfLaTeX and LaTeX->dvisvgm workflows. -\NeedsTeXFormat{LaTeX2e} +\NeedsTeXFormat{LaTeX2e}[2020-10-01] -\def\@anim@version{2020/10/07} +\def\@anim@version{2021/06/11} \ProvidesPackage{animate} [\@anim@version\space PDF & SVG animations from files and inline graphics] @@ -187,6 +187,9 @@ } \let\@anim@fpeval\fp_eval:n + +%hashing object references of embedded files to avoid multiple inclusion +\let\@anim@pdfmdfivesum\file_mdfive_hash:n \ExplSyntaxOff \if@anim@dvisvgm @@ -235,24 +238,6 @@ \fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%\pdfmdfivesum is used for hashing object references of embedded files based -%on their MD5 digest (in order to avoid multiple inclusion); if it is not -%available, hashing will be based on the file name -\ifluatex - \RequirePackage{pdftexcmds} - \let\@anim@pdfmdfivesum\pdf@filemdfivesum -\else - \ifcsname pdfmdfivesum\endcsname - \def\@anim@pdfmdfivesum#1{\pdfmdfivesum file {#1}} - \else - \ifcsname mdfivesum\endcsname - \def\@anim@pdfmdfivesum#1{\mdfivesum file {#1}} - \else - \def\@anim@pdfmdfivesum#1{#1} - \fi - \fi -\fi - %creating and using global definitions \def\@anim@newkey#1#2{{\expandafter\xdef\csname#1\endcsname{#2}}} \def\@anim@getkeyval#1{\ifcsname#1\endcsname\csname#1\endcsname\fi} @@ -1554,9 +1539,11 @@ \fi% \begingroup% %store current abs. page num in macro \@anim@abspage - \zref@labelbyprops{anim@abspage\the\@anim@num}{abspage}% - \zref@def@extractdefault{\@anim@abspage}{% - anim@abspage\the\@anim@num}{abspage}{-1}% + \if@anim@dvisvgm\if@anim@draft\else% + \zref@labelbyprops{anim@abspage\the\@anim@num}{abspage}% + \zref@def@extractdefault{\@anim@abspage}{% + anim@abspage\the\@anim@num}{abspage}{-1}% + \fi\fi% \@anim@beginLTR% \ifcsname Ginput@path\endcsname% make use of graphic[xs] search path \let\input@path\Ginput@path% @@ -2078,9 +2065,11 @@ \fi% \begingroup% %store current abs. page num in macro \@anim@abspage - \zref@labelbyprops{anim@abspage\the\@anim@num}{abspage}% - \zref@def@extractdefault{\@anim@abspage}{% - anim@abspage\the\@anim@num}{abspage}{-1}% + \if@anim@dvisvgm\if@anim@draft\else% + \zref@labelbyprops{anim@abspage\the\@anim@num}{abspage}% + \zref@def@extractdefault{\@anim@abspage}{% + anim@abspage\the\@anim@num}{abspage}{-1}% + \fi\fi% \@anim@beginLTR% \ifdefined\NoHyper\NoHyper\fi% silently suppress any hyperref specials \ifcsname Ginput@path\endcsname% make use of graphic[xs] search path @@ -4240,20 +4229,20 @@ if(a#1_idx==\@anim@maxframe)a#1_playsRight=false;$% if(a#1_playsRight){a#1_playRight();}else{a#1_playLeft();}% \else - var a#1_doplay=true;$% + var doplay=true;$% if(a#1_idx==\@anim@maxframe&&a#1_playsRight){% a#1_stopFirst();% \if@anim@pauseframes - if(a#1_pauseAt[a#1_idx]){a#1_pause();a#1_doplay=false;}% + if(a#1_pauseAt[a#1_idx]){a#1_pause();doplay=false;}% \fi% }$% if(a#1_idx==0&&!a#1_playsRight){% a#1_stopLast();% \if@anim@pauseframes - if(a#1_pauseAt[a#1_idx]){a#1_pause();a#1_doplay=false;}% + if(a#1_pauseAt[a#1_idx]){a#1_pause();doplay=false;}% \fi% }$% - if(a#1_doplay){% + if(doplay){% if(a#1_playsRight){a#1_playRight();}else{a#1_playLeft();}% }$% \fi diff --git a/macros/latex/contrib/animate/animate.tex b/macros/latex/contrib/animate/animate.tex index 1cabe9c9fe..4721acff54 100644 --- a/macros/latex/contrib/animate/animate.tex +++ b/macros/latex/contrib/animate/animate.tex @@ -1,12 +1,18 @@ -\listfiles +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Copyright 2007--\today Alexander Grahn % % This material is subject to the LaTeX Project Public License. See % http://mirrors.ctan.org/macros/latex/base/lppl.txt % for the details of that license. % -\ifdefined\outputmode\outputmode=0\fi -\ifdefined\pdfoutput\pdfoutput=0\fi +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\listfiles + +\RequirePackage{pdfmanagement-testphase} +\DeclareDocumentMetadata{ +% uncompress +} + \documentclass[a4paper]{article} \frenchspacing \usepackage[buttonbg=0.9]{animate} @@ -18,7 +24,6 @@ \usepackage{graphicx} \graphicspath{{files/}} \addmediapath{files} -\usepackage{color} \usepackage{textcomp} \usepackage{mflogo} \usepackage[T1]{fontenc} @@ -27,13 +32,11 @@ \usepackage[tt=false]{libertine} %override beramono (doesn't look like tt font) \usepackage{libertinust1math} \usepackage[protrusion]{microtype} -%\usepackage{ifpdf} \usepackage{parskip} \usepackage{tabls} \usepackage{multirow} \usepackage[bookmarksnumbered,linktocpage]{hyperref} \usepackage[ocgcolorlinks]{ocgx2} -\usepackage{breakurl} \usepackage{amsmath} \usepackage{fancyvrb} \usepackage{tabularx} @@ -56,12 +59,6 @@ {\itshape\normalsize}} \makeatother -%\ifpdf -% \makeatletter -% \@latex@error{This document contains PSTricks code.\MessageBreak Please compile it using the following commands:\MessageBreak\MessageBreak latex, dvips, ps2pdf\MessageBreak\MessageBreak Don't use option `-Ppdf` with dvips} -% \makeatother -%\fi - \def\keywords{include portable PDF animation SVG animation animated PDF animated SVG dvisvgm html TeX4ht web animating embed animated graphics LaTeX pdfLaTeX LuaLaTeX PSTricks pgf TikZ LaTeX-picture MetaPost inline graphics vector graphics animated GIF LaTeX dvips ps2pdf dvipdfmx XeLaTeX JavaScript Acrobat Reader KDE Okular PDF-XChange Foxit Reader Firefox Chrome Chromium} \hypersetup{ pdftitle={The animate Package}, @@ -1475,17 +1472,17 @@ In \TeX4ht documents, the whole \verb+<object>...</object>+ tag can be inserted \section{Acknowledgements} I would like to thank François Lafont who discovered quite a few bugs and made many suggestions that helped to improve the functionality of the package. Many thanks to Jin-Hwan Cho, the developer of \verb+dvipdfmx+, for contributing the \verb+dvipdfmx+ specific code, and to Walter Scott for proof-reading the documentation. -\enlargethispage{4ex} +%\enlargethispage{4ex} \begin{thebibliography}{8} -\bibitem{chupin} Chupin, M.: \emph{Syracuse MetaPost/Animations.} URL: \href{http://melusine.eu.org/syracuse/metapost/animations/chupin/?idsec=scara}{\url{http://melusine.eu.org/}} \href{http://melusine.eu.org/syracuse/metapost/animations/chupin/?idsec=scara}{\url{syracuse/metapost/animations/chupin/?idsec=scara}} +\bibitem{chupin} Chupin, M.: \emph{Syracuse MetaPost/Animations.} URL: \href{http://melusine.eu.org/syracuse/metapost/animations/chupin/?idsec=scara}{\texttt{http://melusine.eu.org/}} \href{http://melusine.eu.org/syracuse/metapost/animations/chupin/?idsec=scara}{\texttt{syracuse/metapost/animations/chupin/?idsec=scara}} \bibitem{dvisvgm} \emph{dvisvgm: A fast DVI to SVG converter} URL: \url{http://dvisvgm.de} \bibitem{gilg05} Gilg, J.: PDF-Animationen. In: \emph{Die \TeX nische Kom\"odie}, Issue 4, 2005, pp.~30--37 -%\bibitem{hol} Holeček, J.: \emph{Animations in a pdf\TeX-generated PDF}. URL: \url{http://www.fi.muni.cz/~xholecek/tex/pdfanim.xhtml} +%%\bibitem{hol} Holeček, J.: \emph{Animations in a pdf\TeX-generated PDF}. URL: \url{http://www.fi.muni.cz/~xholecek/tex/pdfanim.xhtml} \bibitem{hol} Holeček, J.; Sojka, P.: Animations in pdf\TeX-generated PDF. In: \emph{\TeX, XML, and Digital Typography}, Springer, 2004, pp.~179--191. doi:10.1007/978-3-540-27773-6\textunderscore14 \bibitem{luque12} Luque, M.: \emph{PSTricks : applications.} URL: \url{http://pstricks.blogspot.com} \bibitem{media4svg} \emph{The media4svg Package}. URL: \url{http://www.ctan.org/pkg/media4svg} \bibitem{media9} \emph{The media9 Package}. URL: \url{http://www.ctan.org/pkg/media9} -\bibitem{texsx} \emph{Beamer: animate package and overlay}. URL: \href{https://tex.stackexchange.com/a/385209}{\url{https://tex.stackexchange.com}}\\ \href{https://tex.stackexchange.com/a/385209}{\url{/a/385209}} +\bibitem{texsx} \emph{Beamer: animate package and overlay}. URL: \href{https://tex.stackexchange.com/a/385209}{\texttt{https://tex.stackexchange.com}}\\\href{https://tex.stackexchange.com/a/385209}{\texttt{/a/385209}} \end{thebibliography} \end{document} diff --git a/macros/latex/contrib/animate/files/exp.mp b/macros/latex/contrib/animate/files/exp.mp index 85c5c42969..3bd6a03148 100644 --- a/macros/latex/contrib/animate/files/exp.mp +++ b/macros/latex/contrib/animate/files/exp.mp @@ -1,5 +1,5 @@ % Jan Holecek, Alexander Grahn -% 2018/11/29 +% 2021/04/08 prologues:=3; outputtemplate := "%j_%c.mps"; @@ -7,8 +7,6 @@ outputformat := "mps"; verbatimtex \documentclass{article} -\usepackage[latin1]{inputenc} -\usepackage[T1]{fontenc} %\usepackage{lmodern} \usepackage[tt=false]{libertine} \usepackage[libertine]{newtxmath} diff --git a/macros/latex/contrib/animate/files/scarab.mp b/macros/latex/contrib/animate/files/scarab.mp index 7e04c256d2..ff4b9ebc6a 100644 --- a/macros/latex/contrib/animate/files/scarab.mp +++ b/macros/latex/contrib/animate/files/scarab.mp @@ -1,5 +1,5 @@ % Maxime Chupin, Alexander Grahn -% 2018/11/29 +% 2021/04/08 prologues:=3; outputtemplate := "%j_%c.mps"; @@ -7,8 +7,6 @@ outputformat := "mps"; verbatimtex \documentclass{article} -\usepackage[latin1]{inputenc} -\usepackage[T1]{fontenc} %\usepackage{lmodern} \usepackage[tt=false]{libertine} \usepackage[libertine]{newtxmath} diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx index 174913a769..244a0d49ac 100644 --- a/macros/latex/contrib/easybook/easybook.dtx +++ b/macros/latex/contrib/easybook/easybook.dtx @@ -23,12 +23,12 @@ % % \changes{v1.20}{2021/01/09}{修改和完善用户文档。} % \changes{v1.20}{2021/01/09}{模板更改为使用 CC-BY 许可协议。} -% \changes{v1.25z}{2021/05/03}{取消附带的示例文件,可查看历史版本及其它来源的使用样例。} -% \changes{v1.25z}{2021/06/02}{将模块的代码独立出来为 \pkg{easybase} 宏包,适用于 \CTeX 文档类。} +% \changes{v1.25}{2021/05/03}{取消附带的示例文件,可查看历史版本及其它来源的使用样例。} +% \changes{v1.25}{2021/06/02}{将模块的代码独立出来为 \pkg{easybase} 宏包,适用于 \CTeX 文档类。} % % \title{\sffamily easybook 文档类手册} % \author{瞿毅} -% \date{2021/06/10\hskip\ccwd\relax v1.25z\thanks{\url{https://gitee.com/texl3/easybook}}} +% \date{2021/06/11\hskip\ccwd\relax v1.26\thanks{\url{https://gitee.com/texl3/easybook}}} % % \maketitle % \begin{abstract} @@ -134,7 +134,7 @@ % \end{syntax} % 传递给 \cls{ctexbook} 设置字体,最好不要使用原有的 \opt{fontset} 选项,默认情况下使用自定义字体而不开启这个选项,可根据安装的字体及电脑系统选取。\opt{noto} 与 \opt{none} 选项的相关描述见小节 \ref{subsec:font settings},\opt{overleaf} 是一个各系统通用选项,会检测系统环境选取对应字体。 % \changes{v1.21}{2021/01/12}{默认字体与 \CTeX 一致,不再是自定义字体。} -% \changes{v1.25z}{2021/05/04}{修复使用 \pkg{xeCJK} 与 \pkg{fontspec} 宏包的字体设置命令在 \hologo{LuaLaTeX} 下失效的问题。} +% \changes{v1.25}{2021/05/04}{修复使用 \pkg{xeCJK} 与 \pkg{fontspec} 宏包的字体设置命令在 \hologo{LuaLaTeX} 下失效的问题。} % \end{function} % % \begin{function}[rEXP,added = 2021-01-05,updated = 2021-01-13]{paper} @@ -184,7 +184,7 @@ % \tn{listoflstlistings*+}\oarg{键值列表} % \end{syntax} % \tn{listoffigures} 命令输出图片目录,\tn{listoftables} 输出表格目录,\tn{listoflstlistings} 输出代码目录。带有星号的目录命令不将标题添加进主文档目录,带有+号的目录命令可以使当前标题编号。\tn{tableofcontents+} 与其它命令不同是用于输出双语目录,需要与双语目录标题命令 \tn{bichapter} 等或设置图片、表格和代码等英文目录的标题配合使用,附加代码是中文与英文目录之间的代码,可以插入目录样式和换页等命令。目录的键值列表选项如下 -% \changes{v1.25z}{2021/05/05}{命令 \tn{tableofcontents} 可以输出双语目录。} +% \changes{v1.25}{2021/05/05}{命令 \tn{tableofcontents} 可以输出双语目录。} % \end{function} % % \begin{function}{multoc,columns,title,format,aftertitle,pagestyle,chapter,section} @@ -201,7 +201,7 @@ % 在书籍模式且 \opt{chapter} 选项开启或者文章模式的情况下,\opt{format} 用于设置目录标题的格式,\opt{aftertitle} 选项的代码将被插入到目录标题内容之后,\opt{pagestyle} 是目录标题所在页的页面格式,除此之外还支持 \opt{ctexset/chapter} 或 \opt{ctexset/section} 所有的章节标题样式选项。\opt{chapter} 选项使目录标题按照 chapter 级别输出,\opt{section} 选项使目录标题按照 section 级别输出,默认为 chapter 级别。 % \changes{v1.23}{2021/03/15}{为几个目录增加键值列表的选项,可设置标题输出级别以及是否加入主目录。} % \changes{v1.24}{2021/04/04}{目录命令的可选参数增加标题键值。} -% \changes{v1.25z}{2021/06/02}{目录可设置多栏,并在 article 模式仍然生效。} +% \changes{v1.25}{2021/06/02}{目录可设置多栏,并在 article 模式仍然生效。} % \end{function} % % \subsubsection{标题命令} @@ -214,7 +214,7 @@ % 双语目录的标题命令目前设置了常用的三个级别,它们将中文标题正常输出,并使中英文标题加入双语目录,这个功能是为国内一些大学的学位论文模板的要求设计,在一般情况和英文模式下不需要使用。 % % 它们的星号变体命令使文中标题不编号,但是仍然加入双语目录,若英文标题参数空置那么仅加入中文目录而不加入英文目录,这一特点与 \tn{chapter*} 等命令的行为不太一样,在一些情况下会用到。可选参数是目录中的中文标题,默认与中文标题一致,正文标题过长时可用它设置在目录中显示的标题。双语目录的格式是一致的,共享使用 \tn{tocset} 的设置,英文目录的章级别标题名及编号的修改方式如下 -% \changes{v1.25z}{2021/05/05}{增加与双语目录配合的标题命令。} +% \changes{v1.25}{2021/05/05}{增加与双语目录配合的标题命令。} % \end{function} % % \begin{function}{chapter/biname,chapter/binmuber} @@ -314,7 +314,7 @@ % \changes{v1.10}{2021/01/08}{修复了 \opt{linktopage} 选项关闭时目录中标题编号无超链接的问题。} % \changes{v1.23}{2021/03/19}{修复在 \pkg{ctex} v2.5.6 更新后 \cls{easybook} 与 \pkg{hyperref} 冲突问题。} % \changes{v1.24}{2021/04/05}{增加 \pkg{hyperref} 超链接选项完整的支持。} -% \changes{v1.25z}{2021/05/06}{模块名 \opt{link} 改为 \opt{refset},\opt{link} 作为兼容性保留。} +% \changes{v1.25}{2021/05/06}{模块名 \opt{link} 改为 \opt{refset},\opt{link} 作为兼容性保留。} % \end{function} % % \begin{optdesc} @@ -371,7 +371,7 @@ % \ding{229} 以上选项路径为 \opt{subfont/...} % \changes{v1.10}{2021/01/08}{加入自定义非正文字体选项。} % \changes{v1.23}{2021/02/08}{修复使用 \tn{zihao} 命令设置字体失效的问题。} -% \changes{v1.25z}{2021/05/31}{其它字体模块名由 \opt{elsefont} 改为 \opt{subfont},并增加数学字体的选项 \opt{subfont/math}。} +% \changes{v1.25}{2021/05/31}{其它字体模块名由 \opt{elsefont} 改为 \opt{subfont},并增加数学字体的选项 \opt{subfont/math}。} % \end{function} % % \begin{optdesc} @@ -396,7 +396,7 @@ % \changes{v1.21}{2021/01/11}{增加 \opt{bibset} 选项,可以使用 \hologo{BibTeX} 或 \hologo{biber} 编译参考文献。} % \changes{v1.23}{2021/02/23}{使用 \opt{bibset} 选项时可设置标注风格。} % \changes{v1.24}{2021/04/09}{可以不载入参考文献包手动配置参考文献格式。} -% \changes{v1.25z}{2021/05/12}{取消 \opt{bib-loadpkg} 选项,由是否设置参考文献数据库来决定载入宏包。} +% \changes{v1.25}{2021/05/12}{取消 \opt{bib-loadpkg} 选项,由是否设置参考文献数据库来决定载入宏包。} % \end{function} % % \begin{optdesc} @@ -595,14 +595,14 @@ % fnhang = <(true)|false> % fnmark-pos = <normal|(super)> % fnmark-num = <(plain)|pifont|pifont*|pifont-sans|pifont-sans*> -% fnmark-form = <脚注标记的格式> +% fnmark-form = <脚注标记格式> % afterfnmark = <脚注标记后的代码> % \end{syntax} % \ding{229} 以上选项路径为 \opt{hdrset/...} \\ % 上面几个选项用于设置脚注格式,\opt{fnparskip} 和 \opt{fnparindent} 选项仅在 \opt{fnhang = true} 时有效。\opt{fnhang} 用于将脚注设置为悬挂缩进的格式,\opt{fnmark-pos} 选项设置脚注编号的位置,正常文本或是上标形式。\opt{fnmark-num} 选项设置脚注编号的格式,默认为原生样式 \opt{plain},还可以改为 \opt{pifont} 的各个版本,从左往右依次为普通版、阴文衬线版、阳文无衬线版和阴文无衬线版,缺点是它们的编号仅包括1-10。 % % \opt{fnmark-form} 是脚注标记的格式,在此设置字体命令会覆盖 \opt{subfont/footnote} 的设置,最后一个格式命令可以带有一个参数,这个参数接受脚注编号,一般配合 \opt{fnmark-num = plain} 使用。\opt{afterfnmark} 是脚注标记后的代码,一般用于设置标记与文本间的距离。 -% \changes{v1.25z}{2021/05/12}{增加脚注样式设置选项。} +% \changes{v1.25}{2021/05/12}{增加脚注样式设置选项。} % \end{function} % % \subsection{目录样式} @@ -621,15 +621,15 @@ % \opt{format} 是目录中标题的格式,可以设置字体和加入垂直间距等,垂直间距最好使用无间距重合的 \tn{addvspace} 命令,带有加号的 \opt{format+} 选项用于在已有的格式命令后附加内容。\opt{indent} 是目录中标题在页面左侧的缩进距离,应该有长度单位。\opt{rule} 选项中一般应当使用 \tn{tocrule} 命令,将会在接下来介绍。\opt{numsep} 是有编号的标题在目录中编号与标题的间距。 % \changes{v1.21}{2021/01/13}{增加配置目录样式的选项。} % \changes{v1.24}{2021/04/20}{增加目录中编号与标题的间距选项 \opt{numsep}。} -% \changes{v1.25z}{2021/05/14}{可以分别设置图片、表格和代码目录的格式。} +% \changes{v1.25}{2021/05/14}{可以分别设置图片、表格和代码目录的格式。} % \end{function} % -% \begin{function}[added = 2021-01-13,updated = 2021-04-20]{\tocrule,\EBNumberLine} +% \begin{function}[added = 2021-01-13,updated = 2021-06-11]{\tocrule,\EBNumberLine} % \begin{syntax} % \tn{tocrule}*\oarg{引导点间距|(0.7pc)}\parg{引导点大小|(1.2)}\marg{引导点}\oarg{页码格式} % \tn{EBNumberLine}\marg{编号类型} % \end{syntax} -% \tn{tocrule} 命令生成目录引导线,需要在 \opt{rule} 选项中使用。带有星号的命令会使当前级别的目录引导线右边与页码连接而不是对齐。引导点间距需带有长度单位,引导点大小不带单位,为引导点符号正常大小的倍数,引导点一般为英文句号或 \tn{cdot} 中心点符号。页码格式的内容位于页码前面,可以设置页码字体、距离。 +% \tn{tocrule} 命令生成目录引导线,需要在 \opt{rule} 选项中使用。带有星号的命令会使当前级别的目录引导线右边与页码连接而不是对齐。引导点间距需带有长度单位,引导点大小不带单位,为引导点符号正常大小的倍数,引导点一般为英文句号或 \tn{cdot} 中心点符号。页码格式的内容位于页码前面,可以设置页码字体和距离等,最后一个格式命令可以带有一个参数,这个参数接受页码编号。 % % \tn{EBNumberLine} 命令类似 \CTeX 的 \tn{CTEXnumberline} 命令,用于 \opt{tocline} 选项中设置目录标签的编号。区别是它需要在 \opt{tocset/hang = false} 时使用,否则目录中无法显示标题编号,使用它的时候 \opt{numsep} 选项仍然有效。\meta{编号类型} 为 \opt{chapter} 和 \opt{section} 等,也可用参数 \#1 代替当前级别类型,标题名用参数 \#2 代替一般不变。 % \end{function} @@ -706,7 +706,7 @@ % \tn{end}\marg{环境名} % \end{syntax} % \pkg{tabularray} 是一个较新的宏包,不仅提供了 \pkg{tabularx}、\pkg{multirow}、和 \pkg{booktabs} 宏包的功能,并且不依赖其它宏包与它们同时使用不会产生冲突,还实现了用简便的键值列表方式设置表格样式。目前除了表头斜线以及跨页功能存在不足,其它方面已满足对表格绝大多数格式的需求,具体用法可见宏包的说明文档。 -% \changes{v1.25z}{2021/05/17}{使用功能更便捷齐全的 \pkg{tabularray} 宏包设置表格样式。} +% \changes{v1.25}{2021/05/17}{使用功能更便捷齐全的 \pkg{tabularray} 宏包设置表格样式。} % \end{function} % % \subsection{列表} @@ -879,7 +879,7 @@ % \tn{qtyrange}\oarg{键值列表}\marg{数字1}\marg{数字2}\marg{单位} % \end{syntax} % \pkg{siunitx} 宏包的 \tn{num} 命令可以输出以科学计数法表示的数值,单位格式化命令 \tn{unit} 包含文字项目(例如字母或数字)时,使用 . 和 \~{} 放置在单元乘积中间,并使用 \_ 和 \^{} 正确放置指定的下标和上标。格式化方法可在数学和文本模式下使用。而 \tn{qty} 命令可用来输出带有单位的量,\tn{qtyrange} 可以输出带有范围和单位的量。 -% \changes{v1.25z}{2021/05/18}{\pkg{siunitx} 宏包 v3.0.0 更新后用法改变,修改相关配置选项。} +% \changes{v1.25}{2021/05/18}{\pkg{siunitx} 宏包 v3.0.0 更新后用法改变,修改相关配置选项。} % \end{function} % % \begin{ctexexam} @@ -1062,7 +1062,7 @@ %<*class> \NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{l3keys2e} -\ProvidesExplClass{easybook}{2021/06/10}{1.25z}{beta} +\ProvidesExplClass{easybook}{2021/06/11}{1.26}{beta} \bool_set_false:N \l__eb_compile_draft_bool \bool_set_false:N \l__eb_title_newline_bool @@ -1306,20 +1306,25 @@ %<*package> \NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{etoolbox} -\ProvidesExplPackage{easybase}{2021/06/10}{1.25z}{beta} +\ProvidesExplPackage{easybase}{2021/06/11}{1.26}{beta} \cs_generate_variant:Nn \eb_ctex_define:nn { nx } \cs_generate_variant:Nn \int_to_arabic:n { v } +\cs_generate_variant:Nn \int_to_alph:n { v } \cs_generate_variant:Nn \dim_add:Nn { NV } \cs_generate_variant:Nn \eb_put_hyperref:n { x } \cs_generate_variant:Nn \seq_set_from_clist:Nn { No } \cs_generate_variant:Nn \int_compare:nNnT { oNnT } \cs_new_protected:Npn \eb_ctex_define:nn #1 { \keys_define:nn { ctex/#1 } } -\cs_new_protected:Npn \eb_patch_cmd:Nnn #1#2#3 +\cs_new_protected:Npn \eb_patch_cmd:nnn #1#2#3 { - \ctex_patch_cmd_once:NnnnTF #1 { } {#2} {#3} - { } { \ctex_patch_failure:N #1 } + \seq_set_from_clist:Nn \l__eb_control_sequence_seq {#1} + \seq_map_inline:Nn \l__eb_control_sequence_seq + { + \ctex_patch_cmd_once:NnnnTF ##1 { } {#2} {#3} + { } { \ctex_patch_failure:N ##1 } + } } \cs_new_protected:Npn \eb_preto_cmd:Nn #1#2 { @@ -1734,14 +1739,7 @@ \bool_if:NTF \l__eb_footnote_hang_bool { \booltrue{FN@hangfoot} } { \boolfalse{FN@hangfoot} } } -\eb_patch_cmd:Nnn \@footnotetext - { \reset@font } - { - \linespread{\fp_use:N \l__eb_spread_footnote_fp} - \selectfont\ignorespaces - \l__eb_subfont_footnote_tl - } -\eb_patch_cmd:Nnn \@mpfootnotetext +\eb_patch_cmd:nnn { \@footnotetext,\@mpfootnotetext } { \reset@font } { \linespread{\fp_use:N \l__eb_spread_footnote_fp} @@ -1751,12 +1749,14 @@ \ctex_after_end_preamble:n { \ExplSyntaxOn\char_set_catcode_letter:N \@ - \eb_patch_cmd:Nnn \@footnotemark + \eb_patch_cmd:nnn { \H@@footnotemark,\@footnotemark } { \@makefnmark } { + \group_begin: \tl_use:N \l__eb_subfont_footnote_tl \tl_use:N \l__eb_fnmark_format_tl {\hbox:n { \textsuperscript{\@thefnmark} }} + \group_end: } \ExplSyntaxOff\char_set_catcode_other:N \@ } @@ -1773,8 +1773,9 @@ } } } +\cs_new:Npn \eb_alph:n #1 { \int_to_alph:v { c@#1 } } \cs_set:Npn \thefootnote { \eb_footnote_counter:N \c@footnote } -\cs_set:Npn \thempfootnote { \int_to_alph:n { \c@mpfootnote } } +\cs_set:Npn \thempfootnote { \eb_alph:n { mpfootnote } } \cs_new_protected:Npn \eb_fnmark_number_set:nn #1#2 { \tl_const:cn { c__eb_fnmark_number_#1_tl } {#2} } @@ -1974,11 +1975,13 @@ { \normalsize\normalfont \titlerule*[#2]{\scalebox{#3}{#4}}#5 - \IfBooleanTF{#1} - {\thecontentspage} { - \bool_if:NTF \l__eb_toc_line_align_bool - { \contentspage } { \thecontentspage } + \IfBooleanTF{#1} + {\thecontentspage} + { + \bool_if:NTF \l__eb_toc_line_align_bool + { \contentspage } { \thecontentspage } + } } } \ctex_set:nn { tocset } @@ -2299,7 +2302,7 @@ \int_compare:nNnTF { \c@chapter } > { 0 } { \ExplSyntaxOn\char_set_catcode_letter:N \@ - \eb_patch_cmd:Nnn \CTEX@addbitocline + \eb_patch_cmd:nnn { \CTEX@addbitocline } { \def\CTEX@prechapter{\CTEX@prebichapter} \def\CTEX@thechapter{\CTEX@bichapter@number} @@ -2471,7 +2474,7 @@ } \cs_new:Npn \eb_arabic:n #1 { \int_to_arabic:v { c@#1 } } -\cs_gset:cpn { thesection } +\cs_gset:Npn \thesection { \int_compare:nNnT { \c@chapter } > { 0 } { \thechapter. } \eb_arabic:n { section } @@ -2667,25 +2670,13 @@ \linespread{\fp_use:N \l__eb_spread_math_fp} \selectfont\ignorespaces } -\eb_patch_cmd:Nnn \start@gather - { \collect@body } - { - \linespread{\fp_use:N \l__eb_spread_math_fp} - \selectfont\collect@body - } -\eb_patch_cmd:Nnn \start@align - { \collect@body } - { - \linespread{\fp_use:N \l__eb_spread_math_fp} - \selectfont\collect@body - } -\eb_patch_cmd:Nnn \start@multline +\eb_patch_cmd:nnn { \start@gather,\start@align,\start@multline } { \collect@body } { \linespread{\fp_use:N \l__eb_spread_math_fp} \selectfont\collect@body } -\eb_patch_cmd:Nnn \gather@split +\eb_patch_cmd:nnn { \gather@split } { \spread@equation } { \linespread{\fp_use:N \l__eb_spread_math_fp} @@ -2853,7 +2844,7 @@ { standard~jigsaw, nobeforeafter,tcbox~raise~base, - top = 1.25zt,bottom = 1.25zt,left = 1.25zt,right = 1.25zt, + top = 1.25t,bottom = 1.25t,left = 1.25t,right = 1.25t, boxrule = 0.75pt,arc = 1pt, colback = #1,opacityback = 0.12,colframe = #1,#3 }{#2} diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf Binary files differindex ca382390fd..6f9f8b5a90 100644 --- a/macros/latex/contrib/easybook/easybook.pdf +++ b/macros/latex/contrib/easybook/easybook.pdf diff --git a/macros/latex/contrib/keyfloat/README.txt b/macros/latex/contrib/keyfloat/README.txt index 181f780ee7..f9fa62fb76 100644 --- a/macros/latex/contrib/keyfloat/README.txt +++ b/macros/latex/contrib/keyfloat/README.txt @@ -1,7 +1,7 @@ The LaTeX keyfloat package Provides a key/value interface for generating floats. -v2.04 +v2.05 Copyright 2016-2021 Brian Dunn — www.BDTechConcepts.com LaTeX Project Public License, version 1.3 diff --git a/macros/latex/contrib/keyfloat/keyfloat.dtx b/macros/latex/contrib/keyfloat/keyfloat.dtx index 7be362c421..5baa10608e 100644 --- a/macros/latex/contrib/keyfloat/keyfloat.dtx +++ b/macros/latex/contrib/keyfloat/keyfloat.dtx @@ -17,7 +17,7 @@ % \iffalse %<package>\NeedsTeXFormat{LaTeX2e} %<package>\ProvidesPackage{keyfloat} -%<package> [2021/06/08 v2.04 Key/value interface for floats and subfloats.] +%<package> [2021/06/11 v2.05 Key/value interface for floats and subfloats.] % %<*driver> \documentclass{ltxdoc} @@ -317,7 +317,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% %<*package> % \fi % -% \CheckSum{1326} +% \CheckSum{1320} % % \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 @@ -356,6 +356,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % \changes{v2.03}{2021/05/28}{Fixed \cs{hbadness} w/ \cs{relax}.} % \changes{v2.03}{2021/05/28}{2021/05/28} % \changes{v2.04}{2021/06/08}{2021/06/08} +% \changes{v2.05}{2021/06/11}{2021/06/11} @@ -793,6 +794,8 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % % \subsection{Keys and values} % +% \changes{v2.05}{2021/06/11}{Docs: Fixed braces for multi-word values.} +% % \newcommand{\largebullet}{{\Large\textbullet}} % % \begin{keytable}[bp]{c={Keys and values — part I},l={tab:keyvals},stretch=1.5} @@ -805,13 +808,13 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % \textrm{Key} & Sub\tnote{a} & Description & \textrm{Example} \\ % \midrule % c & \largebullet & An unstarred caption. -% If empty, creates a figure with a number but no caption. & c={A caption} \\ +% If empty, creates a figure with a number but no caption. & c=\{A caption\} \\ % cstar & \largebullet & A starred caption. Creates a float without a number. -% If empty, creates a figure with no number or caption. & cstar={No Num} \\ -% sc & \largebullet & The short caption for the \acro{LOF}/\acro{LOT}, even if cstar. & sc={Short cap} \\ +% If empty, creates a figure with no number or caption. & cstar=\{No Num\} \\ +% sc & \largebullet & The short caption for the \acro{LOF}/\acro{LOT}, even if cstar. & sc=\{Short cap\} \\ % cont & \largebullet & Continued float? & cont \\ % l & \largebullet & The label. Enclose in braces if a comma is included. -% Ignored in unnumbered floats. & l=fig:A name \\ +% Ignored in unnumbered floats. & l=fig:alabel \\ % ap, aup & \largebullet & Artist/author's prefix, such as ``Mr.''\,\tnote{b} & ap=Mr. \\ % af, auf & \largebullet & Artist/author's first name.\tnote{b} & af=First \\ % al, aul & \largebullet & Artist/author's last name.\tnote{b} & al=Last \\ @@ -820,10 +823,10 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % Enclose in braces if a comma is included. % May need \cs{protect} before macro calls. % Fully-justified alignment. -% & t={Paragraphs} \\ -% tc & \largebullet & Additional text, aligned to the center. & tc={Paragraphs} \\ -% tl & \largebullet & Additional text, aligned to the left. & tl={Paragraphs} \\ -% tr & \largebullet & Additional text, aligned to the right. & tr={Paragraphs} \\ +% & t=\{Paragraphs\} \\ +% tc & \largebullet & Additional text, aligned to the center. & tc=\{Paragraphs\} \\ +% tl & \largebullet & Additional text, aligned to the left. & tl=\{Paragraphs\} \\ +% tr & \largebullet & Additional text, aligned to the right. & tr=\{Paragraphs\} \\ % \bottomrule % \end{tabular} % \begin{tablenotes} @@ -843,6 +846,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % \end{keytable} +% \changes{v2.05}{2021/06/11}{Docs: Fixed \optn{r} key.} % \begin{keytable}{ % c={Keys and values — part II},cont,stretch=1.5} @@ -866,7 +870,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % & w=2in \\ % h & --- & Set the actual height, images only. & w=2in \\ % s & --- & Set the image scale, images only. & s=3 \\ -% a & --- & Set the rotation angle; counter-clockwise degrees. & r=90 \\ +% r & --- & Set the rotation angle; counter-clockwise degrees. & r=90 \\ % f & --- & Selects a loose frame with the current \cs{fboxsep}. % Only rotated with \cs{keyfig}. & f \\ % ft & --- & Selects a tight frame with no \cs{fboxsep}. Useful for photographs, @@ -1939,34 +1943,6 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % -% \subsection{Patching \pkg{wrapfig}} -% -% A minor patch to allow \pkg{wrapfig} to expand its argument for the -% number of narrow lines. -% This allows it to be programmed by \pkg{keyfloat}. -% -% \cs{WF@wr} will not be defined if using \pkg{lwarp} with \HTML\ output. -% \changes{v2.04}{2021/06/08}{Patch \pkg{wrapfig}.} -% \begin{macrocode} -\RequirePackage{xpatch} - -\ifdef{\WF@wr} -{ - \xpatchcmd{\WF@wr} - {\gdef} - {\xdef} - {} - { - \PackageError{keyfloat} - {Unable to patch wrapfig \protect\WF@wr} - {Please inform the keyfloat author.} - } -} -{} -% \end{macrocode} - - - % \DescribePackage{gettitlestring} Used by \pkg{hyperref} and \pkg{nameref}. % % \changes{v0.13}{2017/01/14}{Fix: Expands names in references.} @@ -3663,8 +3639,19 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % \changes{v2.04}{2021/06/08}{Added \optn{wn} and \optn{wo}.} % \begin{macrocode} \KFLT@findwidths% - \wrapfloat{\KFLT@type}[\KFLT@wn]{\KFLT@wp}[\KFLT@wo]% - {\KFLT@wrapwidth+2\KFLTlooseframewidth}% +% \end{macrocode} +% +% Expand the arguments for \pkg{wrapfig}: +% \changes{v2.05}{2021/06/11}{No longer patch \pkg{wrapfig} for expansion.} +% \begin{macrocode} + \edef\next{% + \noexpand\wrapfloat% + {\KFLT@type}[\KFLT@wn]{\KFLT@wp}[\KFLT@wo]% + {\KFLT@wrapwidth+2\KFLTlooseframewidth}% + }% + \next% +% \end{macrocode} +% \begin{macrocode} \minipage{\KFLT@wrapwidth+2\KFLTlooseframewidth}% % \end{macrocode} % diff --git a/macros/latex/contrib/keyfloat/keyfloat.pdf b/macros/latex/contrib/keyfloat/keyfloat.pdf Binary files differindex 3127cfeab0..c9b9c1987c 100644 --- a/macros/latex/contrib/keyfloat/keyfloat.pdf +++ b/macros/latex/contrib/keyfloat/keyfloat.pdf diff --git a/macros/latex/contrib/ltx4yt/README.md b/macros/latex/contrib/ltx4yt/README.md index 63993ec364..5d8bea3ffb 100644 --- a/macros/latex/contrib/ltx4yt/README.md +++ b/macros/latex/contrib/ltx4yt/README.md @@ -1,5 +1,5 @@ The ltx4yt package -Dated: 2020-07-30 +Dated: 2021-06-08 What ltx4yt does is to provide some tools for creating links, dropdown lists, popup menus for playing selected YouTube videos in the default browser. Perfect @@ -10,10 +10,13 @@ All workflows are supported: pdflatex, lualatex, xelatex, dvips->distiller, and dvips->ps2pdf. In the latter case, the document should not use any document JavaScripts. -This package replaces yt4pdf, which is being withdrawn from CTAN. +This package replaces yt4pdf, which is withdrawn from CTAN. Now, I simply must get back to my retirement. +What's New (2021-06-08) Rewrote commands and examples to reflect a new method + of doing YouTube searches. + Dr. D. P. Story www.acrotex.net dpstory@uakron.edu diff --git a/macros/latex/contrib/ltx4yt/docs/ltx4yt-man.pdf b/macros/latex/contrib/ltx4yt/docs/ltx4yt-man.pdf Binary files differindex 672b8292f5..50bc0928ca 100644 --- a/macros/latex/contrib/ltx4yt/docs/ltx4yt-man.pdf +++ b/macros/latex/contrib/ltx4yt/docs/ltx4yt-man.pdf diff --git a/macros/latex/contrib/ltx4yt/docs/ltx4yt-man.tex b/macros/latex/contrib/ltx4yt/docs/ltx4yt-man.tex index aa98bee57d..b656d91c78 100644 --- a/macros/latex/contrib/ltx4yt/docs/ltx4yt-man.tex +++ b/macros/latex/contrib/ltx4yt/docs/ltx4yt-man.tex @@ -85,7 +85,7 @@ email={dpstory@acrotex.net}, subject={Playing YouTube Videos in PDF}, talksite={\url{www.acrotex.net}}, - version={0.7, 2020/07/30}, + version={1.0, 2021/06/08}, keywords={AcroTeX, PDF, YouTube, Browser}, copyrightStatus=True, copyrightNotice={Copyright (C) \the\year, D. P. Story}, @@ -301,8 +301,8 @@ this document are brown. \paragraph*{An example.} There are two ``Kung-Fu Fighting'' videos of interest: \texttt{GZ9e3Dy7obA} and \texttt{jhUkGIsKvn0}; we set up likes for the first and twice for the second: \begin{quote} - \ytvId{GZ9e3Dy7obA}{Kung-Fu Fighting (Bruce Lee)}\\ - \verb~\ytvId{GZ9e3Dy7obA}{Kung-Fu Fighting (Bruce Lee)}~\\[3pt] + \ytvId*{GZ9e3Dy7obA}{Kung-Fu Fighting (Bruce Lee)}\\ + \verb~\ytvId*{GZ9e3Dy7obA}{Kung-Fu Fighting (Bruce Lee)}~\\[3pt] \ytvId{jhUkGIsKvn0}{Kung-Fu Fighting (Carl Douglas)}\\ \verb~\ytvId{jhUkGIsKvn0}{Kung-Fu Fighting (Carl Douglas)}~\\[3pt] \ytvId*{jhUkGIsKvn0}{Kung-Fu Fighting* (Carl Douglas)}\\ @@ -419,8 +419,8 @@ on to the field names of these two field; The pair \cs{ytComboList} and Below is an abbreviated example, more extensive examples are found in the demo files sited at the beginning of this section. \declarePlayList{\playList}{% note: put parentheses within braces - \ytIdTitle{Kung-Fu Fighting {(Bruce Lee)}}{GZ9e3Dy7obA} - \ytIdTitle{Kung-Fu Fighting* {(Carl Douglas)}}{jhUkGIsKvn0} + \ytIdTitle{Kung-Fu Fighting* {(Bruce Lee)}}{GZ9e3Dy7obA} + \ytIdTitle{Kung-Fu Fighting {(Carl Douglas)}}{jhUkGIsKvn0} \ytIdTitle{J\"{u}rgen's "favorite" song*}{mLDF5MBMWHE} \ytIdTitle{Learn \cs{LaTeX} in one video}{VhmkLrOjLsw} } @@ -433,8 +433,8 @@ Below is an abbreviated example, more extensive examples are found in the demo f \def\2{\llap{\rlap{\ding{183}}\hskip\amtIndent\relax}}\relax \begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars={!~@}] \declarePlayList{\playList}{% note: put parentheses within braces -!quad\ytIdTitle{Kung-Fu Fighting {(Bruce Lee)}}{GZ9e3Dy7obA} -!quad\ytIdTitle{Kung-Fu Fighting* {(Carl Douglas)}}{jhUkGIsKvn0} +!quad\ytIdTitle{Kung-Fu Fighting* {(Bruce Lee)}}{GZ9e3Dy7obA} +!quad\ytIdTitle{Kung-Fu Fighting {(Carl Douglas)}}{jhUkGIsKvn0} !1!quad\ytIdTitle{J\"{u}rgen's "favorite" song*}{mLDF5MBMWHE} !2!quad\ytIdTitle{Learn \cs{LaTeX} in one video}{VhmkLrOjLsw} } @@ -566,7 +566,8 @@ constructing links is to use the \cs{ytLink} command. \def\3{\rlap{\hskip\ytlength\relax\ding{184}}}% \def\4{\rlap{\hskip\ytlength\relax\ding{185}}}% \def\5{\rlap{\hskip\ytlength\relax\ding{186}}}% -\def\6{\rlap{\hskip\ytlength\relax\llap{\sffamily(presets for \cs{ytvId})\hskip2\fboxsep\hskip2\fboxrule}}}% +\def\6{\rlap{\hskip\ytlength\relax\ding{187}}}% +\def\7{\rlap{\hskip\ytlength\relax\llap{\sffamily(presets for \cs{ytvId})\hskip2\fboxsep\hskip2\fboxrule}}}% \begin{minipage}{\bxSize} \begin{Verbatim}[frame=single,commandchars=!(),rulecolor=\color{red}] !1\ytLink{\embedId{!ameta(ytvId)}\params{!ameta(params)}}{!ameta(text)} @@ -575,7 +576,8 @@ constructing links is to use the \cs{ytLink} command. !4\ytLink{!ameta(spec)}{!ameta(text)} !5\ytLink{\channel{!ameta(name)}}{!ameta(text)} !5\ytLink{\user{!ameta(name)}}{!ameta(text)} -!6\ytvIdPresets{!ameta(KV-pairs)} +!6\ytLink{\search{!ameta(search-string)}}{!ameta(text)} +!7\ytvIdPresets{!ameta(KV-pairs)} \end{Verbatim} \end{minipage}\eVerb Each of these has an optional first argument \ameta{KV-pairs} that is not shown above. Let's take a look at each of these in turn and illustrate with examples. Yes, @@ -609,16 +611,19 @@ for a discussion. \verb!\ytLink{\watchId{5y9-EVmreU4}!\\ \null\qquad\verb!\params{autoplay=1}}{Lori's Corner: Episode \#1}! - \item[\ding{184}] A more general form that allows you to formulate general URLs. For example, we \emph{search} - for {\YT} videos on \app{Adobe Acrobat DC}:\\[3pt] - \ytLink{\embed{listType=search&list=Adobe Acrobat DC}}{Search for Adobe Acrobat DC}\\ - \verb!\ytLink{\embed{listType=search&list=Adobe Acrobat DC}}!\\ - \null\qquad\verb!{Search for Adobe Acrobat DC}! + \item[\ding{184}] A more general form that allows you to formulate general URLs. For example, we display + a play list for Adobe Acrobat Pro training:\goodbreak + \ytLink{\embed{listType=playlist&list=PL_dhPga7ruudhQiL-dqVhGcCqDpH1KqR_}}{Adobe Acrobat Pro Training}\\ + \verb!\ytLink{\embed{%!\\ + \null\qquad\verb!listType=playlist&list=PL_dhPga7ruudhQiL-dqVhGcCqDpH1KqR_}}!\\ + \null\qquad\verb!{Adobe Acrobat Pro Training}!\\[3pt] + Look for the playlist control in the upper right corner of the window. \item[\ding{185}] The most general form, \ameta{spec} is simply appended, ie, \texttt{https://www.youtube.com/\ameta{spec}}\\[3pt] - \ytLink{embed?listType=search&list=LaTeX typesetting}{Totally custom search link}\\ - \verb|\ytLink{embed?listType=search&list=LaTeX typesetting}|\\ - \null\qquad\verb|{Totally custom search link}| + \ytLink{embed?listType=playlist&list=PL01A18BBA5912B01F}{{\LaTeX} Tutorial}\\ + \verb|\ytLink{embed?listType=playlist&list=PL01A18BBA5912B01F}|\\ + \null\qquad\verb|{{\LaTeX} Tutorial}|\\[3pt] + Look for the playlist control in the upper right corner of the window. \item[\ding{186}] There are a couple of URLs for displaying a channel on \YT, at least there are a couple that I have discovered. Use this form to see channel of a particular contributor to {\YT}. For example,\\[3pt] @@ -630,6 +635,28 @@ for a discussion. To get the true \ameta{name} of a channel, go to {\YT} and search for that channel. For example, search for \textsf{RocketJump}. On the resulting page, click on a RocketJump link and look at the location bar in the browser to see the path, it may come up \texttt{c/rocketjump} or \texttt{user/freddiew}. + +\item[\ding{187}] In the previous version of this package, the syntax for + making a {\YT} search was presented as, + \[ + \verb!\ytLink{\embed{listType=search&list=Adobe Acrobat DC}}! + \] + However, according to the + \href{https://developers.google.com/youtube/player_parameters}{Google + developers web site} the \texttt{listType=search} key-value is no longer + supported as of Nov.\ 15, 2020. Use the \cs{search} key to make this same search, + \begin{align*} + &\text{\ytLink{\search{Adobe Acrobat DC}}{Adobe Acrobat DC}}\\& + \cs{ytLink\darg{\cs{search}\darg{Adobe Acrobat DC}}\darg{Search for Adobe Acrobat DC}} + \end{align*} + The above link expands to the URL + \[ + \texttt{https://www.youtube.com/results?search\_query=Adobe Acrobat DC} + \] + Once on the {\YT} web site, there are controls to further filter the + search. + + \end{enumerate} \newtopic\noindent There is a multi-line version of \cs{ytLink}. diff --git a/macros/latex/contrib/ltx4yt/docs/ltx4yt.pdf b/macros/latex/contrib/ltx4yt/docs/ltx4yt.pdf Binary files differindex 19dc2f61d7..d6d9f6b671 100644 --- a/macros/latex/contrib/ltx4yt/docs/ltx4yt.pdf +++ b/macros/latex/contrib/ltx4yt/docs/ltx4yt.pdf diff --git a/macros/latex/contrib/ltx4yt/examples/ltx4yt-1.pdf b/macros/latex/contrib/ltx4yt/examples/ltx4yt-1.pdf Binary files differindex c85e343e39..a6f37846d0 100644 --- a/macros/latex/contrib/ltx4yt/examples/ltx4yt-1.pdf +++ b/macros/latex/contrib/ltx4yt/examples/ltx4yt-1.pdf diff --git a/macros/latex/contrib/ltx4yt/examples/ltx4yt-1.tex b/macros/latex/contrib/ltx4yt/examples/ltx4yt-1.tex index 2f2a215b3e..b469f3dab1 100644 --- a/macros/latex/contrib/ltx4yt/examples/ltx4yt-1.tex +++ b/macros/latex/contrib/ltx4yt/examples/ltx4yt-1.tex @@ -25,15 +25,15 @@ \maketitle \textbf{Favorites to play:} Itemized links below use the \verb~\ytvId~ and \verb~\ytvId*~ commands, -the only \texttt{*} command is ``Kung-Fu Fighting* (Original),'' this one is played with advertisements +the only \texttt{*} command is ``Kung-Fu Fighting* (Bruce Lee),'' this one is played with advertisements and related/unrelated content. The links in this document should work across all PDF viewers and across all devices. \begin{flushleft}\raggedcolumns \begin{multicols}{2}\bfseries \begin{itemize} -\item \ytvId{GZ9e3Dy7obA}{Kung-Fu Fighting (Bruce Lee)} +\item \ytvId*{GZ9e3Dy7obA}{Kung-Fu Fighting* (Bruce Lee)} -\item \ytvId*{jhUkGIsKvn0}{Kung-Fu Fighting* (Original)} +\item \ytvId{jhUkGIsKvn0}{Kung-Fu Fighting (Original)} \item \ytvId{_iUnOpPEg0w}{TegrityGuy} @@ -44,6 +44,7 @@ and related/unrelated content. The links in this document should work across all \item \ytvId{5y9-EVmreU4}{Lori's Corner: Episode \#1} \item \ytvId{T9Yzo_hlwP0}{Intro to PDF Portfolios} + \end{itemize} \end{multicols} \end{flushleft} @@ -53,17 +54,14 @@ What follows are customized links created by \verb~\ytLink~. \ytLink{\embedId{5y9-EVmreU4}\params{autoplay=1&modestbranding=1}}{Lori's Corner: Episode \#1} (\verb~\embedId~ and \verb~\params~) -\ytLink{\embed{listType=search&list=Adobe Acrobat DC}}{Search for Adobe Acrobat DC} (\verb~\embed~ custom search) - -\ytLink{embed?listType=search&list=table tennis}{Totally custom search link} (surprise topic) +\ytLink{\search{Adobe Acrobat DC}}{Search for Adobe Acrobat DC} +\ytLink{\search{table tennis}}{Totally custom search link} (surprise topic) \ytLink{\channel{rocketjump}}{The RocketJump Channel} (\verb~\channel~) \ytLink{\user{freddiew}}{Freddie Diew's channel} (\verb~\user~) -\ytLink{\embedId{5y9-EVmreU4}\params{autoplay=1&controls=1&fs=1&modestbranding=1&playlist=T9Yzo_hlwP0,eNzrn8-JFSE}}{A playlist of three videos} - \textbf{PDF viewers:} \textsf{Acrobat}, \textsf{Acrobat Reader DC}, \textsf{PDFX-Change}, \textsf{SumatraPDF}, \textsf{evince}, \textsf{TeXworks} \textbf{Browsers:} \textsf{Microsoft Edge}, \textsf{Firefox}, \textsf{Google Chrome} diff --git a/macros/latex/contrib/ltx4yt/examples/ltx4yt-2.pdf b/macros/latex/contrib/ltx4yt/examples/ltx4yt-2.pdf Binary files differindex fc9ec84a69..46df119a96 100644 --- a/macros/latex/contrib/ltx4yt/examples/ltx4yt-2.pdf +++ b/macros/latex/contrib/ltx4yt/examples/ltx4yt-2.pdf diff --git a/macros/latex/contrib/ltx4yt/examples/ltx4yt-2.tex b/macros/latex/contrib/ltx4yt/examples/ltx4yt-2.tex index 83ca787605..12f74c0202 100644 --- a/macros/latex/contrib/ltx4yt/examples/ltx4yt-2.tex +++ b/macros/latex/contrib/ltx4yt/examples/ltx4yt-2.tex @@ -20,8 +20,8 @@ \begin{popupmenu}{YTMenu} \puIdTitle{Select a YouTube Video}{} % A title has no ytId \begin{submenu}{title=Music Videos} - \puIdTitle{Kung-Fu Fighting (Bruce Lee)}{GZ9e3Dy7obA} - \puIdTitle{Kung-Fu Fighting* (Carl Douglas)}{jhUkGIsKvn0} + \puIdTitle{Kung-Fu Fighting* (Bruce Lee)}{GZ9e3Dy7obA} + \puIdTitle{Kung-Fu Fighting (Carl Douglas)}{jhUkGIsKvn0} \puIdTitle{Ink Spots - If I didn't care}{rvwfLe6sLis} \puIdTitle{Ink Spots* - My Prayer}{h7KJCns5v3g} \end{submenu} @@ -46,13 +46,12 @@ \puIdTitle{Learn \cs{LaTeX} in one video}{VhmkLrOjLsw} \end{popupmenu} - % After defining all menus used with YouTube videos, declare them using \ytUseMenus \ytUseMenus{YTMenu,YTSea} \declarePlayList{\playList}{% note: put parentheses within braces - \ytIdTitle{Kung-Fu Fighting {(Bruce Lee)}}{GZ9e3Dy7obA} - \ytIdTitle{Kung-Fu Fighting* {(Carl Douglas)}}{jhUkGIsKvn0} + \ytIdTitle{Kung-Fu Fighting* {(Bruce Lee)}}{GZ9e3Dy7obA} + \ytIdTitle{Kung-Fu Fighting {(Carl Douglas)}}{jhUkGIsKvn0} \ytIdTitle{RAF Sculthorpe {(Watch for my Mom at 6:22!)}}{K7H8QghVs9k} \ytIdTitle{Rocket Jump}{7XzdZ4KcI8Y} \ytIdTitle{Abdul And Cleopatra* - Jonathan Richman and the Modern Lovers}{mLDF5MBMWHE} @@ -62,6 +61,7 @@ \ytIdTitle{"Sea Hunt" US TV series {(1958-61)} lead-in}{Lz0aMoWh8Q4} } + \begin{document} \maketitle @@ -95,4 +95,9 @@ menu appears. Choose a YouTube video based on title. \ytSearch{}{11bp}\olBdry \ytClearQuery{}{11bp} +\ytLink{embed?listType=playlist&list=PL01A18BBA5912B01F}{{\LaTeX} Tutorial} (look for the play list control in upper right corner) + +\ytLink{\embedId{5y9-EVmreU4}\params{autoplay=1&controls=1&fs=1&modestbranding=1&playlist=T9Yzo_hlwP0,eNzrn8-JFSE}}{A playlist of three videos} + + \end{document} diff --git a/macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w1.pdf b/macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w1.pdf Binary files differindex 7069e972e2..837b1c6841 100644 --- a/macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w1.pdf +++ b/macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w1.pdf diff --git a/macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w1.tex b/macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w1.tex index 8e55454731..1227d9562d 100644 --- a/macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w1.tex +++ b/macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w1.tex @@ -21,10 +21,23 @@ } \talkdateLabel{Published:} +\optionalPageMatter{\begin{center} +\fcolorbox{blue}{webyellow}{\begin{minipage}{.67\linewidth}\raggedright\small +This document should function properly in the following devices. +\begin{description} +\item[PDF viewers:] \textsf{Acrobat}, \textsf{Acrobat Reader DC}, \textsf{PDFX-Change}, \textsf{SumatraPDF}, \textsf{evince}, \textsf{TeXworks} + +\item[Browsers:] \textsf{Microsoft Edge}, \textsf{Firefox}, \textsf{Google Chrome} + +\item[Devices:] \textsf{Android} smart phones, \textsf{iPhones}, \textsf{Android} tablets +\end{description} +\end{minipage}} +\end{center}} + \parindent=0pt\parskip6pt \rheader{} -\addtoWebHeight{7\baselineskip} +%\addtoWebHeight{7\baselineskip} \begin{document} @@ -33,15 +46,15 @@ \begin{center}\bfseries\Large\color{blue}LTX4YT -- Links\end{center} \textbf{Favorites to play:} Itemized links below use the \verb~\ytvId~ and \verb~\ytvId*~ commands, -the only \texttt{*} command is ``Kung-Fu Fighting* (Original),'' this one is played with advertisements +the only \texttt{*} command is ``Kung-Fu Fighting* (Bruce Lee),'' this one is played with advertisements and related/unrelated content. The links in this document should work across all PDF viewers and across all devices. \begin{flushleft}\raggedcolumns \begin{multicols}{2}\bfseries \begin{itemize} -\item \ytvId{GZ9e3Dy7obA}{Kung-Fu Fighting (Bruce Lee)} +\item \ytvId*{GZ9e3Dy7obA}{Kung-Fu Fighting* (Bruce Lee)} -\item \ytvId*{jhUkGIsKvn0}{Kung-Fu Fighting* (Original)} +\item \ytvId{jhUkGIsKvn0}{Kung-Fu Fighting (Original)} \item \ytvId{_iUnOpPEg0w}{TegrityGuy} @@ -61,22 +74,12 @@ What follows are customized links created by \verb~\ytLink~. \ytLink{\embedId{5y9-EVmreU4}\params{autoplay=1&modestbranding=1}}{Lori's Corner: Episode \#1} (\verb~\embedId~ and \verb~\params~) -\ytLink{\embed{listType=search&list=Adobe Acrobat DC}}{Search for Adobe Acrobat DC} (\verb~\embed~ custom search) - -\ytLink{embed?listType=search&list=table tennis}{Totally custom search link} (surprise topic) +\ytLink{\search{Adobe Acrobat DC}}{Search for Adobe Acrobat DC} +\ytLink{\search{table tennis}}{Totally custom search link} (surprise topic) \ytLink{\channel{rocketjump}}{The RocketJump Channel} (\verb~\channel~) \ytLink{\user{freddiew}}{Freddie Diew's channel} (\verb~\user~) -\ytLink{\embedId{5y9-EVmreU4}\params{autoplay=1&controls=1&fs=1&modestbranding=1&playlist=T9Yzo_hlwP0,eNzrn8-JFSE}}{A playlist of three videos} - -\textbf{PDF viewers:} \textsf{Acrobat}, \textsf{Acrobat Reader DC}, \textsf{PDFX-Change}, \textsf{SumatraPDF}, \textsf{evince}, \textsf{TeXworks} - -\textbf{Browsers:} \textsf{Microsoft Edge}, \textsf{Firefox}, \textsf{Google Chrome} - -\textbf{Devices:} \textsf{Android} smart phones, \textsf{iPhones}, \textsf{Android} tablets - \end{document} - diff --git a/macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w2.pdf b/macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w2.pdf Binary files differindex 958c36cbaf..53163774b1 100644 --- a/macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w2.pdf +++ b/macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w2.pdf diff --git a/macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w2.tex b/macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w2.tex index 31f3ca4917..4fcaf48110 100644 --- a/macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w2.tex +++ b/macros/latex/contrib/ltx4yt/examples/web-pkg/ltx4yt-w2.tex @@ -2,7 +2,7 @@ \usepackage[designv,extended]{web} \usepackage[usepopup]{ltx4yt} -%\previewOn +%\previewOn \parindent0pt \parskip6pt @@ -28,8 +28,8 @@ \begin{popupmenu}{YTMenu} \puIdTitle{Select a YouTube Video}{} % A title has no ytId \begin{submenu}{title=Music Videos} - \puIdTitle{Kung-Fu Fighting (Bruce Lee)}{GZ9e3Dy7obA} - \puIdTitle{Kung-Fu Fighting* (Carl Douglas)}{jhUkGIsKvn0} + \puIdTitle{Kung-Fu Fighting* (Bruce Lee)}{GZ9e3Dy7obA} + \puIdTitle{Kung-Fu Fighting (Carl Douglas)}{jhUkGIsKvn0} \puIdTitle{Ink Spots - If I didn't care}{rvwfLe6sLis} \puIdTitle{Ink Spots* - My Prayer}{h7KJCns5v3g} \end{submenu} @@ -59,8 +59,8 @@ \ytUseMenus{YTMenu,YTSea} \declarePlayList{\playList}{% note: put parentheses within braces - \ytIdTitle{Kung-Fu Fighting {(Bruce Lee)}}{GZ9e3Dy7obA} - \ytIdTitle{Kung-Fu Fighting* {(Carl Douglas)}}{jhUkGIsKvn0} + \ytIdTitle{Kung-Fu Fighting* {(Bruce Lee)}}{GZ9e3Dy7obA} + \ytIdTitle{Kung-Fu Fighting {(Carl Douglas)}}{jhUkGIsKvn0} \ytIdTitle{RAF Sculthorpe {(Watch for my Mom at 6:22!)}}{K7H8QghVs9k} \ytIdTitle{Rocket Jump}{7XzdZ4KcI8Y} \ytIdTitle{Abdul And Cleopatra* - Jonathan Richman and the Modern Lovers}{mLDF5MBMWHE} @@ -74,7 +74,7 @@ -%\maketitle +\maketitle \begin{center}\bfseries\Large\color{blue}LTX4YT -- Forms\end{center} @@ -107,4 +107,9 @@ menu appears. Choose a YouTube video based on title. \ytSearch{}{11bp}\olBdry \ytClearQuery{}{11bp} +\ytLink{embed?listType=playlist&list=PL01A18BBA5912B01F}{{\LaTeX} Tutorial} (look for the play list control in upper right corner) + +\ytLink{\embedId{5y9-EVmreU4}\params{autoplay=1&controls=1&fs=1&modestbranding=1&playlist=T9Yzo_hlwP0,eNzrn8-JFSE}}{A playlist of three videos} + + \end{document} diff --git a/macros/latex/contrib/ltx4yt/ltx4yt.dtx b/macros/latex/contrib/ltx4yt/ltx4yt.dtx index ef6356d9ff..58c17d1e6c 100644 --- a/macros/latex/contrib/ltx4yt/ltx4yt.dtx +++ b/macros/latex/contrib/ltx4yt/ltx4yt.dtx @@ -14,11 +14,11 @@ %</copyright> %<package>\NeedsTeXFormat{LaTeX2e}[1997/12/01] %<package>\ProvidesPackage{ltx4yt} -%<package> [2020/07/30 v0.7 ltx4yt: Play YouTube videos in the default browser (dps)] +%<package> [2021/06/08 v1.0 ltx4yt: Play YouTube videos in the default browser (dps)] %<*driver> \documentclass{ltxdoc} \usepackage[colorlinks,hyperindex=false]{hyperref} -\hypersetup{pdfpagemode=useNone} +\hypersetup{pdfpagemode=UseNone} \usepackage{fancyvrb} %\def\texorpdfstring#1#2{#1} %\pdfstringdefDisableCommands{\let\\\textbackslash} @@ -54,7 +54,7 @@ \def\meta#1{\textsl{\texttt{#1}}} \def\SUB#1{\ensuremath{{}_{\mbox{\scriptsize\ttfamily#1}}}} \def\ltag{<}\def\rtag{>} -\def\EXCL{!} +\def\EXCL{!}\def\QMRK{?}\def\EQU{=} \let\app\textsf\let\pkg\textsf \begin{document} \GetFileInfo{ltx4yt.sty} @@ -92,11 +92,13 @@ % course is to develop some basic commands for playing YouTube videos in the default browser, preferably % without any annoying advertisements. This can be done for some videos, but for others it cannot be done. % +%\changes{v1.0}{2021/06/08}{Modify search-type macro to conform with new YouTube player parameters} %\changes{v0.1}{2020/07/17}{Begin new package \string\pkg{ltx4yt}} %\changes{v0.2}{2020/07/17}{Commands to pass arguments to urls} %\changes{v0.6}{2020/07/25}{Final version before first publication} %\changes{v0.7}{2020/07/30}{Corrected upload} -% \begin{macrocode} +%\changes{v0.8}{2020/08/01}{Added catcode protection} +%\begin{macrocode} \RequirePackage{xkeyval} % \end{macrocode} % \leavevmode\IndexOpt{usepopup} When this option is taken, additional code to support @@ -110,6 +112,13 @@ \let\lo@dpu\relax \AtEndOfPackage{\lo@dpu} \ProcessOptions +\edef\yt@restoreCats{% + \catcode`\noexpand\"=\the\catcode`\"\relax + \catcode`\noexpand\'=\the\catcode`\'\relax + \catcode`\noexpand\,=\the\catcode`\,\relax + \catcode`\noexpand\!=\the\catcode`\!\relax +} +\@makeother\"\@makeother\'\@makeother\,\@makeother\! \RequirePackage{xcolor} \RequirePackage{eforms} % \end{macrocode} @@ -169,15 +178,22 @@ % \item[{\ameta{text}}:] The text that displays the link. %\end{itemize} %\end{quote} +%\changes{v0.8}{2020/08/01}{added \string\cs{ytIdParams}} % \begin{macrocode} +\def\ytvIdParams#1{\def\@rgi{#1}\ifx\@rgi\@empty + \let\ytvIdP@rams\@empty\else\def\ytvIdP@rams{#1}\fi} +\let\ytvIdP@rams\@empty \newcommand{\ytvId}{\@ifstar{\def\yt@ask{*}\yt@@vId} {\let\yt@ask\@empty\yt@@vId}} -\newcommand{\yt@@vId}[3][]{% +\newcommand{\yt@@vId}[3][]{\begingroup + \ifx\ytvIdP@rams\@empty\let\ques\@empty\else + \ifx\yt@ask\@empty\def\ques{?}\else\def\ques{&}\fi + \fi \ifx\yt@ask\@empty - \def\yt@lnk@hash{embed/#2}\else - \def\yt@lnk@hash{watch?v=#2}\fi + \def\yt@lnk@hash{embed/#2\ques\ytvIdP@rams}\else + \def\yt@lnk@hash{watch?v=#2\ques\ytvIdP@rams}\fi \setLink[\presets{\yt@vIdPresets}#1 - \A{\URI{\ytURL/\yt@lnk@hash}}]{#3}% + \A{\URI{\ytURL/\yt@lnk@hash}}]{#3}\endgroup } % \end{macrocode} % \end{macro} @@ -188,12 +204,15 @@ % \begin{macrocode} \newcommand{\ytvIdML}{\@ifstar{\def\yt@ask{*}\yt@@vIdML} {\let\yt@ask\@empty\yt@@vIdML}} -\newcommand{\yt@@vIdML}[3][]{% +\newcommand{\yt@@vIdML}[3][]{\begingroup + \ifx\ytvIdP@rams\@empty\let\ques\@empty\else + \ifx\yt@ask\@empty\def\ques{?}\else\def\ques{&}\fi + \fi \ifx\yt@ask\@empty - \def\yt@lnk@hash{embed/#2}\else - \def\yt@lnk@hash{watch?v=#2}\fi + \def\yt@lnk@hash{embed/#2\ques\ytvIdP@rams}\else + \def\yt@lnk@hash{watch?v=#2\ques\ytvIdP@rams}\fi \mlsetLink[\presets{\yt@vIdPresets}#1 - \A{\URI{\ytURL/\yt@lnk@hash}}]{#3}% + \A{\URI{\ytURL/\yt@lnk@hash}}]{#3}\endgroup } % \end{macrocode} % \end{macro} @@ -217,6 +236,8 @@ % A form that does not specify a video ID. It is useful for more general actions, such as % searches, for example, % \begin{flushleft} +% \textcolor{red}{\textbf{Note:} \texttt{listType=search} is deprecated and will no longer be supported +% as of 15 November, 2020.} % |\ytLink{\embed{listType=search&list=Adobe Acrobat DC}}|\\ % \qquad|{Search for Adobe Acrobat DC}| % \end{flushleft} @@ -226,6 +247,8 @@ % \item |\ytLink{|\ameta{spec}|}{|\ameta{text}|}|\\[3pt] The most general form. The action of this % link is |\URI{\ytURL/|\ameta{spec}|}|; for example, % \begin{flushleft} +% \textcolor{red}{\textbf{Note:} \texttt{listType=search} is deprecated and will no longer be supported +% as of 15 November, 2020.} % |\ytLink{embed?listType=search&list=Adobe Acrobat DC}|\\ % \qquad|{Search for Adobe Acrobat DC}| % \end{flushleft} @@ -242,7 +265,7 @@ % As was illustrated above, the custom link \cs{ytLink} can pass various recognizable % parameters to YouTube. After reviewing, % \begin{flushleft} -% \url{https://developers.google.com/youtube/player_parameters#Parameters} +% \url{https://developers.google.com/youtube/player_parameters} % \end{flushleft} % the following parameters are recommended, some of them are illustrated in the % sample document \texttt{ltx4yt-1.tex}: @@ -252,7 +275,9 @@ % \item \texttt{fs=\ameta{\upshape{0\string|1}}} (default \texttt{1}) % \item \texttt{modestbranding=\ameta{\upshape{0\string|0}}} % \item \texttt{playlist=\ameta{list}} -% \item \texttt{listType=search\&list=\ameta{query}} +% \item \texttt{listType=search\&list=\ameta{query}}\\ +% \textcolor{red}{\textbf{Note:} \texttt{listType=search} is deprecated and will no longer be supported +% as of 15 November, 2020.} % \end{itemize} % The specialized needs of the document author is most easily accommodated through the use % of the \cs{ytLink} command, for example, @@ -263,7 +288,7 @@ % \begin{macrocode} \newif\ifytwatch \ytwatchfalse % \end{macrocode} -% \paragraph*{The \cs{ytLink} command.} Before getting to \cs{ytLink} an d\cs{ytLinkML}, +% \paragraph*{The \cs{ytLink} command.} Before getting to \cs{ytLink} and \cs{ytLinkML}, % there is a long stream of commands to parse the \ameta{spec} argument of \cs{ytLink}. % It goes through looking for \cs{watchId}, \cs{embedId}, \cs{embed}, and \cs{params}. % As it progresses, it adds code to the macro \cs{ytspec}, which at the end of things @@ -302,6 +327,7 @@ \def\embedId##1{embed/##1}% \def\params##1{##1}\def\embed##1{embed?##1}% \def\watchId##1{watch?v=##1}\def\channel##1{c/##1}% + \def\search##1{results?search_query=##1}% \def\user##1{user/##1}% \yt@@parse#2\@nil % returns arg in \ytspec \def\URLArg{\ytURL/\ytspec}% @@ -318,6 +344,7 @@ \def\embedId##1{embed/##1}% \def\params##1{##1}\def\embed##1{embed?##1}% \def\watchId##1{watch?v=##1}\def\channel##1{c/##1}% + \def\search##1{results?search_query=##1}% \def\user##1{user/##1}% \yt@@parse#2\@nil % returns arg in \ytspec \def\URLArg{\ytURL/\ytspec}% @@ -551,14 +578,18 @@ % \end{macro} % \begin{macro}{\ytSearch}\nmpsep{[\ameta{opts}]\darg{\ameta{wd}}\darg{\ameta{ht}}} % A push button what will search YouTube based on the query string. +% \textcolor{red}{\textbf{Note:} \texttt{listType=search} is deprecated and will +% no longer be supported as of 15 November, 2020.} +% \changes{v1.0}{2021/06/08}{Replace \string\texttt{embed\string\QMRK} in search with +% \string\texttt{results\string\QMRK\space search\string\_query\string\EQU}} % \begin{macrocode} \newcommand{\ytSearch}[3][]{% \pushButton[\CA{Search}#1\AAmouseup{% var f=this.getField("ytSearchTxt");\r var v=f.value;\r - if ( v.replace(/\string\s/g,"") != "" )\r\t - app.launchURL("\ytURL/embed?listType=search&list="+v);} - ]{ytSearchBtn}{#2}{#3}} + if ( (v=v.replace(/\string\\s/g,"+")) != "" )\r\t + app.launchURL("\ytURL/results?search_query="+v); + }]{ytSearchBtn}{#2}{#3}} % \end{macrocode} % \end{macro} % \begin{macro}{\ytClearQuery}\nmpsep{[\ameta{opts}]\darg{\ameta{wd}}\darg{\ameta{ht}}} @@ -643,9 +674,8 @@ console.println("will launch url: https://www.youtube.com/"+_hash); % \begin{macrocode} %<*pujs> %<*package> +\yt@restoreCats %</package> % \end{macrocode} % \Finale \endinput - -https://developers.google.com/youtube/iframe_api_reference?csw=1 diff --git a/macros/latex/contrib/media9/ChangeLog b/macros/latex/contrib/media9/ChangeLog index 318969b5e2..a9100127dc 100644 --- a/macros/latex/contrib/media9/ChangeLog +++ b/macros/latex/contrib/media9/ChangeLog @@ -1,3 +1,8 @@ +2021-06-11 + * v1.16 : media9.sty + * v0.47 : pdfbase.sty + * fix : pdfmanagement-testphase adjustments + 2021-03-01 * v1.15 : media9.sty * v0.46 : pdfbase.sty diff --git a/macros/latex/contrib/media9/doc/media9.pdf b/macros/latex/contrib/media9/doc/media9.pdf Binary files differindex 470c808a9c..f33fdf28ac 100644 --- a/macros/latex/contrib/media9/doc/media9.pdf +++ b/macros/latex/contrib/media9/doc/media9.pdf diff --git a/macros/latex/contrib/media9/doc/media9.tex b/macros/latex/contrib/media9/doc/media9.tex index cdeca7d100..af3142cdec 100644 --- a/macros/latex/contrib/media9/doc/media9.tex +++ b/macros/latex/contrib/media9/doc/media9.tex @@ -4,14 +4,15 @@ % http://mirrors.ctan.org/macros/latex/base/lppl.txt % for the details of that license. % -%\pdfcompresslevel=0 -%\pdfobjcompresslevel=0 \listfiles +%%%%%%% pdfmanagement-testphase %%%%%% +\RequirePackage{pdfmanagement-testphase} % load the package +\DeclareDocumentMetadata % activates the PDF management interface +{ + %uncompress, +} +%%%%%% /pdfmanagement-testphase %%%%%% \documentclass[a4paper]{article} -\RequirePackage[enable-debug]{expl3} -\ExplSyntaxOn -\debug_on:n{deprecation} -\ExplSyntaxOff \frenchspacing \usepackage[utf8]{inputenc} \usepackage{textcomp} @@ -784,11 +785,6 @@ parameter & description\\\hline\hline \end{figure} \begin{figure}[bp] -\makeatletter% -\begingroup% locally fixing \Acrobatmenu for use in \caption -\def\HyColor@UseColor#1{\color{#1}}% -\def\Acrobatmenu#1#2{\leavevmode\pdfstartlink attr{\Hy@setpdfborder\ifx\@pdfhighlight\@empty\else/H\@pdfhighlight\fi\ifx\@menubordercolor\relax\else/C[\@menubordercolor]\fi}user{/Subtype/Link\ifHy@pdfa/F 4\fi/A<</S/Named/N/#1>>}\relax\Hy@colorlink\@menucolor#2\close@pdflink}% -\makeatother% \savebox{\keyshift}{\keys{\shift+}}% \savebox{\spacebar}{\keys{\unexpanded{\makebox[2\width][c]{Space}}}}% \centering @@ -815,7 +811,6 @@ parameter & description\\\hline\hline ]{}{SlideShow.swf} \hfill} \caption{Slide-show example with one embedded and several remote image files, one of which is a live image. Images 2 and 3 are examples of remote images with variable resolution; the best fitting image resolution is requested from the server depending on the current display size. The listing in Fig.~\ref{SlideShowXML} is used as content of file \Acrobatmenu{ShowHideFileAttachment}{`config.xml'}. Manually cycle forwards through the images by mouse-click or backwards by \usebox{\keyshift}+mouse-click. Play/pause auto-cycling through the slide-show by hitting \usebox{\spacebar}. Also, the context (right-click) menu of the player can be used.}\label{slideshowex} -\endgroup \end{figure} \begin{figure}[bp] diff --git a/macros/latex/contrib/media9/media9.sty b/macros/latex/contrib/media9/media9.sty index 4d4c80f5cb..ff12aefd37 100644 --- a/macros/latex/contrib/media9/media9.sty +++ b/macros/latex/contrib/media9/media9.sty @@ -1,3 +1,2378 @@ +%%%%%%%%%%%%%%%%%%%%%% pdfmanagement-testphase %%%%%%%%%%%%%%%%%%% +\newif\if@mix@testphase +\ExplSyntaxOn +\bool_if:nTF{ + \bool_lazy_and_p:nn {\cs_if_exist_p:N \pdfmanagement_if_active_p:} { \pdfmanagement_if_active_p: } +}{\@mix@testphasetrue}{ +%\input{media9.old.tex} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% media9.sty +% +% multimedia inclusion package +% +% Copyright 2012--\today, Alexander Grahn +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% This package implements Adobe-Reader 9 and X compatible RichMedia +% annotation for multimedia (Flash & 3D) inclusion according to: +% +% Adobe Supplement to ISO 32000, BaseVersion 1.7, ExtensionLevel 3 +% +% Supported workflows: +% +% pdflatex, lualatex +% latex-->dvips-->ps2pdf or Distiller +% latex-->dvipdfmx +% xelatex +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License. +% +% The latest version of this license is in +% http://mirrors.ctan.org/macros/latex/base/lppl.txt +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is A. Grahn. + +\RequirePackage{l3keys2e} + +\def\g@mix@date@tl{2021/06/11} +\def\g@mix@version@tl{1.16} + +\NeedsTeXFormat{LaTeX2e}[2020-10-01] +\ProvidesExplPackage{media9}{\g@mix@date@tl}{\g@mix@version@tl} +{acrobat-9/X compatible media} + +\tl_gset_eq:NN\g_mix_date_tl\g@mix@date@tl +\tl_gset_eq:NN\g_mix_version_tl\g@mix@version@tl + +%package options + +%unknown package option error message +\msg_set:nnnn{media9}{unknown~package~option}{Unknown~package~option~`#1'.}{ + Package option~'#1'~is~unknown;\\ + perhaps~it~is~spelled~incorrectly. +} + +\bool_new:N\g_mix_pkgattach_bool +\bool_new:N\g_mix_dvipdfmx_bool +\bool_new:N\g_mix_pkgdraft_bool +\bool_new:N\g_mix_opt_pkgwindowed_bool +\int_new:N\g_mix_pkgresizeflag_int% resizing flag according to options given +\tl_gset:Nn\g_mix_pkgwdarg_tl{\width} +\tl_gset:Nn\g_mix_pkghtarg_tl{\height} +\tl_gset:Nn\g_mix_pkgttarg_tl{\totalheight} +\bool_new:N\g_mix_pkgiso_bool +\tl_gset:Nn\g_mix_pkgscalearg_tl{1.0} +\tl_gset:Nx\g_mix_pkgwinsize_tl{defaultxdefault} +\tl_gset:Nx\g_mix_pkgwinpos_tl{cc} +\tl_gset:Nn\g_mix_pkgact_tl{/XA} +\tl_gset:Nn\g_mix_pkgdeact_tl{/PC} +\tl_gset:Nn\g_mix_pkgtransp_tl{false} +\tl_gset:Nn\g_mix_pkgcontextclick_tl{false} +\tl_gset:Nn\g_mix_pkgplaycnt_tl{-1} +\tl_gset:Nn\g_mix_pkgplayspd_tl{1} +\tl_gset:Nn\g_mix_pkgplaytpe_tl{None} +\tl_gset:Nn\g_mix_pkgtools_tl{false} +\tl_gset:Nn\g_mix_pkgnrdflt_tl{/NR~true} +\tl_gset:Nn\g_mix_pkgnav_tl{false} +\tl_gclear:N\g_mix_pkgopt_bg_tl +\tl_gclear:N\g_mix_pkgopt_ls_tl +\tl_gclear:N\g_mix_pkgopt_rm_tl +\bool_new:N\g_mix_pkgiiidcalc_bool +\tl_gset:Nn\g_mix_pkgpbtn_tl{fancy} + +%floating window settings +\group_begin: +\char_set_catcode_other:n{`\@} +\cs_new_protected:Npn\mix_parse_windowedarg:w#1@#2@#3\q_stop{ + \tl_if_blank:nF{#1}{\tl_gset:Nn\g_mix_winsize_tl{#1}} + \tl_if_blank:nF{#2}{\tl_gset:Nn\g_mix_winpos_tl{#2}} +} +\cs_new_protected:Nn\mix_parse_windowedarg:N{ + \exp_after:wN\mix_parse_windowedarg:w#1@@\q_stop +} +\group_end: + +\cs_new:Npn\mix_parse_winsizearg:w#1x#2\q_stop{ + \str_if_eq:nnTF{#1}{default}{ + \tl_gset:Nx\tl_mix_fltwd{ + \fp_to_int:n{1.522*\dim_to_decimal_in_bp:n{\g_mix_wd_tl}}} + \tl_gset:Nx\tl_mix_fltht{ + \fp_to_int:n{1.522*\dim_to_decimal_in_bp:n{\g_mix_tt_tl}}} + }{ + \tl_gset:Nn\tl_mix_fltwd{#1} + \tl_gset:Nn\tl_mix_fltht{#2} + } +} + +\keys_define:nn{media9}{ + xetex .code:n = {}, %dummy + + dvipdfmx .choice:, + dvipdfmx / true .code:n = { + \bool_gset_true:N\g_mix_dvipdfmx_bool + \PassOptionsToPackage{dvipdfmx}{pdfbase} + }, + dvipdfmx / false .code:n = {\bool_gset_false:N\g_mix_dvipdfmx_bool}, + dvipdfmx .default:n = {true}, + + bigfiles .choice:, + bigfiles / true .code:n = { + \@ifpackageloaded{pdfbase}{ + \bool_gset_true:N\g_pbs_pkgbigfiles_bool + }{ + \PassOptionsToPackage{bigfiles}{pdfbase} + } + }, + bigfiles / false .code:n = {}, + bigfiles .default:n = {true}, + + draft .choice:, + draft / true .code:n = {\bool_gset_true:N\g_mix_pkgdraft_bool}, + draft / false .code:n = {\bool_gset_false:N\g_mix_pkgdraft_bool}, + draft .default:n = {true}, + + final .choice:, + final / true .code:n = {\bool_gset_false:N\g_mix_pkgdraft_bool}, + final / false .code:n = {\bool_gset_true:N\g_mix_pkgdraft_bool}, + final .default:n = {true}, + + attachfiles .choice:, + attachfiles / true .code:n = {\bool_gset_true:N\g_mix_pkgattach_bool}, + attachfiles / false .code:n = {\bool_gset_false:N\g_mix_pkgattach_bool}, + attachfiles .default:n = {true}, + + noplaybutton .choice:, + noplaybutton / true .code:n = {\tl_gset:Nn\g_mix_pkgpbtn_tl{none}}, + noplaybutton .default:n = {true}, + + playbutton .choice:, + playbutton / fancy .code:n = {\tl_gset:Nn\g_mix_pkgpbtn_tl{fancy}}, + playbutton / plain .code:n = {\tl_gset:Nn\g_mix_pkgpbtn_tl{plain}}, + playbutton / none .code:n = {\tl_gset:Nn\g_mix_pkgpbtn_tl{none}}, + playbutton .default:n = {fancy}, + + activate .choice:, + activate / pagevisible .code:n = {\tl_gset:Nn\g_mix_pkgact_tl{/PV}}, + activate / pageopen .code:n = {\tl_gset:Nn\g_mix_pkgact_tl{/PO}}, + activate / onclick .code:n = {\tl_gset:Nn\g_mix_pkgact_tl{/XA}}, + activate .value_required:n = {true}, + + deactivate .choice:, + deactivate / pageinvisible .code:n = {\tl_gset:Nn\g_mix_pkgdeact_tl{/PI}}, + deactivate / pageclose .code:n = {\tl_gset:Nn\g_mix_pkgdeact_tl{/PC}}, + deactivate / onclick .code:n = {\tl_gset:Nn\g_mix_pkgdeact_tl{/XD}}, + deactivate .value_required:n = {true}, + + transparent .choices:nn = {true,false}{ + \tl_gset:Nx\g_mix_pkgtransp_tl{\l_keys_choice_tl} + }, + transparent .default:n = {true}, + + passcontext .choices:nn = {true,false}{ + \tl_gset:Nx\g_mix_pkgcontextclick_tl{\l_keys_choice_tl} + }, + passcontext .default:n = {true}, + + windowed .code:n = { + \str_if_eq:nnTF{#1}{false}{ + \bool_gset_false:N\g_mix_opt_pkgwindowed_bool + }{ + \bool_gset_true:N\g_mix_opt_pkgwindowed_bool + \tl_set:Nx\l_tmpa_tl{#1} + \tl_remove_all:Nn\l_tmpa_tl{~} + \mix_parse_windowedarg:N\l_tmpa_tl + \tl_gset_eq:NN\g_mix_pkgwinsize_tl\g_mix_winsize_tl + \tl_gset_eq:NN\g_mix_pkgwinpos_tl\g_mix_winpos_tl + } + }, + + width .code:n = { + \tl_gset:Nn\g_mix_pkgwdarg_tl{#1} + \tl_if_exist:NF\l_mix_pkgwd_tl{ + \int_gadd:Nn\g_mix_pkgresizeflag_int{4} + \tl_set:Nn\l_mix_pkgwd_tl{} + } + }, + width .value_required:n = {true}, + + height .code:n = { + \tl_gset:Nn\g_mix_pkghtarg_tl{#1} + \tl_if_exist:NF\l_mix_pkght_tl{ + \int_gadd:Nn\g_mix_pkgresizeflag_int{2} + \tl_set:Nn\l_mix_pkght_tl{} + } + }, + height .value_required:n = {true}, + + totalheight .code:n = { + \tl_gset:Nn\g_mix_pkgttarg_tl{#1} + \tl_if_exist:NF\l_mix_pkgtt_tl{ + \int_gadd:Nn\g_mix_pkgresizeflag_int{\c_one_int} + \tl_set:Nn\l_mix_pkgtt_tl{} + } + }, + totalheight .value_required:n = {true}, + + depth .code:n = { + \msg_warning:nnnn{media9}{deprecated~option}{depth}{ + Ignoring~`depth'~option. + } + }, + + keepaspectratio .choice:, + keepaspectratio / true .code:n = {\bool_gset_true:N\g_mix_pkgiso_bool}, + keepaspectratio / false .code:n = {\bool_gset_false:N\g_mix_pkgiso_bool}, + keepaspectratio .default:n = {true}, + + scale .code:n = {\tl_gset:Nx\g_mix_pkgscalearg_tl{#1}}, + scale .value_required:n = {true}, + + %3D specific options + 3Dplaytype .choice:, + 3Dplaytype / none .code:n = {\tl_gset:Nn\g_mix_pkgplaytpe_tl{None}}, + 3Dplaytype / linear .code:n = {\tl_gset:Nn\g_mix_pkgplaytpe_tl{Linear}}, + 3Dplaytype / oscillating .code:n = { + \tl_gset:Nn\g_mix_pkgplaytpe_tl{Oscillating}}, + 3Dplaytype .value_required:n = {true}, + + 3Dplaycount .code:n = {\tl_gset:Nx\g_mix_pkgplaycnt_tl{\fp_eval:n{trunc(#1)}}}, + 3Dplaycount .value_required:n = {true}, + + 3Dplayspeed .tl_gset_x:N = \g_mix_pkgplayspd_tl, + 3Dplayspeed .value_required:n = {true}, + + 3Dtoolbar .choices:nn = {true,false}{ + \tl_gset:Nx\g_mix_pkgtools_tl{\l_keys_choice_tl} + }, + 3Dtoolbar .default:n = {true}, + + 3Dnavpane .choices:nn = {true,false}{ + \tl_gset:Nx\g_mix_pkgnav_tl{\l_keys_choice_tl} + }, + 3Dnavpane .default:n = {true}, + + 3Dpartsattrs .choices:nn = {keep,restore}{ + \tl_set:Nn\l_mix_keep_tl{keep} + \tl_if_eq:NNTF\l_keys_choice_tl\l_mix_keep_tl{ + \tl_gset:Nn\g_mix_pkgnrdflt_tl{/NR~false} + }{ + \tl_gset:Nn\g_mix_pkgnrdflt_tl{/NR~true} + } + }, + 3Dpartsattrs .value_required:n = {true}, + + 3Dmenu .bool_gset:N = \g_mix_pkgiiidcalc_bool, + + 3Dbg .code:n = { + \tl_gset:Nx\g_mix_pkgopt_bg_tl{ + /BG<</Subtype/SC/CS/DeviceRGB/C[#1]/EA~true>>} + }, + 3Dbg .value_required:n = {true}, + + 3Dlights .code:n = { + \tl_gset:Nx\g_mix_pkgopt_ls_tl{/LS<</Subtype/#1>>} + }, + 3Dlights .value_required:n = {true}, + + 3Drender .code:n = { + \tl_gset:Nx\g_mix_pkgopt_rm_tl{/RM<</Subtype/#1>>} + }, + 3Drender .value_required:n = {true}, + + unknown .code:n = { + \msg_error:nnx{media9}{unknown~package~option}{\l_keys_key_tl} + } +} +\ProcessKeysOptions{media9} +\sys_if_engine_xetex:T{\bool_gset_true:N\g_mix_dvipdfmx_bool} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\RequirePackage{pdfbase} +%aliases for commands from pdfbase.sty +\cs_set_eq:NN\mix_pdfobj:nnn \pbs_pdfobj:nnn +\cs_set_eq:NN\mix_pdfannot:nnnn\pbs_pdfannot:nnnn +\cs_set_eq:NN\mix_appendtofields:n\pbs_appendtofields:n +\cs_set_eq:NN\mix_pdflink:nn \pbs_pdflink:nn +\cs_new:Nn\mix_pdfxform:n{\pbs_pdfxform:nnnnn{1}{1}{}{}{#1}} +\cs_set_eq:NN\mix_pdfximage:n \pbs_pdfximage:n +\cs_set_eq:NN\mix_pdfcatalog:n \pbs_pdfcatalog:n + +\cs_set_eq:NN\mix_pdflastobj: \pbs_pdflastobj: +\cs_set_eq:NN\mix_pdflastann: \pbs_pdflastann: +\cs_set_eq:NN\mix_pdflastxform: \pbs_pdflastxform: +\cs_set_eq:NN\mix_pdflastximage:\pbs_pdflastximage: +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\RequirePackage{ocgbase} %OCG generating and configuration macros + +\box_new:N\l_mix_poster_box +\dim_new:N\g_mix_wd_dim +\dim_new:N\g_mix_ht_dim +\dim_new:N\g_mix_dp_dim + +\int_new:N\g_mix_rmcnt_int +\int_new:N\l_mix_viewcnt_int %counter for 3D views per annot + +\int_new:N\g@mix@page@int %abs. page counter (zero based) +\int_gset:Nn\g@mix@page@int{-1} +\AddToHook{shipout/before}{\int_gincr:N\g@mix@page@int} + +\bool_new:N\l_mix_url_bool +\bool_new:N\g_mix_iiidcalc_bool + +%missing package error message +%example usage: +% \msg_error:nnnn{media9}{missing~package}{graphicx}{[dvipdfmx]} +% \msg_error:nnn{media9}{missing~package}{graphicx} +\msg_set:nnn{media9}{missing~package}{ + Package~`#1'~has~not~been~loaded~yet.\\ + Put~the~line\\ + ~~\string\usepackage#2{#1}\\ + to~the~preamble~of~your~document. +} + +%file not found error message +%example usage: +% \msg_error:nnn{media9}{file~not~found}{myfile.swf} +\msg_set:nnnn{media9}{file~not~found}{ + Line~\msg_line_number: :~ + File~`#1'~not~found.}{Make~sure~file~`#1'~exists~and~is~readable!} + +%creating global definitions +\cs_new:Npn\mix@newkey#1#2{\tl_gset:cx{#1}{#2}} +\AtBeginDocument{ + \iow_now:Nx\@mainaux{ + \token_to_str:N\providecommand\token_to_str:N\mix@newkey[2]{}} +} + +%macros for writing global defs to \jobname.aux +\msg_set:nnn{media9}{rerun}{Rerun~to~get~internal~references~right!} +\msg_set:nnn{media9}{undefined~reference}{ + Line~\msg_line_number: :~Media~reference~`#1'~not~defined. +} +\msg_set:nnn{media9}{undefined~references}{ + There~were~undefined~media~references!} +\msg_set:nnn{media9}{same~label}{ + Line~\msg_line_number: :~Label~`#1'~multiply~defined. +} +\msg_set:nnn{media9}{multiple~labels}{There~were~multiply-defined~labels!} + +\cs_new_nopar:Nn\mix_keytoaux_now:nn{ + \iow_now:Nx\@mainaux{\token_to_str:N\mix@newkey{#1}{#2}} + \bool_if:nT{ + !\cs_if_exist:cTF{#1}{ + \str_if_eq_p:ee{\tl_use:c{#1}}{#2} + }{ + \c_false_bool + } + }{ + \cs_if_exist:NF\g_mix_rerunwarned_tl{ + \tl_new:N\g_mix_rerunwarned_tl + \AtEndDocument{\msg_warning:nn{media9}{rerun}} + } + } +} +\cs_new_nopar:Nn\mix_keytoaux_shipout:nn{ + \iow_shipout_x:Nx\@mainaux{\token_to_str:N\mix@newkey{#1}{#2}} + \cs_if_exist:cF{#1}{ + \cs_if_exist:NF\g_mix_rerunwarned_tl{ + \tl_new:N\g_mix_rerunwarned_tl + \AtEndDocument{\msg_warning:nn{media9}{rerun}} + } + } +} + +%reset various variables for every new media inclusion +\cs_new:Nn\mix_reset:{ + \tl_gset:Nx\g_mix_label_tl{rm@\int_use:N\g_mix_rmcnt_int} + \tl_gclear:N\g_mix_usrlabel_tl + \tl_gclear:N\g_mix_flashvars_tl + \tl_gclear:N\g_mix_assets_tl + \tl_gclear:N\g_mix_configurations_tl + \tl_gset_eq:NN\g_mix_act_tl\g_mix_pkgact_tl + \tl_gset_eq:NN\g_mix_deact_tl\g_mix_pkgdeact_tl + \box_clear:N\l_mix_poster_box + \tl_clear:N\l_mix_scripts_tl + \bool_gset_eq:NN\g_mix_usrdraft_bool\g_mix_pkgdraft_bool + \bool_gset_eq:NN\g_mix_usrattach_bool\g_mix_pkgattach_bool + \tl_gset_eq:NN\g_mix_usrpbtn_tl\g_mix_pkgpbtn_tl + \seq_gclear:N\g_mix_res_seq + \seq_gclear:N\g_mix_script_seq + \int_gset_eq:NN\g_mix_resizeflag_int\g_mix_pkgresizeflag_int + \tl_set_eq:NN\l_mix_usrwd_tl\l_mix_pkgwd_tl + \tl_set_eq:NN\l_mix_usrht_tl\l_mix_pkght_tl + \tl_set_eq:NN\l_mix_usrtt_tl\l_mix_pkgtt_tl + \tl_gset_eq:NN\g_mix_wdarg_tl\g_mix_pkgwdarg_tl + \tl_gset_eq:NN\g_mix_htarg_tl\g_mix_pkghtarg_tl + \tl_gset_eq:NN\g_mix_ttarg_tl\g_mix_pkgttarg_tl + \bool_gset_eq:NN\g_mix_usriso_bool\g_mix_pkgiso_bool + \tl_gset_eq:NN\g_mix_scalearg_tl\g_mix_pkgscalearg_tl + \tl_gset_eq:NN\g_mix_transp_tl\g_mix_pkgtransp_tl + \tl_gset_eq:NN\g_mix_contextclick_tl\g_mix_pkgcontextclick_tl + \bool_gset_eq:NN\g_mix_opt_windowed_bool\g_mix_opt_pkgwindowed_bool + \tl_gset_eq:NN\g_mix_winsize_tl\g_mix_pkgwinsize_tl + \tl_gset_eq:NN\g_mix_winpos_tl\g_mix_pkgwinpos_tl + + %3D specific settings + \bool_gset_false:N\g_mix_iiid_bool + \bool_gset_false:N\g_mix_opt_iiidview_bool + \bool_gset_eq:NN\g_mix_iiidcalc_bool\g_mix_pkgiiidcalc_bool + + \tl_gset_eq:NN\g_mix_playcnt_tl\g_mix_pkgplaycnt_tl + \tl_gset_eq:NN\g_mix_playspd_tl\g_mix_pkgplayspd_tl + \tl_gset_eq:NN\g_mix_playtpe_tl\g_mix_pkgplaytpe_tl + \tl_gset_eq:NN\g_mix_tools_tl\g_mix_pkgtools_tl + \tl_gset_eq:NN\g_mix_nrdflt_tl\g_mix_pkgnrdflt_tl + \tl_gset_eq:NN\g_mix_nav_tl\g_mix_pkgnav_tl + + \tl_gset_eq:NN\g_mix_opt_bg_tl\g_mix_pkgopt_bg_tl + \tl_gset_eq:NN\g_mix_opt_ls_tl\g_mix_pkgopt_ls_tl + \tl_gset_eq:NN\g_mix_opt_rm_tl\g_mix_pkgopt_rm_tl + \tl_gset:Nn\g_mix_opt_psob_tl{Min} + \tl_gset:Nn\g_mix_opt_coo_tl{0~0~0} + \tl_gset:Nn\g_mix_opt_ctoc_tl{0~-1~0} + \tl_gclear:N\g_mix_opt_ciiw_tl + \fp_gset:Nn\g_mix_opt_roo_fp{1e-9} + \fp_gset:Nn\g_mix_opt_aac_fp{30} + \fp_gset:Nn\g_mix_opt_oscale_fp{1} + \fp_gset:Nn\g_mix_opt_roll_fp{0} + + \bool_set_false:N\l_mix_roo_bool + \bool_gset_false:N\g_mix_opt_ciiw_bool + \bool_gset_false:N\g_mix_opt_iiidortho_bool + + \tl_clear:N\l_mix_iiidviewarray_tl + \tl_gclear:N\g_mix_vfile_tl +} + +%3D settings to be reset before creating an additional view +\cs_new:Nn\mix_iiidreset:{ + \tl_clear:N\l_mix_bg_tl + \tl_clear:N\l_mix_ls_tl + \tl_clear:N\l_mix_rm_tl + \tl_set:Nn\l_mix_psob_tl{Min} + \tl_set:Nn\l_mix_coo_tl{0~0~0} + \tl_set:Nn\l_mix_ctoc_tl{0~-1~0} + \tl_clear:N\l_mix_ciiw_tl + + \fp_set:Nn\l_mix_roo_fp{1e-9} + \fp_set:Nn\l_mix_aac_fp{30} + \fp_set:Nn\l_mix_oscale_fp{1} + \fp_set:Nn\l_mix_roll_fp{0} + + \bool_set_false:N\l_mix_roo_bool + \bool_set_false:N\l_mix_ciiw_bool + \bool_set_false:N\l_mix_iiidortho_bool + + \tl_clear:N\l_mix_naarray_tl %array of node dicts + \tl_clear:N\l_mix_saarray_tl %array of crosssect dicts + \tl_set_eq:NN\l_mix_nr_tl\g_mix_nrdflt_tl %keep or restore part attributes +} + +%wrong image resource for 3D +\msg_set:nnn{media9}{wrong~image~resource}{ + Image~resource~file\\~~'#1'\\has~wrong~type.\\\\ + In~3D~context,~driver~#2~only~accepts~files~of~type\\#3\\ + as~image~resources. +} + +\cs_new:Nn\mix_insert_btnocg:{%OCG for play button overlay + \ocgbase_new_ocg:nnn{MediaPlayButton\int_use:N\g_mix_rmcnt_int}{ + /Print<</PrintState/OFF>>/Export<</ExportState/OFF>> + }{off} + \tl_gset:Nx\g_mix_btnocg_tl{\ocgbase_last_ocg:} +} + +%output mode/engine dependent command definitions +\cs_new:Nn\mix_ndname:n{%#1:HEX encoded UTF16BE string + \sys_if_output_pdf:TF{ + \sys_if_engine_pdftex:TF{ %convert to binary UTF16BE as by \pdfunescapehex + \str_set_convert:Nnnn\l_mix_ndname_tl{feff#1}{utf16/hex}{utf16} + \tl_set:Nx\l_mix_ndname_tl{(\l_mix_ndname_tl)} + }{ %luatex + \tl_set:Nn\l_mix_ndname_tl{<feff#1>} + } + }{ + \bool_if:NTF\g_mix_dvipdfmx_bool{ %dvipdfmx/XeTeX + \tl_set:Nn\l_mix_ndname_tl{<feff#1>} + }{ %dvips + \special{ps:~ + /mix@unicode~65535~string~def~ + (feff#1)~/ASCIIHexDecode~filter~mix@unicode~readstring~pop~ + /mix@unicode~exch~def~ + } + %converted to binary UTF16BE by ps2pdf + \tl_set:Nn\l_mix_ndname_tl{mix@unicode} + } + } +} + +\cs_new:Nn\mix_embedasset:n{ %#1 file name or url + %check if #1 is online resource + \bool_set_false:N\l_mix_url_bool\tl_set:Nx\l_tmpa_tl{#1} + \regex_match:nVT{(^[Hh][Tt][Tt][Pp][Ss]?|^[Ff][Tt][Pp]):\/\/}\l_tmpa_tl{ + \bool_set_true:N\l_mix_url_bool + } + \filename@parse{#1} + \tl_set:Nx\l_mix_base_tl{\filename@base} + \tl_set:Nx\l_mix_ext_tl{\text_lowercase:n{\filename@ext}} + \bool_if:NTF\l_mix_url_bool{ + \cs_if_exist:cF{url_#1}{ + \mix_pdfobj:nnn{}{dict}{/FS/URL/F(#1)} + \tl_gset:cx{url_#1}{\mix_pdflastobj:} + } + %every new url should be added to assets tree of the current annot + \cs_if_exist:cF{url_\int_use:c{g_mix_rmcnt_int}_#1}{ + \tl_gput_right:Nx\g_mix_assets_tl{~(#1)~\tl_use:c{url_#1}} + \tl_new:c{url_\int_use:c{g_mix_rmcnt_int}_#1} + } + \tl_gset:Nx\g_mix_lastasset_tl{\tl_use:c{url_#1}} + }{ + \file_if_exist:nTF{#1}{ + \file_get_full_name:nN{#1}\l_mix_file_tl + }{ + \msg_error:nnx{media9}{file~not~found}{#1} + } + \bool_if:nTF{ + %in 3D context, image resources must be embedded as Image XObjects, not + %as file streams + \g_mix_iiid_bool && ( + \str_if_eq_p:Vn\l_mix_ext_tl{jpg} + || \str_if_eq_p:Vn\l_mix_ext_tl{jpeg} + || \str_if_eq_p:Vn\l_mix_ext_tl{png} + || \str_if_eq_p:Vn\l_mix_ext_tl{jbig2} + || \str_if_eq_p:Vn\l_mix_ext_tl{jb2} + || \str_if_eq_p:Vn\l_mix_ext_tl{ps} + || \str_if_eq_p:Vn\l_mix_ext_tl{eps} + || \str_if_eq_p:Vn\l_mix_ext_tl{pdf} + ) + }{ + \cs_if_exist:cF{imgXobj_\file_mdfive_hash:n{\l_mix_file_tl}}{ + \mix_pdfximage:n{\l_mix_file_tl} + \tl_gset:cx{imgXobj_\file_mdfive_hash:n{\l_mix_file_tl}}{ + \mix_pdflastximage: + } + } + %create fake FileSpec for current file name if not yet existent + \cs_if_exist:cF{ImgFileSpecFor3D_#1}{ + \tl_gset:cx{ImgFileSpecFor3D_#1}{ + \tl_use:c{imgXobj_\file_mdfive_hash:n{\l_mix_file_tl}} + } + } + %add FileSpec to assets tree of current annot + \cs_if_exist:cF{fileAsset_\int_use:c{g_mix_rmcnt_int}_#1}{ + \tl_gput_right:Nx\g_mix_assets_tl{~(#1)~\tl_use:c{ImgFileSpecFor3D_#1}} + \tl_new:c{fileAsset_\int_use:c{g_mix_rmcnt_int}_#1} + } + \tl_gset:Nx\g_mix_lastasset_tl{\tl_use:c{ImgFileSpecFor3D_#1}} + }{ + %remaining file types in 3D context and any file type in case of Flash + %context will be embedded as ordinary fstreams; + \cs_if_exist:cF{fileEmb_\file_mdfive_hash:n{\l_mix_file_tl}}{ + \mix_pdfobj:nnn{}{fstream}{{}{\l_mix_file_tl}} + \tl_gset:cx{fileEmb_\file_mdfive_hash:n{\l_mix_file_tl}}{ + \mix_pdflastobj: + } + } + %create FileSpec for current file name if not yet existent + \cs_if_exist:cF{fileSpec_#1}{ + \mix_pdfobj:nnn{}{dict}{ + /Type/Filespec/F~(#1)%/UF~(#1) + /EF~<</F~\tl_use:c{fileEmb_\file_mdfive_hash:n{\l_mix_file_tl}}>> + } + \tl_gset:cx{fileSpec_#1}{\mix_pdflastobj:} + \bool_if:NT\g_mix_usrattach_bool{ + \mix_pdfannot:nnnn{0pt}{0pt}{0pt}{ + /Contents~(media~resource) + /F~2\cs_if_exist_use:N + /Subtype/FileAttachment + /FS~\mix_pdflastobj: + } + } + } + %add FileSpec to assets tree of current annot + \cs_if_exist:cF{fileAsset_\int_use:c{g_mix_rmcnt_int}_#1}{ + \tl_gput_right:Nx\g_mix_assets_tl{~(#1)~\tl_use:c{fileSpec_#1}} + \tl_new:c{fileAsset_\int_use:c{g_mix_rmcnt_int}_#1} + } + \tl_gset:Nx\g_mix_lastasset_tl{\tl_use:c{fileSpec_#1}} + } + } +} + +\cs_new:Nn\mix_draftbox:n{ %#1 text string to be shown in the draft box centre + \hbox_overlap_right:n{ + \hbox_to_wd:nn{\g_mix_wd_tl}{ + \vrule~height~\g_mix_ht_tl~depth~\g_mix_dp_tl\hss + \vrule + } + } + \box_move_down:nn{\g_mix_dp_tl}{ + \hbox_to_wd:nn{\g_mix_wd_tl}{ + \vbox_to_ht:nn{\g_mix_tt_tl}{ + \hrule~width~\g_mix_wd_tl\vss + \hbox_to_wd:nn{\g_mix_wd_tl}{\ttfamily{\tiny#1}\hss}\vss + \hrule + } + } + } +} + +\msg_set:nnn{media9}{zero~size}{ + Media~annotation~\msg_line_context:\ has~zero\\ + size~in~at~least~one~dimension.\\\\ + Provide~a~poster~text~with~non-zero~width~and\\ + height,~or~specify~a~suitable~size~via~`width'\\ + and~`height'~options. +} + +\msg_set:nnn{media9}{zero~width}{ + Media~annotation~\msg_line_context:\ has~zero~width.\\\\ + Provide~a~poster~text~with~non-zero~width~or\\ + set~a~valid~one~using~the~`width'~option. +} + +\msg_set:nnn{media9}{zero~height}{ + Media~annotation~\msg_line_context:\ has~zero~height.\\\\ + Provide~a~poster~text~with~non-zero~height~or\\ + set~a~valid~height~using~one~of~`height'~or\\ + `totalheight'~options. +} + + +%calculates widget dimensions from natural ones, taking resizing options +%into account +\int_new:N\g_mix_resizeflag_int% resizing flags according to options given +\cs_new:Nn\mix_scale:n{% #1 box number + %totalheight overrides height if both height & totalheight options were given + \bool_if:nT{ + \int_compare_p:n{\g_mix_resizeflag_int=3} || + \int_compare_p:n{\g_mix_resizeflag_int=7} + }{\int_gsub:Nn\g_mix_resizeflag_int{2}} + \group_begin: + %natural dimensions \width, \height, \depth, \totalheight + \tl_set:Nn\width {\box_wd:N#1} + \tl_set:Nn\height{\box_ht:N#1} + \tl_set:Nn\depth {\box_dp:N#1} + \tl_set:Nn\totalheight{\dimexpr\height+\depth\relax} + \tl_gset:Nx\g_tmpa_tl{\dim_eval:n{\width}} + \tl_gset:Nx\g_tmpb_tl{\dim_eval:n{\totalheight}} + %evaluate width/height/totalheight options + \tl_gset:Nx\g_mix_wd_tl{\dim_abs:n{\g_mix_wdarg_tl}} + \tl_gset:Nx\g_mix_ht_tl{\dim_abs:n{\g_mix_htarg_tl}} + \tl_gset:Nx\g_mix_tt_tl{\dim_abs:n{\g_mix_ttarg_tl}} + \dim_compare:nT{\width=\c_zero_dim}{\box_gset_wd:Nn#1{\g_mix_wd_tl}} + \dim_compare:nT{\totalheight=\c_zero_dim}{ + \bool_if:nT{ %height option given + \int_compare_p:n{\g_mix_resizeflag_int=6}|| + \int_compare_p:n{\g_mix_resizeflag_int=2} + }{\box_gset_ht:Nn#1{\g_mix_ht_tl}} + \bool_if:nT{ %totalheight option given + \int_compare_p:n{\g_mix_resizeflag_int=5}|| + \int_compare_p:n{\g_mix_resizeflag_int=\c_one_int} + }{\box_gset_ht:Nn#1{\g_mix_tt_tl}} + } + \group_end: + \tl_gset:Nn\g_mix_dp_tl{\c_zero_dim} %to be initialised here + %now resize (originally non-zero size) poster box according to the + %options given + \bool_if:nF{ + \dim_compare_p:n{\g_tmpa_tl=\c_zero_dim}|| + \dim_compare_p:n{\g_tmpb_tl=\c_zero_dim} + }{ + %bit 2^2=width, 2^1=height, 2^0=totalhight given + \int_case:nn{\g_mix_resizeflag_int}{ + {\c_one_int}{ + \box_resize_to_ht_plus_dp:Nn#1{\g_mix_tt_tl} + } + {2}{ + \box_resize_to_ht:Nn#1{\g_mix_ht_tl} + } + {4}{ + \box_resize_to_wd:Nn#1{\g_mix_wd_tl} + } + {5}{ + \bool_if:NTF\g_mix_usriso_bool{ + \dim_set:Nn\l_tmpa_dim{ + (\box_ht:N#1+\box_dp:N#1)*\dim_ratio:nn{\g_mix_wd_tl}{\box_wd:N#1} + } + \dim_set:Nn\l_tmpa_dim{\dim_abs:n{\l_tmpa_dim}} + \dim_set:Nn\l_tmpb_dim{\dim_abs:n{\g_mix_tt_tl}} + \dim_compare:nTF{\l_tmpa_dim<\l_tmpb_dim}{ + \box_resize_to_wd:Nn#1{\g_mix_wd_tl} + }{ + \box_resize_to_ht_plus_dp:Nn#1{\g_mix_tt_tl} + } + }{ + \box_resize_to_wd_and_ht_plus_dp:Nnn#1{\g_mix_wd_tl}{\g_mix_tt_tl} + } + } + {6}{ + \bool_if:NTF\g_mix_usriso_bool{ + \dim_set:Nn\l_tmpa_dim{ + \box_ht:N#1*\dim_ratio:nn{\g_mix_wd_tl}{\box_wd:N#1} + } + \dim_set:Nn\l_tmpa_dim{\dim_abs:n{\l_tmpa_dim}} + \dim_set:Nn\l_tmpb_dim{\dim_abs:n{\g_mix_ht_tl}} + \dim_compare:nTF{\l_tmpa_dim<\l_tmpb_dim}{ + \box_resize_to_wd:Nn#1{\g_mix_wd_tl} + }{ + \box_resize_to_ht:Nn#1{\g_mix_ht_tl} + } + }{ + \box_resize_to_wd_and_ht:Nnn#1{\g_mix_wd_tl}{\g_mix_ht_tl} + } + } + } + } + %apply scaling factor + \box_scale:Nnn#1{\g_mix_scalearg_tl}{\g_mix_scalearg_tl} + %dimensions after resizing + \tl_gset:Nx\g_mix_wd_tl{\dim_use:N\box_wd:N#1} + \tl_gset:Nx\g_mix_ht_tl{\dim_use:N\box_ht:N#1} + \tl_gset:Nx\g_mix_dp_tl{\dim_use:N\box_dp:N#1} + \tl_gset:Nx\g_mix_tt_tl{\dim_eval:n{\box_ht:N#1+\box_dp:N#1}} + \dim_compare:nT{\g_mix_wd_tl=\c_zero_dim}{\msg_warning:nn{media9}{zero~width}} + \dim_compare:nT{\g_mix_tt_tl=\c_zero_dim}{ + \msg_warning:nn{media9}{zero~height}} +} + +\bool_new:N\g_mix_iiid_bool +\int_new:N\l_mix_lineno_int + +\NewDocumentCommand\addmediapath{m}{ + \str_set:Nn \l_tmpa_str {#1/} + \seq_put_right:NV \l_file_search_path_seq \l_tmpa_str +} + +\box_new:N\l_mix_pbtn_box + +%environment for setting LTR typesetting direction with e-TeX based engines +\cs_new:Nn\mix_beginLTR:{ + \cs_if_exist:NT\TeXXeTstate{ + \int_compare:nT{\TeXXeTstate>\c_zero_int}{\beginL} + } +} +\cs_new:Nn\mix_endLTR:{ + \cs_if_exist:NT\TeXXeTstate{ + \int_compare:nT{\TeXXeTstate>\c_zero_int}{\endL} + } +} + +\ior_new:N\l_mix_vfile_stream %file stream for 3D views files +\NewDocumentCommand\includemedia{O{}mm}{%#1 options, #2 text/image #3 media file + \mix_uriend: + \group_begin: + \mix_beginLTR: + \mode_leave_vertical: + %empty stream as appearance dummy + \cs_if_exist:NF\g_mix_appearance_tl{ + \hbox_set:Nn\l_mix_poster_box{\phantom{\rule{1pt}{1pt}}} + \mix_pdfxform:n{\l_mix_poster_box} + \tl_gset:Nx\g_mix_appearance_tl{\mix_pdflastxform:} + } + \mix_reset: + \mix_uribegin: %treat URI characters correctly + \keys_set:nn{media9/user}{#1} + \mix_uriend: + \tl_greplace_all:Nnn\g_mix_flashvars_tl{~&}{&} + \tl_greplace_all:Nnn\g_mix_flashvars_tl{&~}{&} + \tl_greplace_all:Nnn\g_mix_flashvars_tl{~=}{=} + \tl_greplace_all:Nnn\g_mix_flashvars_tl{=~}{=} + \tl_gtrim_spaces:N\g_mix_flashvars_tl + + \cs_if_exist:NT\Ginput@path{\cs_set_eq:NN\input@path\Ginput@path} + + %\hbox_set:Nn\l_mix_poster_box{\group_begin:#2\group_end:} + %\hbox_set:Nn\l_mix_poster_box{#2} + \sbox\l_mix_poster_box{#2} + \mix_scale:n{\l_mix_poster_box} + \bool_if:nT{ + \dim_compare_p:n{\g_mix_tt_tl=\c_zero_dim}|| + \dim_compare_p:n{\g_mix_wd_tl=\c_zero_dim} + }{ + \tl_gset:Nn\g_mix_usrpbtn_tl{none} + } + \bool_if:NTF\g_mix_usrdraft_bool{ + \tl_if_empty:NF\g_mix_usrlabel_tl{ + \mix_keytoaux_now:nn{ann@\g_mix_usrlabel_tl}{draft} + } + \tl_if_blank:oTF{#2}{ + \mix_uribegin: %treat URI characters correctly + \mix_draftbox:n{\tl_to_str:n{#3}} + \mix_uriend: + }{ + \hbox_to_wd:nn{\g_mix_wd_tl}{ + \vrule~width~\c_zero_dim~height~\g_mix_ht_tl~depth~\g_mix_dp_tl + \box_use:N\l_mix_poster_box\hss + } + } + }{ + \bool_if:nF{\str_if_eq_p:Vn\g_mix_usrpbtn_tl{none}}{ + %attach script that switches off play button overlay upon activation + \mix_pdfobj:nnn{}{stream}{ + {}{ + var~ocgs=host.getOCGs(host.pageNum); + for(var~i=0;i<ocgs.length;i++){ + if(ocgs[i].name=='MediaPlayButton\int_use:N\g_mix_rmcnt_int'){ + ocgs[i].state=false; + } + } + } + } + \mix_pdfobj:nnn{}{dict}{ + /Type/Filespec/EF~<</F~\mix_pdflastobj:>>/F~(btnoff)%/UF~(btnoff) + } + \tl_gset:Nx\g_mix_assets_tl{(btnoff)~\mix_pdflastobj:} + \tl_set:Nx\l_mix_scripts_tl{~\mix_pdflastobj:~} + %enforce plain playbutton overlay for XeTeX + \sys_if_engine_xetex:T{\tl_gset:Nn\g_mix_usrpbtn_tl{plain}} + } + %embed main asset + \mix_uribegin: + \mix_embedasset:n{#3} + \bool_if:nTF{ + \str_if_eq_p:Vn\l_mix_ext_tl{prc}||\str_if_eq_p:Vn\l_mix_ext_tl{u3d} + }{ + \bool_gset_true:N\g_mix_iiid_bool + \tl_gset:Nn\g_mix_mainassetsub_tl{3D} + }{ + \str_case_e:nnF{\l_mix_base_tl}{ + {APlayer}{\tl_gset:Nn\g_mix_mainassetsub_tl{Sound}} + {AudioPlayer}{\tl_gset:Nn\g_mix_mainassetsub_tl{Sound}} + {VPlayer}{\tl_gset:Nn\g_mix_mainassetsub_tl{Video}} + {VideoPlayer}{\tl_gset:Nn\g_mix_mainassetsub_tl{Video}} + {StrobeMediaPlayback}{\tl_gset:Nn\g_mix_mainassetsub_tl{Video}} + }{\tl_gset:Nn\g_mix_mainassetsub_tl{Flash}} + } + \tl_gset:Nx\g_mix_mainasset_tl{~\g_mix_lastasset_tl} + \mix_uriend: + %secondary assets (added by addresource) + \seq_map_function:NN\g_mix_res_seq\mix_embedasset:n + \seq_map_inline:Nn\g_mix_script_seq{ + \mix_embedasset:n{##1} + \tl_put_right:Nx\l_mix_scripts_tl{~\g_mix_lastasset_tl} + } + %attach 3D calculation script + \bool_if:nT{\g_mix_iiid_bool && \g_mix_iiidcalc_bool}{ + \mix_embedasset:n{3Dmenu.js} + \tl_put_left:Nx\l_mix_scripts_tl{\g_mix_lastasset_tl~} + } + %create 3D views from file (option 3Dviews) + \bool_if:nT{\g_mix_iiid_bool && !(\tl_if_blank_p:V\g_mix_vfile_tl)}{ + \tl_set:Nn\l_mix_level_tl{-1} + \int_zero:N\l_mix_viewcnt_int + \int_zero:N\l_mix_lineno_int + + \ior_open:Nn\l_mix_vfile_stream{\g_mix_vfile_tl} + \ior_map_inline:Nn\l_mix_vfile_stream{ + \int_incr:N\l_mix_lineno_int + \keys_set:nn{media9/views}{##1} %process input line + } + \ior_close:N\l_mix_vfile_stream + } + \bool_if:nT{ %create default 3D view if required + \g_mix_iiid_bool && + (\g_mix_opt_iiidview_bool || \tl_if_blank_p:V\l_mix_iiidviewarray_tl) + }{ + \tl_set_eq:NN\l_mix_bg_tl\g_mix_opt_bg_tl + \tl_set_eq:NN\l_mix_ls_tl\g_mix_opt_ls_tl + \tl_set_eq:NN\l_mix_rm_tl\g_mix_opt_rm_tl + \tl_set_eq:NN\l_mix_psob_tl\g_mix_opt_psob_tl + \tl_set_eq:NN\l_mix_coo_tl\g_mix_opt_coo_tl + \tl_set_eq:NN\l_mix_ctoc_tl\g_mix_opt_ctoc_tl + \tl_set_eq:NN\l_mix_ciiw_tl\g_mix_opt_ciiw_tl + + \fp_set_eq:NN\l_mix_roo_fp\g_mix_opt_roo_fp + \fp_set_eq:NN\l_mix_aac_fp\g_mix_opt_aac_fp + \fp_set_eq:NN\l_mix_oscale_fp\g_mix_opt_oscale_fp + \fp_set_eq:NN\l_mix_roll_fp\g_mix_opt_roll_fp + + \bool_set_eq:NN\l_mix_ciiw_bool\g_mix_opt_ciiw_bool + \bool_set_eq:NN\l_mix_iiidortho_bool\g_mix_opt_iiidortho_bool + \tl_clear:N\l_mix_naarray_tl + + \bool_if:NF\l_mix_ciiw_bool{ + \tl_set:Nx\l_mix_args_tl{\l_mix_coo_tl\space\l_mix_ctoc_tl\space} + \exp_after:wN\mix_calc_ciiw:w\l_mix_args_tl\q_stop + } + + \tl_clear:N\l_mix_naarray_tl + \tl_clear:N\l_mix_saarray_tl + \tl_set_eq:NN\l_mix_nr_tl\g_mix_nrdflt_tl + + \mix_view:n{Default} + \tl_set:Nx\l_mix_dfltview_tl{\mix_pdflastobj:} + + } + \mix_pdfobj:nnn{}{dict}{ + /Type/RichMediaInstance + /Subtype/\g_mix_mainassetsub_tl + /Asset~\g_mix_mainasset_tl + \bool_if:NF\g_mix_iiid_bool{ + /Params~<< + /Binding\str_if_eq:VnTF\g_mix_transp_tl{true}{ + /Foreground + }{ + /Background + } + \tl_if_blank:VF\g_mix_flashvars_tl{ + /FlashVars~(\g_mix_flashvars_tl) + } + >> + } + } + \tl_if_empty:NF\g_mix_usrlabel_tl{ + \mix_keytoaux_now:nn{main@\g_mix_usrlabel_tl}{\mix_pdflastobj:} + } + \mix_pdfobj:nnn{}{dict}{ + /Type/RichMediaConfiguration + /Subtype/\g_mix_mainassetsub_tl + /Instances~[\mix_pdflastobj:] + } + \mix_pdfobj:nnn{}{dict}{ + /Type/RichMediaContent + /Assets~<</Names~[\g_mix_assets_tl]>> + /Configurations~[\mix_pdflastobj:] + \bool_if:nT{ + \g_mix_iiid_bool && !(\tl_if_empty_p:V\l_mix_iiidviewarray_tl) + }{ + /Views~[\l_mix_iiidviewarray_tl] + } + } + \tl_set:Nx\l_mix_content_tl{\mix_pdflastobj:} + \bool_if:nT{ + \g_mix_iiid_bool && \str_if_eq_p:Vn\g_mix_playtpe_tl{Oscillating} + }{ + \tl_gset:Nx\g_mix_playcnt_tl{\int_eval:n{\g_mix_playcnt_tl*2}} + } + %determine floating window size + \bool_if:NT\g_mix_opt_windowed_bool{ + \exp_after:wN\mix_parse_winsizearg:w\g_mix_winsize_tl\q_stop + } + \mix_pdfobj:nnn{}{dict}{ + /Activation~<< + /Condition\g_mix_act_tl + \bool_if:nT{ + \g_mix_iiid_bool && + !(\str_if_eq_p:Vn\g_mix_playtpe_tl{None}) + }{%seems to work only with 3D content + /Animation~<< + /Subtype/\g_mix_playtpe_tl + /PlayCount~\g_mix_playcnt_tl + /Speed~\g_mix_playspd_tl + >> + } + \bool_if:nT{ + \g_mix_iiid_bool && ( + \g_mix_opt_iiidview_bool || \tl_if_blank_p:V\l_mix_iiidviewarray_tl + ) + }{/View~\l_mix_dfltview_tl} + /Presentation~<< + /Transparent~\g_mix_transp_tl + \bool_if:NTF\g_mix_opt_windowed_bool{ + /Style/Windowed + /Window~<< + /Width~<</Default~\tl_mix_fltwd>> + /Height~<</Default~\tl_mix_fltht>> + /Position~<< + /HOffset~0/VOffset~0 + \str_case_e:nnF{\g_mix_winpos_tl}{ + {tl}{/VAlign/Near/HAlign/Near} + {cl}{/VAlign/Center/HAlign/Near} + {bl}{/VAlign/Far/HAlign/Near} + {bc}{/VAlign/Far/HAlign/Center} + {br}{/VAlign/Far/HAlign/Far} + {cr}{/VAlign/Center/HAlign/Far} + {tr}{/VAlign/Near/HAlign/Far} + {tc}{/VAlign/Near/HAlign/Center} + }{/HAlign/Center/VAlign/Center} + >> + >> + }{ + /Style/Embedded + } + \bool_if:NTF\g_mix_iiid_bool{ + /Toolbar~\g_mix_tools_tl + /NavigationPane~\g_mix_nav_tl + }{ + /PassContextClick~\g_mix_contextclick_tl + } + >> + \tl_if_blank:VF\l_mix_scripts_tl{/Scripts~[\l_mix_scripts_tl]} + >> + /Deactivation~<</Condition\g_mix_deact_tl>> + } + \tl_set:Nx\l_mix_settings_tl{\mix_pdflastobj:} + \tl_if_empty:NF\g_mix_usrlabel_tl{ + \tl_gset_eq:NN\g_mix_label_tl\g_mix_usrlabel_tl + } + % #1:width, #2:height, #3:depth, #4:content (key-value) + \mix_pdfannot:nnnn{\g_mix_wd_tl}{\g_mix_ht_tl}{\g_mix_dp_tl}{ + /Subtype/RichMedia + /F~4 + /BS~<</W~0/S/S>> + /Contents~(media~embedded~by~media9~[\g_mix_version_tl~(\g_mix_date_tl)]) + /NM~(\g_mix_label_tl) + /AP~<</N~\g_mix_appearance_tl>> + /RichMediaSettings~\l_mix_settings_tl + /RichMediaContent~\l_mix_content_tl + } + \tl_if_empty:NF\g_mix_usrlabel_tl{ + \mix_keytoaux_now:nn{ann@\g_mix_usrlabel_tl}{\mix_pdflastann:} + \mix_keytoaux_shipout:nn{page@\g_mix_usrlabel_tl}{ + \noexpand\the\g@mix@page@int} + } + \mix_pdfobj:nnn{}{dict}{ + /S/JavaScript/JS~( + try{ + if(typeof(annotRM)=='undefined'){annotRM=new~Array();} + if(typeof(annotRM['\g_mix_label_tl'])=='undefined'){ + annotRM['\g_mix_label_tl']= + this.getAnnotRichMedia(this.pageNum,'\g_mix_label_tl'); + } + \str_if_eq:eeF{\g_mix_usrpbtn_tl}{none}{ + if(typeof(ocgBtn\int_use:N\g_mix_rmcnt_int)=='undefined'){ + var~ocgs=this.getOCGs(this.pageNum); + for(var~i=0;i<ocgs.length;i++){ + if(ocgs[i].name=='MediaPlayButton\int_use:N\g_mix_rmcnt_int'){ + var~ocgBtn\int_use:N\g_mix_rmcnt_int=ocgs[i]; + } + } + } + if( + !annotRM['\g_mix_label_tl'].activated&&( + app.viewerType=='Reader'|| + app.viewerType=='Exchange'|| + app.viewerType=='Exchange-Pro' + )&&app.viewerVersion>=9 + ){ + ocgBtn\int_use:N\g_mix_rmcnt_int.state=true; + } + } + }catch(e){} + this.dirty=false; + ) + } + \mix_pdfannot:nnnn{0pt}{0pt}{0pt}{ + /Subtype/Widget + /FT/Btn/Ff~65537/F~2 + /BS~<</W~0>> + /T~(fd@\g_mix_label_tl) + /AA~<</PO~\mix_pdflastobj:~/PV~\mix_pdflastobj:>> + } + \mix_appendtofields:n{\mix_pdflastann:} + \hbox_overlap_right:n{\box_use:N\l_mix_poster_box} + \str_if_eq:eeTF{\g_mix_usrpbtn_tl}{none}{ + \hbox_to_wd:nn{\g_mix_wd_tl}{ + \vrule~width~\c_zero_dim~height~\g_mix_ht_tl~depth~\g_mix_dp_tl\hss + } + }{%insert play button overlay + \mix_insert_btnocg: %create OCG + \cs_gset_eq:Nc\mix_pbtn:NN{g@mix@pbtn@\g_mix_usrpbtn_tl @tl} + \group_begin: + \cs_if_exist:NT\textdir{\textdir TLT} + \sbox\l_mix_pbtn_box{\mix_pbtn:NN\g_mix_wd_tl\g_mix_tt_tl} + \box_move_down:nn{\g_mix_dp_tl}{ + \hbox_to_wd:nn{\g_mix_wd_tl}{ + \vbox_to_ht:nn{\g_mix_tt_tl}{ + \vss + \ocgbase_oc_bdc:n{\g_mix_btnocg_tl} + \box_use:N\l_mix_pbtn_box + \ocgbase_oc_emc: + } + } + } + \group_end: + } + \int_gincr:N\g_mix_rmcnt_int + } + \mix_endLTR: + \group_end: +} +\tl_set_eq:NN\l_mix_includemedia_tl\includemedia +\tl_set:Nn\includemedia{\mix_uribegin:\l_mix_includemedia_tl} + +%environment \mix_uribegin: ... \mix_uriend: to sanitize possibly +%active chars in URLs (RFC 2396), path specifications and JavaScript +\group_begin: +\char_set_catcode_other:n{`\~} +\cs_new_protected_nopar:Npn\mix_uribegin:{ + \group_begin: + %code contributed by J. Wright + \tl_map_inline:nn{.:;?!/"'*+,->=<$@([])^_`|~}{ + \cs_set_nopar:Npx\__mix_tmp:w{\token_to_str:N##1} + \char_set_active_eq:NN##1\__mix_tmp:w + } + \tl_map_inline:nn{\#\&\%\\\{\}}{ + \cs_set_nopar:Npx##1{\token_to_str:N##1} + } +} +\group_end: +\cs_set_eq:NN\mix_uriend:\group_end: + +%macro for building the C2W transformation matrix +\cs_new:Npn\mix_calc_ciiw:w#1~#2~#3~#4~#5~#6\q_stop{ + % #1,#2,#3 centre of orbit coordinates (coo) + % #4,#5,#6 centre of orbit to camera direction vector (c2c) + %normalized view vector (opposite to c2c) + \fp_set:Nn\l_mix_mag_fp{(#4*#4 + #5*#5 + #6*#6)**0.5} + \fp_set:Nn\l_mix_viewx_fp{-#4/\l_mix_mag_fp} + \fp_set:Nn\l_mix_viewy_fp{-#5/\l_mix_mag_fp} + \fp_set:Nn\l_mix_viewz_fp{-#6/\l_mix_mag_fp} + + %camera roll + \fp_set:Nn\l_mix_sinroll_fp{sin(\l_mix_roll_fp deg)} + \fp_set:Nn\l_mix_cosroll_fp{cos(\l_mix_roll_fp deg)} + + %top and bottom views + \fp_set:Nn\l_mix_leftx_fp{-1.0} + \fp_set:Nn\l_mix_lefty_fp{0.0} + \fp_set:Nn\l_mix_leftz_fp{0.0} + \fp_compare:nNnTF\l_mix_viewz_fp<\c_zero_fp{% top view + %up-vector + \fp_set:Nn\l_mix_upx_fp{0.0} + \fp_set:Nn\l_mix_upy_fp{1.0} + \fp_set:Nn\l_mix_upz_fp{0.0} + }{% bottom view + %up-vector + \fp_set:Nn\l_mix_upx_fp{0.0} + \fp_set:Nn\l_mix_upy_fp{-1.0} + \fp_set:Nn\l_mix_upz_fp{0.0} + } + \fp_set:Nn\l_mix_sumxy_fp{abs(\l_mix_viewx_fp) + abs(\l_mix_viewy_fp)} + \fp_compare:nNnF\l_mix_sumxy_fp=\c_zero_fp{% other views than top and bottom + %up-vector = up_world - (up_world dot view) view + \fp_set:Nn\l_mix_upx_fp{-\l_mix_viewz_fp*\l_mix_viewx_fp} + \fp_set:Nn\l_mix_upy_fp{-\l_mix_viewz_fp*\l_mix_viewy_fp} + \fp_set:Nn\l_mix_upz_fp{-\l_mix_viewz_fp*\l_mix_viewz_fp + 1.0} + %normalize up-vector + \fp_set:Nn\l_mix_mag_fp{(\l_mix_upx_fp*\l_mix_upx_fp + + \l_mix_upy_fp*\l_mix_upy_fp + \l_mix_upz_fp*\l_mix_upz_fp)**0.5} + \fp_set:Nn\l_mix_upx_fp{\l_mix_upx_fp/\l_mix_mag_fp} + \fp_set:Nn\l_mix_upy_fp{\l_mix_upy_fp/\l_mix_mag_fp} + \fp_set:Nn\l_mix_upz_fp{\l_mix_upz_fp/\l_mix_mag_fp} + %left vector = up x view + \fp_set:Nn\l_mix_leftx_fp{ + \l_mix_viewz_fp*\l_mix_upy_fp - \l_mix_viewy_fp*\l_mix_upz_fp} + \fp_set:Nn\l_mix_lefty_fp{ + \l_mix_viewx_fp*\l_mix_upz_fp - \l_mix_viewz_fp*\l_mix_upx_fp} + \fp_set:Nn\l_mix_leftz_fp{ + \l_mix_viewy_fp*\l_mix_upx_fp - \l_mix_viewx_fp*\l_mix_upy_fp} + %normalize left vector + \fp_set:Nn\l_mix_mag_fp{(\l_mix_leftx_fp*\l_mix_leftx_fp + + \l_mix_lefty_fp*\l_mix_lefty_fp + \l_mix_leftz_fp*\l_mix_leftz_fp)**0.5} + \fp_set:Nn\l_mix_leftx_fp{\l_mix_leftx_fp/\l_mix_mag_fp} + \fp_set:Nn\l_mix_lefty_fp{\l_mix_lefty_fp/\l_mix_mag_fp} + \fp_set:Nn\l_mix_leftz_fp{\l_mix_leftz_fp/\l_mix_mag_fp} + } + + %apply camera roll + \fp_set:Nn\l_mix_leftxprime_fp{ + \l_mix_leftx_fp*\l_mix_cosroll_fp + \l_mix_upx_fp*\l_mix_sinroll_fp} + \fp_set:Nn\l_mix_leftyprime_fp{ + \l_mix_lefty_fp*\l_mix_cosroll_fp + \l_mix_upy_fp*\l_mix_sinroll_fp} + \fp_set:Nn\l_mix_leftzprime_fp{ + \l_mix_leftz_fp*\l_mix_cosroll_fp + \l_mix_upz_fp*\l_mix_sinroll_fp} + + \fp_set:Nn\l_mix_upxprime_fp{ + \l_mix_upx_fp*\l_mix_cosroll_fp - \l_mix_leftx_fp*\l_mix_sinroll_fp} + \fp_set:Nn\l_mix_upyprime_fp{ + \l_mix_upy_fp*\l_mix_cosroll_fp - \l_mix_lefty_fp*\l_mix_sinroll_fp} + \fp_set:Nn\l_mix_upzprime_fp{ + \l_mix_upz_fp*\l_mix_cosroll_fp - \l_mix_leftz_fp*\l_mix_sinroll_fp} + + \fp_set_eq:NN\l_mix_leftx_fp\l_mix_leftxprime_fp + \fp_set_eq:NN\l_mix_lefty_fp\l_mix_leftyprime_fp + \fp_set_eq:NN\l_mix_leftz_fp\l_mix_leftzprime_fp + \fp_set_eq:NN\l_mix_upx_fp\l_mix_upxprime_fp + \fp_set_eq:NN\l_mix_upy_fp\l_mix_upyprime_fp + \fp_set_eq:NN\l_mix_upz_fp\l_mix_upzprime_fp + + %translation vector + \fp_set:Nn\l_mix_transx_fp{#1 - \l_mix_roo_fp*\l_mix_viewx_fp} + \fp_set:Nn\l_mix_transy_fp{#2 - \l_mix_roo_fp*\l_mix_viewy_fp} + \fp_set:Nn\l_mix_transz_fp{#3 - \l_mix_roo_fp*\l_mix_viewz_fp} + + %format elements of transformation matrix + \tl_set:Nx\l_mix_leftx_tl {\fp_to_decimal:n{round((\l_mix_leftx_fp),9)} } + \tl_set:Nx\l_mix_lefty_tl {\fp_to_decimal:n{round((\l_mix_lefty_fp),9)} } + \tl_set:Nx\l_mix_leftz_tl {\fp_to_decimal:n{round((\l_mix_leftz_fp),9)} } + \tl_set:Nx\l_mix_upx_tl {\fp_to_decimal:n{round((\l_mix_upx_fp),9)} } + \tl_set:Nx\l_mix_upy_tl {\fp_to_decimal:n{round((\l_mix_upy_fp),9)} } + \tl_set:Nx\l_mix_upz_tl {\fp_to_decimal:n{round((\l_mix_upz_fp),9)} } + \tl_set:Nx\l_mix_viewx_tl {\fp_to_decimal:n{round((\l_mix_viewx_fp),9)} } + \tl_set:Nx\l_mix_viewy_tl {\fp_to_decimal:n{round((\l_mix_viewy_fp),9)} } + \tl_set:Nx\l_mix_viewz_tl {\fp_to_decimal:n{round((\l_mix_viewz_fp),9)} } + \tl_set:Nx\l_mix_transx_tl{\fp_to_decimal:n{round((\l_mix_transx_fp),9)}} + \tl_set:Nx\l_mix_transy_tl{\fp_to_decimal:n{round((\l_mix_transy_fp),9)}} + \tl_set:Nx\l_mix_transz_tl{\fp_to_decimal:n{round((\l_mix_transz_fp),9)}} + + %concat elements to matrix + \tl_set:Nx\l_mix_ciiw_tl{ + \l_mix_leftx_tl \space + \l_mix_lefty_tl \space + \l_mix_leftz_tl \space + \l_mix_upx_tl \space + \l_mix_upy_tl \space + \l_mix_upz_tl \space + \l_mix_viewx_tl \space + \l_mix_viewy_tl \space + \l_mix_viewz_tl \space + \l_mix_transx_tl\space + \l_mix_transy_tl\space + \l_mix_transz_tl + } +} + +% 3D view object +\cs_new:Nn\mix_view:n{ + \tl_set:Nx\l_mix_oscale_tl{\fp_to_decimal:n{round((\l_mix_oscale_fp),9)}} + \tl_set:Nx\l_mix_aac_tl{\fp_to_decimal:n{round((\l_mix_aac_fp),9)}} + \tl_set:Nx\l_mix_roo_tl{\fp_to_decimal:n{round((\l_mix_roo_fp),9)}} + \mix_pdfobj:nnn{}{dict}{ + /MS/M + /P<< + \bool_if:NTF\l_mix_iiidortho_bool{ + /Subtype/O/OS~\l_mix_oscale_tl/OB/\l_mix_psob_tl + }{ + /Subtype/P/FOV~\l_mix_aac_tl/PS/\l_mix_psob_tl + } + >> + /C2W~[\l_mix_ciiw_tl] + /CO~\l_mix_roo_tl + \l_mix_nr_tl + /NA~[\l_mix_naarray_tl] + /SA~[\l_mix_saarray_tl] + \l_mix_bg_tl\l_mix_ls_tl\l_mix_rm_tl + /XN~(#1)/IN~(#1) + } +} + +%document command options + +\msg_set:nnnn{media9}{unknown~option}{ + Line~\msg_line_number: :~Unknown~option~`#1'. +}{ + Option~'#1'~is~not~known~by~media9:\\ + perhaps~it~is~spelled~incorrectly. +} + +\msg_set:nnn{media9}{deprecated~option}{ + Line~\msg_line_number: :~Option~`#1'~deprecated.\\ + #2 +} + +\bool_new:N\g_mix_usrdraft_bool +\bool_new:N\g_mix_usriso_bool +\bool_new:N\g_mix_usrattach_bool +\bool_new:N\g_mix_usrpbtn_bool +\bool_new:N\g_mix_opt_iiidview_bool +\bool_new:N\l_mix_roo_bool +\bool_new:N\g_mix_opt_ciiw_bool +\bool_new:N\g_mix_opt_iiidortho_bool +\bool_new:N\l_mix_ciiw_bool +\bool_new:N\l_mix_iiidortho_bool +\bool_new:N\g_mix_opt_windowed_bool + +\seq_new:N\g_mix_res_seq +\seq_new:N\g_mix_script_seq +\tl_new:N\g_mix_rmnames_tl + +\keys_define:nn{media9/user}{ + %user override automatic label + label .code:n = { + \tl_gset:Nx\g_mix_usrlabel_tl{#1} + \tl_gtrim_spaces:N\g_mix_usrlabel_tl + \cs_if_exist:cTF{rm@#1}{ + \msg_warning:nnx{media9}{same~label}{#1} + \cs_if_exist:NF\g_mix_samelabel_tl{ + \tl_new:N\g_mix_samelabel_tl + \AtEndDocument{\msg_warning:nn{media9}{multiple~labels}} + } + }{ + \tl_new:c{rm@#1} + } + }, + label .value_required:n = {true}, + + width .code:n = { + \tl_gset:Nn\g_mix_wdarg_tl{#1} + \tl_if_exist:NF\l_mix_usrwd_tl{ + \int_gadd:Nn\g_mix_resizeflag_int{4} + \tl_set:Nn\l_mix_usrwd_tl{} + } + }, + width .value_required:n = {true}, + + height .code:n = { + \tl_gset:Nn\g_mix_htarg_tl{#1} + \tl_if_exist:NF\l_mix_usrht_tl{ + \int_gadd:Nn\g_mix_resizeflag_int{2} + \tl_set:Nn\l_mix_usrht_tl{} + } + }, + height .value_required:n = {true}, + + totalheight .code:n = { + \tl_gset:Nn\g_mix_ttarg_tl{#1} + \tl_if_exist:NF\l_mix_usrtt_tl{ + \int_gadd:Nn\g_mix_resizeflag_int{\c_one_int} + \tl_set:Nn\l_mix_usrtt_tl{} + } + }, + totalheight .value_required:n = {true}, + + depth .code:n = { + \msg_warning:nnnn{media9}{deprecated~option}{depth}{ + Ignoring~`depth'~option. + } + }, + + keepaspectratio .choice:, + keepaspectratio / true .code:n = {\bool_gset_true:N\g_mix_usriso_bool}, + keepaspectratio / false .code:n = {\bool_gset_false:N\g_mix_usriso_bool}, + keepaspectratio .default:n = {true}, + + scale .code:n = {\tl_gset:Nx\g_mix_scalearg_tl{#1}}, + scale .value_required:n = {true}, + + url .code:n = { + \msg_warning:nnnn{media9}{deprecated~option}{url}{ + Instead,~use~a~fully~qualified~URL~starting~with~`http://'~or~`ftp://'. + } + }, + + addresource .code:n = {\seq_gput_right:Nn\g_mix_res_seq{#1}}, + addresource .value_required:n = {true}, + + add3Djscript .code:n = {\seq_gput_right:Nn\g_mix_script_seq{#1}}, + add3Djscript .value_required:n = {true}, + + flashvars .tl_gset_x:N = \g_mix_flashvars_tl, + flashvars .value_required:n = {true}, + + activate .choice:, + activate / pagevisible .code:n = {\tl_gset:Nn\g_mix_act_tl{/PV}}, + activate / pageopen .code:n = {\tl_gset:Nn\g_mix_act_tl{/PO}}, + activate / onclick .code:n = {\tl_gset:Nn\g_mix_act_tl{/XA}}, + activate .value_required:n = {true}, + + deactivate .choice:, + deactivate / pageinvisible .code:n = {\tl_gset:Nn\g_mix_deact_tl{/PI}}, + deactivate / pageclose .code:n = {\tl_gset:Nn\g_mix_deact_tl{/PC}}, + deactivate / onclick .code:n = {\tl_gset:Nn\g_mix_deact_tl{/XD}}, + deactivate .value_required:n = {true}, + + draft .choice:, + draft / true .code:n = {\bool_gset_true:N\g_mix_usrdraft_bool}, + draft / false .code:n = {\bool_gset_false:N\g_mix_usrdraft_bool}, + draft .default:n = {true}, + + final .choice:, + final / true .code:n = {\bool_gset_false:N\g_mix_usrdraft_bool}, + final / false .code:n = {\bool_gset_true:N\g_mix_usrdraft_bool}, + final .default:n = {true}, + + attachfiles .choice:, + attachfiles / true .code:n = {\bool_gset_true:N\g_mix_usrattach_bool}, + attachfiles / false .code:n = {\bool_gset_false:N\g_mix_usrattach_bool}, + attachfiles .default:n = {true}, + + noplaybutton .choice:, + noplaybutton / true .code:n = {\tl_gset:Nn\g_mix_usrpbtn_tl{none}}, + noplaybutton .default:n = {true}, + + playbutton .choice:, + playbutton / fancy .code:n = {\tl_gset:Nn\g_mix_usrpbtn_tl{fancy}}, + playbutton / plain .code:n = {\tl_gset:Nn\g_mix_usrpbtn_tl{plain}}, + playbutton / none .code:n = {\tl_gset:Nn\g_mix_usrpbtn_tl{none}}, + playbutton .default:n = {fancy}, + + transparent .choices:nn = {true,false}{ + \tl_gset:Nx\g_mix_transp_tl{\l_keys_choice_tl} + }, + transparent .default:n = {true}, + + passcontext .choices:nn = {true,false}{ + \tl_gset:Nx\g_mix_contextclick_tl{\l_keys_choice_tl} + }, + passcontext .default:n = {true}, + + windowed .code:n = { + \str_if_eq:nnTF{#1}{false}{ + \bool_gset_false:N\g_mix_opt_windowed_bool + }{ + \bool_gset_true:N\g_mix_opt_windowed_bool + \tl_set:Nx\l_tmpa_tl{#1} + \tl_remove_all:Nn\l_tmpa_tl{~} + \mix_parse_windowedarg:N\l_tmpa_tl + } + }, + + %3D specific options + 3Dplaytype .choice:, + 3Dplaytype / none .code:n = {\tl_gset:Nn\g_mix_playtpe_tl{None}}, + 3Dplaytype / linear .code:n = {\tl_gset:Nn\g_mix_playtpe_tl{Linear}}, + 3Dplaytype / oscillating .code:n = { + \tl_gset:Nn\g_mix_playtpe_tl{Oscillating}}, + 3Dplaytype .value_required:n = {true}, + + 3Dplaycount .code:n = {\tl_gset:Nx\g_mix_playcnt_tl{\fp_eval:n{trunc(#1)}}}, + 3Dplaycount .value_required:n = {true}, + + 3Dplayspeed .tl_gset_x:N = \g_mix_playspd_tl, + 3Dplayspeed .value_required:n = {true}, + + 3Dtoolbar .choices:nn = {true,false}{ + \tl_gset:Nx\g_mix_tools_tl{\l_keys_choice_tl}}, + 3Dtoolbar .default:n = {true}, + + 3Dnavpane .choices:nn = {true,false}{ + \tl_gset:Nx\g_mix_nav_tl{\l_keys_choice_tl}}, + 3Dnavpane .default:n = {true}, + + 3Dpartsattrs .choices:nn = {keep,restore}{ + \tl_set:Nn\l_mix_keep_tl{keep} + \tl_if_eq:NNTF\l_keys_choice_tl\l_mix_keep_tl{ + \tl_gset:Nn\g_mix_nrdflt_tl{/NR~false} + }{ + \tl_gset:Nn\g_mix_nrdflt_tl{/NR~true} + } + }, + 3Dpartsattrs .value_required:n = {true}, + + 3Dcoo .code:n = {\tl_gset:Nn\g_mix_opt_coo_tl{#1} + \bool_gset_true:N\g_mix_opt_iiidview_bool}, + 3Dcoo .value_required:n = {true}, + + 3Dc2c .code:n = {\tl_gset:Nn\g_mix_opt_ctoc_tl{#1} + \bool_gset_true:N\g_mix_opt_iiidview_bool}, + 3Dc2c .value_required:n = {true}, + + 3Dc2w .code:n = { + \tl_gset:Nx\g_mix_opt_ciiw_tl{#1} + \bool_gset_true:N\g_mix_opt_iiidview_bool + \bool_gset_true:N\g_mix_opt_ciiw_bool + }, + 3Dc2w .value_required:n = {true}, + + 3Droo .code:n = { + \fp_gset:Nn\g_mix_opt_roo_fp{abs(#1)} + \fp_compare:nNnT\g_mix_opt_roo_fp<{1e-9}{ + \fp_gset:Nn\g_mix_opt_roo_fp{1e-9}} + \bool_gset_true:N\g_mix_opt_iiidview_bool + \bool_set_true:N\l_mix_roo_bool + }, + 3Droo .value_required:n = {true}, + + 3Daac .code:n = {\fp_gset:Nn\g_mix_opt_aac_fp{#1} + \bool_gset_true:N\g_mix_opt_iiidview_bool}, + 3Daac .value_required:n = {true}, + + 3Dortho .code:n = { + \bool_gset_true:N\g_mix_opt_iiidview_bool + \bool_gset_true:N\g_mix_opt_iiidortho_bool + \fp_compare:nF{#1=0.0}{ + \fp_gset:Nn\g_mix_opt_oscale_fp{#1} + \bool_if:NF\l_mix_roo_bool{ + \fp_set:Nn\l_mix_temp_fp{1/#1/2} + \fp_gset_eq:NN\g_mix_opt_roo_fp\l_mix_temp_fp + } + } + }, + 3Dortho .default:n = {1}, + + 3Droll .code:n = {\fp_gset:Nn\g_mix_opt_roll_fp{#1} + \bool_gset_true:N\g_mix_opt_iiidview_bool}, + 3Droll .value_required:n = {true}, + + 3Dmenu .bool_gset:N = \g_mix_iiidcalc_bool, + + 3Dbg .code:n = { + \tl_gset:Nx\g_mix_opt_bg_tl{/BG<</Subtype/SC/CS/DeviceRGB/C[#1]/EA~true>>} + }, + 3Dbg .value_required:n = {true}, + + 3Dlights .code:n = { + \tl_gset:Nx\g_mix_opt_ls_tl{/LS<</Subtype/#1>>} + }, + 3Dlights .value_required:n = {true}, + + 3Drender .code:n = { + \regex_extract_once:nnNTF{ + ^(Transparent(?:Wireframe)?):(0|0\.[0-9]*|\.[0-9]+|1\.?|1\.0*)$ + }{#1}\l_mix_tmp_seq{ + \seq_pop_right:NN\l_mix_tmp_seq\l_mix_alpha_tl + \seq_pop_right:NN\l_mix_tmp_seq\l_mix_rmode_tl + \tl_gset:Nx\g_mix_opt_rm_tl{ + /RM<</Subtype/\l_mix_rmode_tl/O~\l_mix_alpha_tl>> + } + }{ + \tl_gset:Nx\g_mix_opt_rm_tl{/RM<</Subtype/#1>>} + } + }, + 3Drender .value_required:n = {true}, + + 3Dpsob .code:n = { + \tl_gset:Nx\g_mix_opt_psob_tl{#1} + }, + 3Dpsob .value_required:n = {true}, + + 3Dviews .code:n = { + \file_if_exist:nTF{#1}{ + \file_get_full_name:nN{#1}\l_mix_temp_tl + \tl_gset_eq:NN\g_mix_vfile_tl\l_mix_temp_tl + }{ + \msg_error:nnx{media9}{file~not~found}{#1} + } + }, + 3Dviews .value_required:n = {true}, + + unknown .code:n = { + \msg_error:nnx{media9}{unknown~option}{\l_keys_key_tl} + } +} + +%3D views file parsing + +%messages related to 3D views file parsing +\msg_set:nnn{media9}{nested~view}{ + File~#1,~line~#2:\\ + A~VIEW~section~cannot~be~nested~into~another~section. +} + +\msg_set:nnn{media9}{key~not~allowed}{ + File~#1,~line~#2:\\ + Key~`#3'~not~allowed~here;~must~go~into~#4~section. +} + +\msg_set:nnn{media9}{section~not~allowed}{ + File~#1,~line~#2:\\ + #3~not~allowed~here;~must~be~a~sub-section~of~a~#4~section. +} + +\msg_set:nnn{media9}{missing~part~name}{ + File~#1,~line~#2:\\ + You~must~provide~a~valid~PART~name~(PART=<part name>),~as~displayed\\ + in~the~model~tree~of~the~3D~object~(go~to~`View'->`Navigation~Panels'\\ + ->`Model~Tree'~in~Adobe~Reader). +} + +\msg_set:nnn{media9}{missing~utf16~name}{ + File~#1,~line~#2:\\ + You~must~provide~a~valid~hex~encoded~part~name~(UTF16NAME=<part~name\\ + as~hex~encoded~UTF-16~string>).~Enable~`3Dmenu'~option~and~choose\\ + `Get~Current~View'~from~3D~context~menu~to~generate~correct~views~file\\ + entries. +} + +\msg_set:nnn{media9}{too~many~cross~sections}{ + File~#1,~line~#2:\\ + Adobe~Reader~supports~only~one~cross~section~per~3D~view.\\ + I~am~ignoring~this~CROSSSECT. +} + +\msg_set:nnn{media9}{no~end~here}{ + File~#1,~line~#2:\\ + There~is~nothing~to~END~here. +} + +\cs_new:Npn\mix_parse_vect:w#1~#2~#3\q_stop{ + \fp_set:Nn\l_mix_x_fp{#1} + \fp_set:Nn\l_mix_y_fp{#2} + \fp_set:Nn\l_mix_z_fp{#3} +} + +\cs_new:Nn\mix_arcsin:Nnnn{ + %#1 result (rad), #2 argument, #3 current term no., #4 total number of + %terms + \int_compare:nTF{#3==\c_zero_int}{ + \fp_set:Nn\l_mix_tmpa_fp{1.0} + \fp_set:Nn\l_mix_tmpb_fp{1.0} + \fp_set:Nn\l_mix_tmpc_fp{1.0} + \fp_set:Nn\l_mix_tmpd_fp{#2} + + \fp_set:Nn#1{#2} + }{ + \fp_set:Nn\l_mix_tmpa_fp{\l_mix_tmpa_fp * \int_eval:n{2*#3-1}} + \fp_set:Nn\l_mix_tmpb_fp{\l_mix_tmpb_fp * \int_eval:n{2*#3}} + \fp_set:Nn\l_mix_tmpc_fp{\int_eval:n{2*#3+1}} + \fp_set:Nn\l_mix_tmpd_fp{\l_mix_tmpd_fp * #2 * #2} + + \fp_set:Nn#1{#1 + \l_mix_tmpd_fp*\l_mix_tmpa_fp/\l_mix_tmpb_fp/\l_mix_tmpc_fp} + } + \int_compare:nF{#3==#4}{ + \mix_arcsin:Nnnn#1{#2}{\int_eval:n{#3+1}}{#4} + } +} + +\cs_new:Nn\mix_angfromxy:Nnn{ %#1 result (deg), #2 x, #3 y + \fp_set:Nn\l_mix_asinarg_fp{#3/(#2*#2 + #3*#3)**0.5} + \fp_set:Nn\l_mix_acosarg_fp{#2/(#2*#2 + #3*#3)**0.5} + \fp_set:Nn\l_mix_halfsqrttwo_fp{2**0.5/2} + \mix_arcsin:Nnnn\l_mix_arcsin_fp{\l_mix_asinarg_fp}{0}{10} + \mix_arcsin:Nnnn\l_mix_arccos_fp{\l_mix_acosarg_fp}{0}{10} + \fp_set:Nn\l_mix_asinarg_fp{abs(\l_mix_asinarg_fp)} + %determine quadrant + \fp_compare:nTF{#2>=\c_zero_fp}{ + \fp_compare:nTF{#3>=\c_zero_fp}{ %I + \fp_compare:nNnTF\l_mix_asinarg_fp<\l_mix_halfsqrttwo_fp{ + \fp_set_eq:NN#1\l_mix_arcsin_fp + }{ + \fp_set:Nn#1{\c_pi_fp/2 - \l_mix_arccos_fp} + } + }{ %IV + \fp_compare:nNnTF\l_mix_asinarg_fp<\l_mix_halfsqrttwo_fp{ + \fp_set_eq:NN#1\l_mix_arcsin_fp + }{ + \fp_set:Nn#1{\l_mix_arccos_fp-\c_pi_fp/2} + } + } + }{ + \fp_compare:nTF{#3>=\c_zero_fp}{ %II + \fp_compare:nNnTF\l_mix_asinarg_fp<\l_mix_halfsqrttwo_fp{ + \fp_set:Nn#1{\c_pi_fp-\l_mix_arcsin_fp} + }{ + \fp_set:Nn#1{\c_pi_fp/2-\l_mix_arccos_fp} + } + }{ %III + \fp_compare:nNnTF\l_mix_asinarg_fp<\l_mix_halfsqrttwo_fp{ + \fp_set:Nn#1{-\c_pi_fp-\l_mix_arcsin_fp} + }{ + \fp_set:Nn#1{\l_mix_arccos_fp-\c_pi_fp/2} + } + } + } + \fp_set:Nn#1{#1/deg} +} + +\bool_new:N\l_mix_blankndname_bool + +%keys for parsing the 3D views file +\keys_define:nn{media9/views}{ + \par .code:n = {}, %allow for but ignore empty lines + + VIEW .code:n = { + \int_compare:nF{\l_mix_level_tl<\c_zero_int}{ + \msg_error:nnxx{media9}{nested~view} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int} + } + \tl_set:Nn\l_mix_level_tl{\c_zero_int} + \tl_set:Nn\l_mix_cscount_tl{\c_zero_int} + \tl_set:Nx\l_mix_xname_tl{#1}%optional name of the view + \tl_trim_spaces:N\l_mix_xname_tl + %reset 3D settings to defaults + \mix_iiidreset: + }, + VIEW .default:n = {}, + + COO .code:n = { + \int_compare:nF{\l_mix_level_tl=\c_zero_int}{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{COO}{a~VIEW} + } + \tl_set:Nx\l_mix_coo_tl{#1} + }, + COO .value_required:n = {true}, + + C2C .code:n = { + \int_compare:nF{\l_mix_level_tl=\c_zero_int}{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{C2C}{a~VIEW} + } + \tl_set:Nx\l_mix_ctoc_tl{#1} + }, + C2C .value_required:n = {true}, + + C2W .code:n = { + \int_compare:nF{\l_mix_level_tl=\c_zero_int}{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{C2W}{a~VIEW} + } + \tl_set:Nx\l_mix_ciiw_tl{#1} + \bool_set_true:N\l_mix_ciiw_bool + }, + C2W .value_required:n = {true}, + + ROO .code:n = { + \int_compare:nF{\l_mix_level_tl=\c_zero_int}{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{ROO}{a~VIEW} + } + \fp_set:Nn\l_mix_roo_fp{abs(#1)} + \fp_compare:nNnT\l_mix_roo_fp<{1e-9}{ + \fp_set:Nn\l_mix_roo_fp{1e-9}} + \bool_set_true:N\l_mix_roo_bool + }, + ROO .value_required:n = {true}, + + AAC .code:n = { + \int_compare:nF{\l_mix_level_tl=\c_zero_int}{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{AAC}{a~VIEW} + } + \fp_set:Nn\l_mix_aac_fp{#1} + }, + AAC .value_required:n = {true}, + + ORTHO .code:n = { + \int_compare:nF{\l_mix_level_tl=\c_zero_int}{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{ORTHO}{a~VIEW} + } + \bool_set_true:N\l_mix_iiidortho_bool + \fp_compare:nF{#1=0.0}{ + \fp_set:Nn\l_mix_oscale_fp{#1} + \bool_if:NF\l_mix_roo_bool{ + \fp_set:Nn\l_mix_temp_fp{1/#1/2} + \fp_set_eq:NN\l_mix_roo_fp\l_mix_temp_fp + } + } + }, + ORTHO .default:n = {1}, + + PSOB .code:n = { + \int_compare:nTF{\l_mix_level_tl=\c_zero_int}{ + \tl_set:Nx\l_mix_psob_tl{#1} + }{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int} + {PSOB}{a~VIEW} + } + }, + PSOB .value_required:n = {true}, + + ROLL .code:n = { + \int_compare:nF{\l_mix_level_tl=\c_zero_int}{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{ROLL}{a~VIEW} + } + \fp_set:Nn\l_mix_roll_fp{#1} + }, + ROLL .value_required:n = {true}, + + BGCOLOR .code:n = { + \int_compare:nF{\l_mix_level_tl=\c_zero_int}{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{BGCOLOR}{a~VIEW} + } + \tl_set:Nx\l_mix_bg_tl{/BG<</CS/DeviceRGB/C[#1]/EA~true>>} + }, + BGCOLOR .value_required:n = {true}, + + LIGHTS .code:n = { + \int_compare:nF{\l_mix_level_tl=\c_zero_int}{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{LIGHTS}{a~VIEW} + } + \tl_set:Nx\l_mix_ls_tl{/LS<</Subtype/#1>>} + }, + LIGHTS .value_required:n = {true}, + + RENDERMODE .code:n = { + \bool_if:nF{ + \int_compare_p:n{\l_mix_level_tl=\c_zero_int} || + \int_compare_p:n{\l_mix_level_tl=\c_one_int} + }{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int} + {RENDERMODE}{a~VIEW~or~a~PART} + } + \int_compare:nT{\l_mix_level_tl=\c_zero_int}{ + \tl_set:Nx\l_mix_rm_tl{/RM<</Subtype/#1>>} + } + \int_compare:nT{\l_mix_level_tl=\c_one_int}{ + \tl_set:Nx\l_mix_ndrm_tl{/RM<</Subtype/#1>>} %part (=node) render mode + } + }, + RENDERMODE .value_required:n = {true}, + + PARTSATTRS .choices:nn = {keep,restore}{ + \int_compare:nF{\l_mix_level_tl=\c_zero_int}{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{PARTSATTRS}{VIEW} + } + \tl_set:Nn\l_mix_keep_tl{keep} + \tl_if_eq:NNTF\l_keys_choice_tl\l_mix_keep_tl{ + \tl_set:Nn\l_mix_nr_tl{/NR~false} + }{ + \tl_set:Nn\l_mix_nr_tl{/NR~true} + } + }, + PARTSATTRS .value_required:n = {true}, + + PART .code:n = { + \int_compare:nF{\l_mix_level_tl=\c_zero_int}{ + \msg_error:nnxxxx{media9}{section~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{PART}{VIEW} + } + \bool_set_true:N\l_mix_blankndname_bool + \bool_set:Nn\l_mix_blankndname_bool{\tl_if_blank_p:o{#1}} + \tl_set:Nn\l_mix_level_tl{\c_one_int} + \tl_set:Nn\l_mix_ndname_tl{(#1)} %part (=node) name + \tl_set_eq:NN\l_mix_partlineno_int\l_mix_lineno_int + %default part settings + \tl_clear:N\l_mix_ndop_tl %opacity + \tl_clear:N\l_mix_ndvi_tl %visibility + \tl_clear:N\l_mix_ndrm_tl %render mode + \tl_clear:N\l_mix_ndtrans_tl%transformation matrix + }, + PART .default:n = {}, + + UTF16NAME .code:n = { %part (=node) name, UTF16, HEX encoded + \int_compare:nF{\l_mix_level_tl=\c_one_int}{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{UTF16NAME}{PART} + } + \tl_if_blank:oT{#1}{ + \msg_error:nnxx{media9}{missing~utf16~name} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int} + } + \bool_set_false:N\l_mix_blankndname_bool + \mix_ndname:n{#1} + }, + UTFNAME .default:n = {}, + + OPACITY .code:n = { + \bool_if:nF{ + \int_compare_p:n{\l_mix_level_tl=\c_one_int} || + \int_compare_p:n{\l_mix_level_tl=2} + }{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int} + {OPACITY}{PART~or~CROSSSECT} + } + \int_compare:nT{\l_mix_level_tl=\c_one_int}{ %part + \tl_set:Nx\l_mix_ndop_tl{/O~#1} + } + \int_compare:nT{\l_mix_level_tl=2}{ %crosssect + \tl_set:Nx\l_mix_csop_tl{/PO~#1} + } + }, + OPACITY .value_required:n = {true}, + + VISIBLE .choices:nn = {true,false}{ + \bool_if:nF{ + \int_compare_p:n{\l_mix_level_tl=\c_one_int} || + \int_compare_p:n{\l_mix_level_tl=2} + }{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int} + {VISIBLE}{PART~or~CROSSSECT} + } + \int_compare:nT{\l_mix_level_tl=\c_one_int}{ %part + \tl_set:Nx\l_mix_ndvi_tl{/V~\l_keys_choice_tl} + } + \int_compare:nT{\l_mix_level_tl=2}{ %crosssect + \tl_set:Nx\l_mix_cspv_tl{/PV~\l_keys_choice_tl} + } + }, + VISIBLE .default:n = {true}, + + INTERSECTIONVISIBLE .choices:nn = {true,false}{ + \int_compare:nF{\l_mix_level_tl=2}{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{INTERSECTIONVISIBLE} + {CROSSSECT} + } + \tl_set:Nx\l_mix_csiv_tl{/IV~\l_keys_choice_tl} + }, + INTERSECTIONVISIBLE .default:n = {true}, + + PLANECOLOR .code:n = { + \int_compare:nF{\l_mix_level_tl=2}{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{PLANECOLOR}{CROSSSECT} + } + \tl_set:Nx\l_mix_cspc_tl{/PC~[/DeviceRGB~#1]} + }, + PLANECOLOR .value_required:n = {true}, + + INTERSECTIONCOLOR .code:n = { + \int_compare:nF{\l_mix_level_tl=2}{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{INTERSECTIONCOLOR} + {CROSSSECT} + } + \tl_set:Nx\l_mix_csic_tl{/IC~[/DeviceRGB~#1]} + }, + INTERSECTIONCOLOR .value_required:n = {true}, + + TRANSFORM .code:n = { + \int_compare:nF{\l_mix_level_tl=\c_one_int}{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{TRANSLATE}{PART} + } + \seq_set_split:Nnn\l_mix_args_seq{~}{#1} + \seq_map_inline:Nn\l_mix_args_seq{ + \fp_set:Nn\l_mix_tmpa_fp{##1} + \tl_set:Nx\l_mix_tmpa_tl{\fp_to_decimal:n{round((\l_mix_tmpa_fp),9)}} + \tl_put_right:Nx\l_mix_ndtrans_tl{~\l_mix_tmpa_tl} + } + }, + TRANSFORM .value_required:n = {true}, + + CROSSSECT .code:n = { + \int_compare:nF{\l_mix_level_tl=\c_zero_int}{ + \msg_error:nnxxxx{media9}{section~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{CROSSSECT}{VIEW} + } + \int_compare:nT{\l_mix_cscount_tl>\c_zero_int}{ + \msg_warning:nnxx{media9}{too~many~cross~sections} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int} + } + \tl_set:Nn\l_mix_level_tl{2} + %default settings + \tl_set:Nn\l_mix_cscentre_tl{0~0~0} %centre of clipping plane + \tl_set:Nn\l_mix_csorient_tl{null~0~0} %orientation of plane + \tl_clear:N\l_mix_csop_tl %opacity + \tl_clear:N\l_mix_cspv_tl %plane visibility + \tl_clear:N\l_mix_cspc_tl %plane colour + \tl_clear:N\l_mix_csic_tl %intersection colour + \tl_clear:N\l_mix_csiv_tl %intersection visibility + }, + CROSSSECT .value_forbidden:n = {true}, + + CENTER .code:n = { + \int_compare:nF{\l_mix_level_tl=2}{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{CENTER}{CROSSSECT} + } + \tl_set:Nx\l_mix_args_tl{#1\space} + \exp_after:wN\mix_parse_vect:w\l_mix_args_tl\q_stop + \tl_set:Nx\l_mix_x_tl{\fp_to_decimal:n{round((\l_mix_x_fp),9)}} + \tl_set:Nx\l_mix_y_tl{\fp_to_decimal:n{round((\l_mix_y_fp),9)}} + \tl_set:Nx\l_mix_z_tl{\fp_to_decimal:n{round((\l_mix_z_fp),9)}} + \tl_set:Nx\l_mix_cscentre_tl{ + \l_mix_x_tl\space + \l_mix_y_tl\space + \l_mix_z_tl + } + }, + CENTER .value_required:n = {true}, + + NORMAL .code:n = { + \int_compare:nF{\l_mix_level_tl=2}{ + \msg_error:nnxxxx{media9}{key~not~allowed} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}{NORMAL}{CROSSSECT} + } + \tl_set:Nx\l_mix_args_tl{#1\space} + \exp_after:wN\mix_parse_vect:w\l_mix_args_tl\q_stop + \fp_set:Nn\l_mix_magxy{ %sqrt(x^2+y^2) + (\l_mix_x_fp*\l_mix_x_fp + \l_mix_y_fp*\l_mix_y_fp)**0.5} + %rot angle of normal vec around Y axis + \mix_angfromxy:Nnn\l_mix_roty_fp\l_mix_magxy\l_mix_z_fp + \fp_set:Nn\l_mix_roty_fp{-\l_mix_roty_fp} + %rot angle of normal vec around Z axis + \mix_angfromxy:Nnn\l_mix_rotz_fp\l_mix_x_fp\l_mix_y_fp + \tl_set:Nx\l_mix_roty_tl{\fp_to_decimal:n{round((\l_mix_roty_fp),9)}} + \tl_set:Nx\l_mix_rotz_tl{\fp_to_decimal:n{round((\l_mix_rotz_fp),9)}} + \tl_set:Nx\l_mix_csorient_tl{null~\l_mix_roty_tl\space\l_mix_rotz_tl} + }, + NORMAL .value_required:n = {true}, + + END .code:n = { + \int_case:nnF{\l_mix_level_tl}{ + {0}{ %VIEW + \bool_if:NF\l_mix_ciiw_bool{ + \tl_set:Nx\l_mix_args_tl{\l_mix_coo_tl\space\l_mix_ctoc_tl\space} + \exp_after:wN\mix_calc_ciiw:w\l_mix_args_tl\q_stop + } + \int_incr:N\l_mix_viewcnt_int + \tl_if_blank:VT\l_mix_xname_tl{ + \tl_set:Nx\l_mix_xname_tl{View~\int_use:N\l_mix_viewcnt_int} + } + \mix_view:n{\l_mix_xname_tl} + \tl_put_right:Nx\l_mix_iiidviewarray_tl{~\mix_pdflastobj:} + \tl_set:Nn\l_mix_level_tl{-1} + } + + {1}{ %PART + \bool_if:NT\l_mix_blankndname_bool{ + \msg_error:nnxx{media9}{missing~part~name} + {\g_mix_vfile_tl}{\int_use:N\l_mix_partlineno_int} + } + + \mix_pdfobj:nnn{}{dict}{ + /Type/3DNode/N~\l_mix_ndname_tl + \l_mix_ndop_tl\l_mix_ndvi_tl\l_mix_ndrm_tl + \tl_if_blank:VF\l_mix_ndtrans_tl{ + /M~[\l_mix_ndtrans_tl] + } + } + + \tl_put_right:Nx\l_mix_naarray_tl{~\mix_pdflastobj:} + \tl_set:Nn\l_mix_level_tl{\c_zero_int} + } + {2}{ %CROSSSECT + \int_compare:nT{\l_mix_cscount_tl=\c_zero_int}{ + \mix_pdfobj:nnn{}{dict}{ + /Type/3DCrossSection + /C~[\l_mix_cscentre_tl] + /O~[\l_mix_csorient_tl] + \l_mix_csop_tl\l_mix_cspv_tl\l_mix_cspc_tl + \l_mix_csic_tl\l_mix_csiv_tl + } + \tl_put_right:Nx\l_mix_saarray_tl{~\mix_pdflastobj:} + \tl_set:Nn\l_mix_cscount_tl{\c_one_int} + } + \tl_set:Nn\l_mix_level_tl{\c_zero_int} + } + }{ + \msg_error:nnxx{media9}{no~end~here} + {\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int} + } + }, + END .value_forbidden:n = {true}, +} + +%options for \mediabutton command + +%helpers for option parsing +\cs_new:Npn\mix_separate_cmd_from_actn:w#1[#2]#3\q_stop{#1} +\cs_new:Npn\mix_separate_arg_from_actn:w#1[#2]#3\q_stop{#2} +\prg_generate_conditional_variant:Nnn\regex_match:nn{nV}{TF} +\prg_generate_conditional_variant:Nnn\regex_match:nn{nV}{T} +\prg_generate_conditional_variant:Nnn\tl_if_blank:n{v}{F} +\prg_generate_conditional_variant:Nnn\tl_if_eq:nn{Vn}{TF} + +\bool_new:N\g_mix_btndraft_bool +\keys_define:nn{media9/mbtndraft}{ + draft .choice:, + draft / true .code:n = {\bool_gset_true:N\g_mix_btndraft_bool}, + draft / false .code:n = {\bool_gset_false:N\g_mix_btndraft_bool}, + draft .default:n = {true}, + + final .choice:, + final / true .code:n = {\bool_gset_false:N\g_mix_btndraft_bool}, + final / false .code:n = {\bool_gset_true:N\g_mix_btndraft_bool}, + final .default:n = {true}, + + unknown .code:n = {} +} +\keys_define:nn{media9/mbtn}{ + draft .code:n = {}, + final .code:n = {}, + + tooltip .tl_gset_x:N = \g_mix_tooltip_tl, + tooltip .value_required:n = {true}, + + overface .code:n = { + \sbox\l_mix_poster_box{ + \bool_if:NTF\g_pbs_lscape_bool{\rotatebox{90}{#1}}{#1}} + \mix_pdfxform:n{\l_mix_poster_box} + \tl_gset:Nx\g_mix_overbtn_tl{\mix_pdflastxform:} + }, + overface .value_required:n = {true}, + + downface .code:n = { + \sbox\l_mix_poster_box{ + \bool_if:NTF\g_pbs_lscape_bool{\rotatebox{90}{#1}}{#1}} + \mix_pdfxform:n{\l_mix_poster_box} + \tl_gset:Nx\g_mix_downbtn_tl{\mix_pdflastxform:} + }, + downface .value_required:n = {true}, + + 3Dgotoview .code:n = { + \tl_set:Nx\l_tmpa_tl{#1} %extract ref + \regex_replace_once:nnN{([^:]+):??.*}{\1}\l_tmpa_tl + \tl_trim_spaces:N\l_tmpa_tl + \tl_if_exist:cTF{ann@\l_tmpa_tl}{ + \str_if_eq:eeF{\tl_use:c{ann@\l_tmpa_tl}}{draft}{ + \tl_set:Nx\l_tmpb_tl{#1} %extract idx + \regex_replace_once:nnN{[^:]+:?}{}\l_tmpb_tl + \tl_trim_spaces:N\l_tmpb_tl + \tl_if_blank:VF\l_tmpb_tl{ + \regex_match:nVTF{^[DFLNP]$}\l_tmpb_tl{ + \tl_set:Nx\l_mix_vidx_tl{/\l_tmpb_tl} + }{ + \regex_match:nVTF{^\d+$}\l_tmpb_tl{ + \tl_set:Nx\l_mix_vidx_tl{~\l_tmpb_tl} + }{ + \regex_replace_once:nnN{^\(\s*}{}\l_tmpb_tl + \regex_replace_once:nnN{\s*\)$}{}\l_tmpb_tl + \tl_set:Nx\l_mix_vidx_tl{~(\l_tmpb_tl)} + } + } + } + \mix_pdfobj:nnn{}{dict}{ + /S/JavaScript/JS~( + if(typeof(annotRM)=='undefined'){annotRM=new~Array();} + if(typeof(annotRM['\l_tmpa_tl'])=='undefined'){ + annotRM['\l_tmpa_tl']= + this.getAnnotRichMedia(\tl_use:c{page@\l_tmpa_tl},'\l_tmpa_tl'); + } + annotRM['\l_tmpa_tl'].activated=true; + ) + \tl_if_blank:VF\l_tmpb_tl{ + /Next~<< + /S/GoTo3DView + /TA~\tl_use:c{ann@\l_tmpa_tl} + /V\l_mix_vidx_tl + >> + } + } + \tl_gput_right:Nx\g_mix_btnactions_tl{~\mix_pdflastobj:} + } + }{ + \msg_warning:nnx{media9}{undefined~reference}{\l_tmpa_tl} + \cs_if_exist:NF\g_mix_refundefwarned_tl{ + \tl_new:N\g_mix_refundefwarned_tl + \AtEndDocument{\msg_warning:nn{media9}{undefined~references}} + } + } + }, + 3Dgotoview .value_required:n = {true}, + + mediacommand .code:n = { + \tl_set:Nx\l_tmpa_tl{#1} + \regex_replace_once:nnN{([^:]+):??.*}{\1}\l_tmpa_tl %extract ref + \tl_trim_spaces:N\l_tmpa_tl + \tl_if_exist:cTF{ann@\l_tmpa_tl}{ + \str_if_eq:eeF{\tl_use:c{ann@\l_tmpa_tl}}{draft}{ + \tl_set:Nx\l_tmpb_tl{#1} + \regex_replace_once:nnN{[^:]+\:?}{}\l_tmpb_tl + \tl_trim_spaces:N\l_tmpb_tl + \regex_replace_all:nnN{^\{|\}$}{}\l_tmpb_tl + \tl_set:Nx\l_mix_cmd_tl{ + \exp_after:wN\mix_separate_cmd_from_actn:w\l_tmpb_tl[]\q_stop} + \tl_trim_spaces:N\l_mix_cmd_tl + \tl_set:Nx\l_mix_arg_tl{ + \exp_after:wN\mix_separate_arg_from_actn:w\l_tmpb_tl[]\q_stop} + \tl_trim_spaces:N\l_mix_arg_tl + \mix_pdfobj:nnn{}{dict}{ + /S/JavaScript/JS~( + if(typeof(annotRM)=='undefined'){annotRM=new~Array();} + if(typeof(annotRM['\l_tmpa_tl'])=='undefined'){ + annotRM['\l_tmpa_tl']= + this.getAnnotRichMedia(\tl_use:c{page@\l_tmpa_tl},'\l_tmpa_tl'); + } + annotRM['\l_tmpa_tl'].activated=true; + ) + \tl_if_blank:VF\l_mix_cmd_tl{ + /Next~<< + /S/RichMediaExecute + /TA~\tl_use:c{ann@\l_tmpa_tl} + /TI~\tl_use:c{main@\l_tmpa_tl} + /CMD~<< + /C~(\l_mix_cmd_tl) + \tl_if_blank:VF\l_mix_arg_tl{ + /A~[\l_mix_arg_tl] + } + >> + >> + } + } + \tl_gput_right:Nx\g_mix_btnactions_tl{~\mix_pdflastobj:} + } + }{ + \msg_warning:nnx{media9}{undefined~reference}{\l_tmpa_tl} + \cs_if_exist:NF\g_mix_refundefwarned_tl{ + \tl_new:N\g_mix_refundefwarned_tl + \AtEndDocument{\msg_warning:nn{media9}{undefined~references}} + } + } + }, + mediacommand .value_required:n = {true}, + + jsaction .code:n = { + \tl_set:Nx\l_tmpa_tl{#1} + \regex_match:nVTF{^[^\{:]+:.*$}\l_tmpa_tl{ + \regex_replace_once:nnN{([^:]+):??.*}{\1}\l_tmpa_tl %extract ref + \tl_trim_spaces:N\l_tmpa_tl + }{\tl_clear:N\l_tmpa_tl} + \tl_set:Nx\l_tmpb_tl{#1} + \tl_if_blank:VF\l_tmpa_tl{ + \tl_if_exist:cF{ann@\l_tmpa_tl}{ + \msg_warning:nnx{media9}{undefined~reference}{\l_tmpa_tl} + \cs_if_exist:NF\g_mix_refundefwarned_tl{ + \tl_new:N\g_mix_refundefwarned_tl + \AtEndDocument{\msg_warning:nn{media9}{undefined~references}} + } + } + \regex_replace_once:nnN{[^:]+\:}{}\l_tmpb_tl + } + \tl_set:Nx\l_tmpb_tl{\exp_after:wN\use:n\l_tmpb_tl} + \tl_trim_spaces:N\l_tmpb_tl + \tl_if_blank:VF\l_tmpb_tl{ + \mix_pdfobj:nnn{}{dict}{ + /S/JavaScript/JS~( + try{\l_tmpb_tl}catch(e){console.show();console.println(e)})}} + \bool_lazy_and:nnT{ + \tl_if_exist_p:c{ann@\l_tmpa_tl} + }{ + !\str_if_eq_p:ee{\tl_use:c{ann@\l_tmpa_tl}}{draft} + }{ + \mix_pdfobj:nnn{}{dict}{ + /S/JavaScript/JS~( + if(typeof(annotRM)=='undefined'){annotRM=new~Array();} + if(typeof(annotRM['\l_tmpa_tl'])=='undefined'){ + annotRM['\l_tmpa_tl']= + this.getAnnotRichMedia(\tl_use:c{page@\l_tmpa_tl},'\l_tmpa_tl'); + } + annotRM['\l_tmpa_tl'].activated=true; + ) + \tl_if_blank:VF\l_tmpb_tl{/Next~\mix_pdflastobj:} + } + } + \bool_if:nT{ + \bool_lazy_and_p:nn{ + \tl_if_exist_p:c{ann@\l_tmpa_tl} + }{ + !\str_if_eq_p:ee{\tl_use:c{ann@\l_tmpa_tl}}{draft} + } + || !\tl_if_blank_p:V\l_tmpb_tl + }{ + \tl_gput_right:Nx\g_mix_btnactions_tl{~\mix_pdflastobj:} + } + }, + jsaction .value_required:n = {true}, + + unknown .code:n = { + \msg_error:nnx{media9}{unknown~option}{\l_keys_key_tl} + } +} + +%create media buttons +\int_new:N\g_mix_mbtncnt_int +\NewDocumentCommand\mediabutton{O{}m}{%#1 options, #2 normal button text + \mix_uriend: + \group_begin: + \mix_beginLTR: + \mode_leave_vertical: + %reset various variables + \tl_gclear:N\g_mix_overbtn_tl + \tl_gclear:N\g_mix_downbtn_tl + \tl_gclear:N\g_mix_btnactions_tl + \tl_gclear:N\g_mix_tooltip_tl + %process options + \bool_gset_eq:NN\g_mix_btndraft_bool\g_mix_pkgdraft_bool + \mix_uribegin: %treat URI characters correctly + \keys_set:nn{media9/mbtndraft}{#1} %detect draft/final on first pass + \bool_if:NF\g_mix_btndraft_bool{\keys_set:nn{media9/mbtn}{#1}} + \mix_uriend: + %normal button appearance + %\hbox_set:Nn\l_mix_poster_box{#2} + \sbox\l_mix_poster_box{#2} + \tl_set:Nx\width {\dim_use:N\box_wd:N\l_mix_poster_box} + \tl_set:Nx\height{\dim_use:N\box_ht:N\l_mix_poster_box} + \tl_set:Nx\depth {\dim_use:N\box_dp:N\l_mix_poster_box} + \bool_if:NTF\g_mix_btndraft_bool{\box_use:N\l_mix_poster_box}{ + \sbox\l_mix_poster_box{\bool_if:NTF\g_pbs_lscape_bool{\rotatebox{90}{ + \box_use:N\l_mix_poster_box}}{\box_use:N\l_mix_poster_box}} + \mix_pdfxform:n{\l_mix_poster_box} + \tl_set:Nx\g_mix_normalbtn_tl{\mix_pdflastxform:} + %insert widget annotation + \mix_pdfannot:nnnn{\width}{\height}{\depth}{ + /Subtype/Widget + /T~(mbtn@\int_use:N\g_mix_mbtncnt_int) + \tl_if_empty:NF\g_mix_tooltip_tl{/TU~(\g_mix_tooltip_tl)} + /FT/Btn/Ff~65536 + \tl_if_empty:NTF\g_mix_downbtn_tl{/H/I}{/H/P} + /AP~<< + /N~\g_mix_normalbtn_tl + \tl_if_empty:NF\g_mix_overbtn_tl{/R~\g_mix_overbtn_tl} + \tl_if_empty:NF\g_mix_downbtn_tl{/D~\g_mix_downbtn_tl} + >> + /MK~<< + /TP~1~/IF~<</S/A/FB~true/A~[0.0~0.0]>> + /I~\g_mix_normalbtn_tl + \tl_if_empty:NF\g_mix_overbtn_tl{/RI~\g_mix_overbtn_tl} + \tl_if_empty:NF\g_mix_downbtn_tl{/IX~\g_mix_downbtn_tl} + >> + /A~<< + /S/JavaScript/JS~(app.focusRect=false;) + %sequence of actions to perform + \tl_if_empty:NF\g_mix_btnactions_tl{/Next~[\g_mix_btnactions_tl]} + >> + } + \mix_appendtofields:n{\mix_pdflastann:} + \hbox_to_wd:nn{\width}{ + \vrule~width~\c_zero_dim~height~\height~depth~\depth\hss + } + \int_gincr:N\g_mix_mbtncnt_int + } + \mix_endLTR: + \group_end: +} +\tl_set_eq:NN\l_mix_mediabutton_tl\mediabutton +\tl_set:Nn\mediabutton{\mix_uribegin:\l_mix_mediabutton_tl} +} +\ExplSyntaxOff +%play button overlay; two versions: fancy and plain +\if@mix@testphase\else +\newdimen\mix@btn@dim +\def\g@mix@pbtn@fancy@tl#1#2{% width, total height + \ifdefined\tikz% + \mix@btn@dim=\dimexpr\baselineskip*3\relax% + \ifdim#1<\mix@btn@dim\mix@btn@dim=#1\fi% + \ifdim#2<\mix@btn@dim\mix@btn@dim=#2\fi% + \tikz[x=\mix@btn@dim,y=\mix@btn@dim]{% + \shade [opacity=\ifdim#2>\dimexpr\baselineskip*6\relax0.6\else0\fi, + shading angle=-180,even odd rule] + (-\dimexpr#1/2\relax,-0.5) rectangle (\dimexpr#1/2\relax,0.5) + (0,0) circle (0.4); + \shade [ball color=gray,opacity=0.6] (0,0) circle (0.4); + \fill [color=white,opacity=0.6] %triangle + (-0.152,0.224)--(-0.152,-0.224)--+(30:0.4844)--cycle; + }% + \else% + \ifcsname g_mix_rerunwarned_tl\endcsname\else% + \expandafter\gdef\csname g_mix_rerunwarned_tl\endcsname{}% + \AtEndDocument{\csname msg_warning:nn\endcsname{media9}{rerun}}% + \fi% + \fi% + \ifdefined\mix@AtEnd@Doc\else% + \@bsphack\protected@write\@mainaux{}{% + \string\ifcsname\space mix@AtEnd@Doc\string\endcsname\string\else% + \string\AtBeginDocument{\string\RequirePackage{tikz}}% + \string\fi% + }\@esphack% + \gdef\mix@AtEnd@Doc{}% + \fi% +} +\def\g@mix@pbtn@plain@tl#1#2{% width, total height + \ifdefined\tikz% + \mix@btn@dim=\dimexpr\baselineskip*3\relax% + \ifdim#1<\mix@btn@dim\mix@btn@dim=#1\fi% + \ifdim#2<\mix@btn@dim\mix@btn@dim=#2\fi% + \tikz[x=\mix@btn@dim,y=\mix@btn@dim]{% + \fill [opacity=\ifdim#2>\dimexpr\baselineskip*6\relax0.5\else0\fi, + color=gray,even odd rule] + (-\dimexpr#1/2\relax,-0.5) rectangle (\dimexpr#1/2\relax,0.5); + (0,0) circle (0.4); + \fill [color=black,opacity=0.5] (0,0) circle (0.4); + \fill [color=white,opacity=0.8] + (-0.152,0.224)--(-0.152,-0.224)--+(30:0.4844)--cycle; + }% + \else% + \ifcsname g_mix_rerunwarned_tl\endcsname\else% + \expandafter\gdef\csname g_mix_rerunwarned_tl\endcsname{}% + \AtEndDocument{\csname msg_warning:nn\endcsname{media9}{rerun}}% + \fi% + \fi% + \ifdefined\mix@AtEnd@Doc\else% + \@bsphack\protected@write\@mainaux{}{% + \string\ifcsname\space mix@AtEnd@Doc\string\endcsname\string\else% + \string\AtBeginDocument{\string\RequirePackage{tikz}}% + \string\fi% + }\@esphack% + \gdef\mix@AtEnd@Doc{}% + \fi% +} +\fi +\begingroup +\if@mix@testphase\else\aftergroup\endinput\fi +\endgroup +%%%%%%%%%%%%%%%%%%%%%% /pdfmanagement-testphase %%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % media9.sty @@ -34,8 +2409,8 @@ \RequirePackage{l3keys2e} -\def\g@mix@date@tl{2021/03/01} -\def\g@mix@version@tl{1.15} +\def\g@mix@date@tl{2021/06/11} +\def\g@mix@version@tl{1.16} \NeedsTeXFormat{LaTeX2e}[2020-10-01] \ProvidesExplPackage{media9}{\g@mix@date@tl}{\g@mix@version@tl} diff --git a/macros/latex/contrib/media9/pdfbase.sty b/macros/latex/contrib/media9/pdfbase.sty index d4e7d79a68..eeab650bf6 100644 --- a/macros/latex/contrib/media9/pdfbase.sty +++ b/macros/latex/contrib/media9/pdfbase.sty @@ -1,3 +1,9 @@ +%%%%%%%%%%%%%%%%%%%%%% pdfmanagement-testphase %%%%%%%%%%%%%%%%%%% +\newif\if@pbs@testphase +\ExplSyntaxOn +\bool_if:nTF{ + \bool_lazy_and_p:nn {\cs_if_exist_p:N \pdfmanagement_if_active_p:} { \pdfmanagement_if_active_p: } +}{\@pbs@testphasetrue}{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % pdfbase.sty @@ -152,8 +158,8 @@ \RequirePackage{l3keys2e} -\def\g@pbs@date@tl{2021/03/01} -\def\g@pbs@version@tl{0.46} +\def\g@pbs@date@tl{2021/06/11} +\def\g@pbs@version@tl{0.47} \NeedsTeXFormat{LaTeX2e}[2020-10-01] \ProvidesExplPackage{pdfbase}{\g@pbs@date@tl}{\g@pbs@version@tl} @@ -1126,21 +1132,29 @@ \int_compare:nT{#2>\c_zero_int}{ %operations needed if used as annotation appearance { - isls{%landscape mode (powerdot, geometry /w landscape option) + % landscape mode (as class option, powerdot, + % geometry or typearea /w pkg option) + isls{ /pbs@dxdy~{ pbs@urx~pbs@llx~sub~abs~pbs@ury~pbs@lly~sub~abs~div }~bind~def~ /pbs@dydx~{1~pbs@dxdy~div}~bind~def~ /pbs@cx~{pbs@urx~pbs@llx~add~2~div}~bind~def~ /pbs@cy~{pbs@ury~pbs@lly~add~2~div}~bind~def~ - %graphics needs to be rescaled for some reason ... + % graphics needs to be rescaled for some reason ... [pbs@dxdy~0~0~pbs@dydx~1~pbs@dxdy~sub~pbs@cx~mul~ 1~pbs@dydx~sub~pbs@cy~mul]~concat~ %... rotated by 270 degrees ... [0~-1~1~0~pbs@cx~pbs@cy~sub~pbs@cx~pbs@cy~add]~concat~ - %... and flipped around vertical axis - [-1~0~0~1~pbs@llx~pbs@urx~add~0]~concat - }{%flip around horizontal axis in portrait mode + landplus90{ + %... and flipped around vertical axis (geometry, powerdot) + [-1~0~0~1~pbs@llx~pbs@urx~add~0]~concat + }{ + %... and flipped around horizontal axis (other) + [1~0~0~-1~0~pbs@lly~pbs@ury~add]~concat + }ifelse + }{ + % flip around horizontal axis in portrait mode [1~0~0~-1~0~pbs@lly~pbs@ury~add]~concat }ifelse }?pdfmark @@ -1307,6 +1321,1289 @@ } } +\cs_new_nopar:Nx\pbs_gsoldwarning:{ + {product~(Ghostscript)~search~{pop~pop~pop~true}{pop~false}ifelse~ + revision~915~lt~and~{ + (\token_to_str:N\n + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\token_to_str:N\n + @@\ \ \ \ \ \ \ \ \ \ \ \ Warning:\ Ghostscript\ too\ old!\ \ \ \ \ \ \ \ \ \ \ \ @@\token_to_str:N\n + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\token_to_str:N\n + @@\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ @@\token_to_str:N\n + @@\ Ghostscript\ version\ >=\ 9.15.\ required!\ \ \ \ \ \ \ \ \ \ \ \ \ \ @@\token_to_str:N\n + @@\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ @@\token_to_str:N\n + @@\ Various\ advanced\ PDF\ features\ such\ as\ Layers\ (OCGs)\ @@\token_to_str:N\n + @@\ and\ animations\ may\ not\ work.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ @@\token_to_str:N\n + @@\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ @@\token_to_str:N\n + @@\ Get\ current\ version\ from\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ @@\token_to_str:N\n + @@\ http://www.ghostscript.com/download\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ @@\token_to_str:N\n + @@\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ @@\token_to_str:N\n + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\token_to_str:N\n) + print}~if}~?pdfmark +} + +\cs_new_nopar:Nx\pbs_dpiwarning:{ + {Resolution~1200~gt~VResolution~1200~gt~or~product~(Ghostscript)~ + search~{pop~pop~pop~true}{pop~false}ifelse~and~{ + (\token_to_str:N\n + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\token_to_str:N\n + @@\ \ \ \ \ Warning:\ DVI\ resolution\ greater\ than\ 1200\ dpi!\ \ \ \ \ @@\token_to_str:N\n + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\token_to_str:N\n + @@\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ @@\token_to_str:N\n + @@\ PDF\ Annotation\ appearances\ (buttons,\ animation\ frames)\ @@\token_to_str:N\n + @@\ may\ be\ poorly\ scaled,\ clipped\ or\ invisible.\ \ \ \ \ \ \ \ \ \ \ \ @@\token_to_str:N\n + @@\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ @@\token_to_str:N\n + @@\ Dvips\ should\ be\ called\ either\ without\ option\ `-Ppdf':\ \ @@\token_to_str:N\n + @@\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ @@\token_to_str:N\n + @@\ \ \ dvips\ \c_sys_jobname_str\token_to_str:N\n + @@\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ @@\token_to_str:N\n + @@\ or\ with\ a\ different\ resolution\ setting,\ e.g.:\ \ \ \ \ \ \ \ \ \ @@\token_to_str:N\n + @@\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ @@\token_to_str:N\n + @@\ \ \ dvips\ -Ppdf\ -D1200\ \c_sys_jobname_str\token_to_str:N\n + @@\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ @@\token_to_str:N\n + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\token_to_str:N\n) + print}~if}~?pdfmark +} +} +\ExplSyntaxOff +\begingroup +\if@pbs@testphase\else\aftergroup\endinput\fi +\endgroup +%%%%%%%%%%%%%%%%%%%%%% /pdfmanagement-testphase %%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% pdfbase.sty +% +% driver independent access to low-level pdf features +% +% Copyright 2015--\today, Alexander Grahn +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% This package implements commands for the creation of PDF Objects, +% Form XObjects, Image XObjects, annotations, links, marked content (BDC/EMC) +% +% Supported workflows: +% +% pdflatex, lualatex +% latex-->dvips-->ps2pdf or Distiller +% latex-->dvipdfmx +% xelatex +% +% Package options: +% +% xetex +% dvipdfmx +% dvisvgm (basic support: \pbs_literal:nn, \pbs_pdfannot:nnnn, +% \pbs_pdfxform:nnnnn\pbs_pdfrefxform:n) +% bigfiles (for embedding large files as stream objects; only relevant for +% dvips mode, ignored otherwise) +% +% Commands defined: +% +% \pbs_pdfobj:nnn +% #1: predefined PDF object ID to be used for the current obj; may be empty +% #2: type of object ( generic | dict | array | stream | fstream ) +% #3: if #2== +% `generic', then single basic object, such as 3.141, (foo), true, /Name +% `dict', then PDF key-value dictionary +% `stream', then +% {stream attributes as PDF key-value dictionary}{content string} +% `fstream', then +% {stream attributes as PDF key-value dictionary}{file name} +% +% if #3 && #1 are both empty, an object reference will be reserved for later +% use as #1 +% +% \pbs_pdflastobj: +% inserts object ID of PDF object created/processed during most recent call +% of \pbs_pdfobj:nnn +% +% -------- +% +% \pbs_pdfannot:nnnn +% #1: width, #2: height, #3: depth, #4: dictionary (key-value) +% +% \pbs_pdflastann: +% inserts object ID of PDF object created during most recent call of +% \pbs_pdfannot:nnnn +% +% -------- +% +% \pbs_appendtofields:n +% #1 object ID of PDF annotation; annotations of /Subtype/Widget +% should be appended to the /Fields array of the global /AcroForm dictionary +% +% -------- +% +% \pbs_pdflink:nn +% #1: dictionary (key-value), #2: text +% +% -------- +% +% \pbs_pdfdest:nnnn +% #1: name, #2: fit | fitb | fitbh | fith | fitbv | fitv | xyz | fitr +% #3: zoom, #4: text +% +% -------- +% +% \pbs_pdfxform:nnnnn +% #1: add pgf/tikz resources (transparency, shading)? (1|0) %dvipdfmx/xetex +% #2: used as PDF annotation appearance? (1|0) %dvips/pdftex +% #3: additional resources %all BUT dvips +% #4: additional dictionary entries +% #5: savebox number +% creates PDF Form XObject from savebox content +% +% \pbs_pdflastxform: +% inserts object ID of PDF Form XObject created during most recent call of +% \pbs_pdfxform:nnnnn +% +% \pbs_pdfrefxform:n +% #1: xform object ID +% inserts the PDF Form XObject into the current content stream, that is, +% typsets the PDF Form XObject +% +% -------- +% +% \pbs_pdfximage:n +% #1: bitmap image file name +% creates PDF Image XObject from /bitmap/ file for use as bitmap resource +% in 3D context +% +% \pbs_pdflastximage: +% inserts object ID of PDF Image XObject created during most recent call of +% \pbs_pdfximage:n +% +% -------- +% +% \pbs_literal:nn +% #1: keyword (empty) | direct | page +% #2: raw PDF/Postscript code +% implements \pdfliteral{...}, \pdfliteral direct {...}, +% \pdfliteral page {...} from pdfTeX, and +% \special{" ...} and \special{ps: ...} from dvips +% +% -------- +% +% marked content BDC/EMC operators +% \pbs_pdfbdc:nn ... +% ... \pbs_pdfemc: +% #1: tag, #2: properties dictionary obj ID +% +% -------- +% +% \pbs_add_form_font: (pdfLaTeX, LuaLaTeX) +% adds current font as a resource to the global /AcroForm dict, allowing +% the font to be used in PDF Forms (theoretically, see +% https://acrobat.uservoice.com/forums/590923-acrobat-for-windows-and-mac/ +% suggestions/33077827-bug-in-text-field-forms-embedded-opentype-font ) +% +% \pbs_last_form_font: (pdfLaTeX, LuaLaTeX) +% expands to current font's resource name; to be used in the /DA (...) +% entry of the Form dictionary +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License. +% +% The latest version of this license is in +% +% http://mirrors.ctan.org/macros/latex/base/lppl.txt +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is A. Grahn. + +\RequirePackage{l3keys2e} + +\def\g@pbs@date@tl{2021/06/11} +\def\g@pbs@version@tl{0.47} + +\NeedsTeXFormat{LaTeX2e}[2020-10-01] +\ProvidesExplPackage{pdfbase}{\g@pbs@date@tl}{\g@pbs@version@tl} +{driver independent access to low-level PDF features} + +\int_new:N\g_pbs_page_int %abs. page counter + +%creating global definitions +\cs_new:Npn\pbs@newkey#1#2{\tl_gset:cx{#1}{#2}} + +\msg_set:nnn{pdfbase}{rerun}{Rerun~to~get~internal~references~right!} + +%LaTeX2e wrapper +\cs_new_nopar:Npn\pbs@seq@push@cx#1#2{ + \seq_if_exist:cF{#1}{\seq_new:c{#1}} + \seq_gput_right:cx{#1}{#2} +} + +%wrong image file type for Image XObject generation +\msg_gset:nnn{pdfbase}{wrong~image~resource}{ + Image~resource~file\\~~'#1'\\has~wrong~type.\\\\ + Driver~#2~only~accepts~files~of~type\\#3\\ + as~image~resources. +} + +% page (bop, eop) hooks +\cs_new_protected:Nn\pbs_bop_action:n{\seq_gput_right:Nn\g_pbs_bop_seq{#1}} +\cs_new_protected:Nn\pbs_eop_action:n{\seq_gput_right:Nn\g_pbs_eop_seq{#1}} +\seq_new:N\g_pbs_bop_seq +\seq_new:N\g_pbs_eop_seq + +\AtBeginDocument{ + \iow_now:Nx\@mainaux{ + \token_to_str:N\providecommand\token_to_str:N\pbs@newkey[2]{} + } + \iow_now:Nx\@mainaux{ + \token_to_str:N\providecommand\token_to_str:N\pbs@seq@push@cx[2]{} + } +} + +%%%%%%%%%%%%%%%%% +%package options +%%%%%%%%%%%%%%%%% +%unknown package option error message +\msg_gset:nnnn{pdfbase}{unknown~package~option}{Unknown~package~option~`#1'.}{ + Package option~'#1'~is~unknown;\\ + perhaps~it~is~spelled~incorrectly. +} + +\bool_new:N\g_pbs_pkgbigfiles_bool +\bool_new:N\g_pbs_dvipdfmx_bool +\bool_new:N\g_pbs_dvisvgm_bool +\bool_new:N\g_pbs_lscape_bool %if we are inside landscape env +\AtBeginDocument{ + \cs_if_exist:NT\landscape{% + \tl_put_right:Nn\landscape{\bool_gset_true:N\g_pbs_lscape_bool} + \tl_put_left:Nn\endlandscape{\bool_gset_false:N\g_pbs_lscape_bool} + } +} + +\keys_define:nn{pdfbase}{ + xetex .code:n = {}, %dummy, we use engine test instead + + dvipdfmx .choice:, + dvipdfmx / true .code:n = { + \bool_gset_true:N\g_pbs_dvipdfmx_bool + \bool_gset_false:N\g_pbs_dvisvgm_bool + }, + dvipdfmx / false .code:n = {\bool_gset_false:N\g_pbs_dvipdfmx_bool}, + dvipdfmx .default:n = {true}, + + dvisvgm .choice:, + dvisvgm / true .code:n = { + \bool_gset_true:N\g_pbs_dvisvgm_bool + \bool_gset_false:N\g_pbs_dvipdfmx_bool + }, + dvisvgm / false .code:n = {\bool_gset_false:N\g_pbs_dvisvgm_bool}, + dvisvgm .default:n = {true}, + + bigfiles .bool_gset:N = \g_pbs_pkgbigfiles_bool, + + unknown .code:n = { + \msg_error:nnx{pdfbase}{unknown~package~option}{\l_keys_key_tl} + } +} +\ProcessKeysOptions{pdfbase} + +\sys_if_output_pdf:T{ + \bool_gset_false:N\g_pbs_dvipdfmx_bool + \bool_gset_false:N\g_pbs_dvisvgm_bool +} + +\sys_if_engine_xetex:T{ + \bool_if:NF\g_pbs_dvisvgm_bool{\bool_gset_true:N\g_pbs_dvipdfmx_bool} +} + +% writing to core objects in the PDF, using the new +% pdfmanagement interface +\cs_new_protected_nopar:Nn\pbs_appendtofields:n{ + \pdfmanagement_add:nnx{Catalog/AcroForm}{Fields}{#1} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%commands for creating PDF objects, annots etc. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\sys_if_output_pdf:TF{ + %in LuaTeX-0.95.0, pdfTeX primitives got new names + \bool_lazy_and:nnT{ + \sys_if_engine_luatex_p: + }{ + !\int_compare_p:n{\luatexversion<95} + }{ + \cs_set:Npx\pdfpageresources{\pdfvariable~pageresources} + \cs_set_protected:Npn\pdfobj{\pdfextension~obj~} + \cs_set_protected:Npn\pdfrefobj{\pdfextension~refobj~} + \cs_set_protected:Npn\pdfannot{\pdfextension~annot~} + \cs_set_protected:Npn\pdfstartlink{\pdfextension~startlink~} + \cs_set_protected:Npn\pdfendlink{\pdfextension~endlink\relax} + \cs_set_protected:Npn\pdfdest{\pdfextension~dest~} + \cs_set_protected:Npn\pdfliteral{\pdfextension~literal~} + \cs_set:Npn\pdflastlink{\numexpr\pdffeedback~lastlink\relax} + \cs_set:Npn\pdflastobj{\numexpr\pdffeedback~lastobj\relax} + \cs_set:Npn\pdflastannot{\numexpr\pdffeedback~lastannot\relax} + \cs_set:Npn\pdfpageref{\numexpr\pdffeedback~pageref\relax} + \cs_set_eq:NN\pdfximage\saveimageresource + \cs_set_eq:NN\pdfrefximage\useimageresource + \cs_set_eq:NN\pdflastximage\lastsavedimageresourceindex + \cs_set_eq:NN\pdflastximagepages\lastsavedimageresourcepages + \cs_set_eq:NN\pdfxform\saveboxresource + \cs_set_eq:NN\pdfrefxform\useboxresource + \cs_set_eq:NN\pdflastxform\lastsavedboxresourceindex + \cs_set:Npn\pdffontobjnum{\pdffeedback~fontobjnum} + } + + %helper func to remove `0 R' part from pdf obj reference + \cs_new_nopar:Nn\pbs_reftonum:n{\_pbs_reftonum:f{#1}} + \cs_new_nopar:Nn\_pbs_reftonum:n{\exp_after:wN\_pbs_reftonum:w#1} + \cs_generate_variant:Nn\_pbs_reftonum:n{f} + \cs_new_nopar:Npn\_pbs_reftonum:w #1~0~R{#1} + + %literal PDF code into content stream, no saving of graphics state + \cs_new_protected_nopar:Nn\pbs_literal:nn{ % #1: empty (`'), `direct' or + \str_case:nnF{#1}{ % #2: raw PDF `page' + % `direct' inserts raw pdf code without translating origin (0,0) to + % current position: origin is lower left page corner + {direct}{\pdfliteral~direct~{#2}} + % same as above, but closing text object if necessary + {page}{\pdfliteral~page~{#2}} + }{ + % closing text object if necessary and setting current + % location's coordinates to (0,0) + \pdfliteral{#2} + } + } + + \cs_new_protected_nopar:Nn\pbs_pdfobj:nnn{ + \tl_clear:N\l_pbs_usenum_tl + \tl_if_blank:oF{#1}{ + \tl_set:Nx\l_pbs_usenum_tl{useobjnum~\pbs_reftonum:n{#1}} + } + \bool_if:nTF{\tl_if_blank_p:o{#1}&&\tl_if_blank_p:o{#3}}{ + \pdfobj~reserveobjnum + }{ + \str_case:nn{#2}{ + {generic}{\immediate\pdfobj~\l_pbs_usenum_tl~{#3}} + {dict}{\immediate\pdfobj~\l_pbs_usenum_tl~{<<#3>>}} + {array}{\immediate\pdfobj~\l_pbs_usenum_tl~{[#3]}} + {stream}{\immediate\pdfobj~\l_pbs_usenum_tl~stream~ + attr{\use_i:nn#3}~{\use_ii:nn#3} + } + {fstream}{\immediate\pdfobj~\l_pbs_usenum_tl~stream~ + attr{\use_i:nn#3}~file~{\use_ii:nn#3} + } + } + } + \tl_gset:Nx\g_pbs_pdflastobj_tl{\the\pdflastobj\space 0~R} + } + + \cs_new_protected_nopar:Nn\pbs_pdfannot:nnnn{ + \immediate\pdfannot~width~#1~height~#2~depth~#3 { + \cs_if_exist_use:N\ocgbase_insert_oc:~#4} + \tl_gset:Nx\g_pbs_pdflastann_tl{\the\pdflastannot\space 0~R} + } + + \cs_new_protected:Nn\pbs_pdflink:nn{ + \mode_leave_vertical: + \immediate\pdfstartlink~user~{ + \cs_if_exist_use:N\ocgbase_insert_oc:~#1}#2\pdfendlink + } + + \cs_new_protected:Nn\pbs_pdfdest:nnnn{ + \mode_leave_vertical: + \str_case:nnTF{#2}{ + {fit}{} + {fitb}{} + {fitbv}{} + {fitv}{} + }{ + \pdfdest~name~{#1}~#2~#4 + }{ + \group_begin: + \hbox_set:Nn\l_tmpa_box{#4} + \str_case:nnTF{#2}{ + {fitbh}{\tl_set:Nn\l_pbs_fittype_tl{#2}} + {fith}{\tl_set:Nn\l_pbs_fittype_tl{#2}} + {xyz}{\tl_set:Nn\l_pbs_fittype_tl{#2~zoom~\int_eval:n{#3*1000}}} + }{ + \box_move_up:nn{\box_ht:N\l_tmpa_box}{\hbox:n{ + \pdfdest~name~{#1}~\l_pbs_fittype_tl + }}#4 + }{ + \pdfdest~name~{#1}~fitr~ + width~\box_wd:N\l_tmpa_box~ + height~\box_ht:N\l_tmpa_box~ + depth~\box_dp:N\l_tmpa_box + \box_use:N\l_tmpa_box + } + \box_clear:N\l_tmpa_box + \group_end: + } + } + + \cs_new_protected_nopar:Nn\pbs_pdfxform:nnnnn{ % #1 not used + %additional resources + \tl_set:Nx\l_tmpa_tl{\the\pdfpageresources~#3}\tl_trim_spaces:N\l_tmpa_tl + %additional dict entries + \tl_set:Nx\l_tmpb_tl{#4} + \tl_trim_spaces:N\l_tmpb_tl + \int_compare:nT{#2>\c_zero_int}{\immediate} + \pdfxform~ + \str_if_eq:eeF{\l_tmpb_tl}{}{attr~{\l_tmpb_tl}~} + \str_if_eq:eeF{\l_tmpa_tl}{}{resources~{\l_tmpa_tl}~}#5 + \tl_gset:Nx\g_pbs_pdflastxform_tl{\the\pdflastxform\space 0~R} + } + + \cs_new_protected_nopar:Nn\pbs_pdfrefxform:n{% #1: xform obj ID + \hbox_set:Nn\l_tmpa_box{\pdfrefxform\pbs_reftonum:n{#1}} + \box_set_wd:Nn\l_tmpa_box{\c_zero_dim} + \box_set_ht:Nn\l_tmpa_box{\c_zero_dim} + \box_set_dp:Nn\l_tmpa_box{\c_zero_dim}\box_use_drop:N\l_tmpa_box + } + + \cs_new_protected_nopar:Nn\pbs_pdfximage:n{ + \filename@parse{#1} + \tl_set:Nx\l_pbs_ext_tl{\text_lowercase:n{\filename@ext}} + \bool_if:nTF{ + \str_if_eq_p:Vn\l_pbs_ext_tl{png} + ||\str_if_eq_p:Vn\l_pbs_ext_tl{jpg} + ||\str_if_eq_p:Vn\l_pbs_ext_tl{jpeg} + ||\str_if_eq_p:Vn\l_pbs_ext_tl{jbig2} + ||\str_if_eq_p:Vn\l_pbs_ext_tl{jb2} + }{ + \immediate\pdfximage{#1} + \tl_gset:Nx\g_pbs_pdflastximage_tl{\the\pdflastximage\space 0~R} + }{ + \msg_error:nnnnn{pdfbase}{wrong~image~resource}{#1}{pdftex}{ + png,~jpeg~and~jbig2 + } + } + } + + \int_new:N\g_pbs_oc_int %object ID for marked content Properties + + \cs_new_protected_nopar:Nn\pbs_pdfbdc:nn{ + %decide whether the current property is to be written to the page + %resources or to the xobject resources, depending on whether marked content + %is written to a page stream or to an xobject stream (for compatibility with + %`xsavebox' package) + \bool_if:nTF{ + \cs_if_exist:NTF\xsb_count_props:{ + \int_compare_p:n{\xsb_count_props:>\c_zero_int} + }{ + \c_false_bool + } + }{ + \pdfliteral~page~{/#1/rm@oc\int_use:N\g_pbs_oc_int\space BDC} + \xsb_addto_props:n{/rm@oc\int_use:N\g_pbs_oc_int\space#2} + \int_gincr:N\g_pbs_oc_int + }{ + \pdf_bdcobject:nx{#1}{\tl_use:c{g_pbs_objname_#2_tl}} + } + } + + \cs_new_protected_nopar:Nn\pbs_add_form_font:{ + \cs_if_exist:cF{pbs_form_font_\pdffontobjnum\font}{ + \tl_new:c{pbs_form_font_\pdffontobjnum\font} + \pdfmanagement_add:nxx{Catalog/AcroForm/DR/Font}{ + FormFont\pdffontobjnum\font}{\pdffontobjnum\font\space 0~R} + \tl_gset:Nx\g_pbs_last_form_font_tl{/FormFont\pdffontobjnum\font} + } + } + \cs_new_nopar:Nn\pbs_last_form_font:{\g_pbs_last_form_font_tl} +}{ + %pgf + transparency related settings + \bool_new:N\g_pbs_pgfloaded_bool + \bool_gset_false:N\g_pbs_pgfloaded_bool + \AtBeginDocument{ + \@ifpackageloaded{pgf}{\bool_gset_true:N\g_pbs_pgfloaded_bool}{} + } + \int_new:N\g_pbs_obj_int %object ID + \bool_if:NTF\g_pbs_dvipdfmx_bool{ %dvipdfmx/XeTeX + \AtBeginDocument{ + % suppress any annotation growth through (x)dvipdfmx option/config var `g' + \special{dvipdfmx:config~g~0} + % suppress link destination renaming (as in original dvipdfm + \special{dvipdfmx:config~C~0x10} % and in pre-2014 dvipdfmx) + } + + %literal PDF code into content stream; open text objects are always closed + \cs_new_protected_nopar:Nn\pbs_literal:nn{ % #1: empty (`'), `direct' or + \str_case:nnF{#1}{ % #2: raw PDF `page' + % `pdf:code' inserts raw pdf code without translating origin (0,0) to + % the current position. Unlike pdftex, origin is (+72bp,-72bp) from the + % upper left page corner. In analogy to pdftex, newer dvipdfmx versions + % also provide `pdf:direct:' and `pdf:page:', but actually, both are + % just aliases for `pdf:code'. + {direct}{\special{pdf:code~#2}} + {page}{\special{pdf:code~#2}} + }{ + % sets current location's coordinates to (0,0), while saving graphics + % state before and re-instating after insertion (this is different from + % \pdfliteral{...} + \special{pdf:content~#2} + } + } + + \cs_new_protected_nopar:Nn\pbs_pdfobj:nnn{ + \tl_if_blank:oTF{#1}{ + \tl_set:Nx\l_pbs_usenum_tl{@pbs@obj\int_use:N\g_pbs_obj_int} + \int_gincr:N\g_pbs_obj_int + }{ + \tl_set:Nx\l_pbs_usenum_tl{#1} + } + \tl_if_blank:oF{#3}{ + \str_case:nn{#2}{ + {generic}{\special{pdf:obj~\l_pbs_usenum_tl\space #3}} + {dict}{\special{pdf:obj~\l_pbs_usenum_tl\space<<#3>>}} + {array}{\special{pdf:obj~\l_pbs_usenum_tl\space[#3]}} + {stream}{\special{pdf:stream~\l_pbs_usenum_tl\space + (\use_ii:nn#3)<<\use_i:nn#3>> + }} + {fstream}{ + \message{<\use_ii:nn#3>} + \special{pdf:fstream~\l_pbs_usenum_tl\space + (\use_ii:nn#3)<<\use_i:nn#3>> + } + } + } + } + \tl_gset_eq:NN\g_pbs_pdflastobj_tl\l_pbs_usenum_tl + } + + \cs_new_protected_nopar:Nn\pbs_pdfannot:nnnn{ + \special{pdf:ann~@pbs@obj\int_use:N\g_pbs_obj_int\space + width~\dim_eval:n{#1}~height~\dim_eval:n{#2}~depth~\dim_eval:n{#3}~ + <<\cs_if_exist_use:N\ocgbase_insert_oc:~#4>> + } + \tl_gset:Nx\g_pbs_pdflastann_tl{@pbs@obj\int_use:N\g_pbs_obj_int} + \int_gincr:N\g_pbs_obj_int + } + + \cs_new_protected:Nn\pbs_pdflink:nn{ + \mode_leave_vertical: + \special{pdf:bann~<<\cs_if_exist_use:N\ocgbase_insert_oc:~#1>>}#2 + \special{pdf:eann} + } + + \cs_new_protected:Nn\pbs_pdfdest:nnnn{ + \mode_leave_vertical: + \str_case:nnTF{#2}{ + {fit}{\tl_set:Nn\l_pbs_fittype_tl{/Fit}} + {fitb}{\tl_set:Nn\l_pbs_fittype_tl{/FitB}} + {fitbv}{\tl_set:Nn\l_pbs_fittype_tl{/FitBV~@xpos}} + {fitv}{\tl_set:Nn\l_pbs_fittype_tl{/FitV~@xpos}} + }{ + \special{pdf:~dest~(#1)~[~@thispage~\l_pbs_fittype_tl]}#4 + }{ + \group_begin: + \hbox_set:Nn\l_tmpa_box{#4} + \str_case:nnTF{#2}{ + {fitbh}{\tl_set:Nn\l_pbs_fittype_tl{/FitBH~@ypos}} + {fith}{\tl_set:Nn\l_pbs_fittype_tl{/FitH~@ypos}} + {xyz}{\tl_set:Nn\l_pbs_fittype_tl{/XYZ~@xpos~@ypos~#3}} + }{ + \box_move_up:nn{\box_ht:N\l_tmpa_box}{\hbox:n{ + \special{pdf:~dest~(#1)~[~@thispage~\l_pbs_fittype_tl]} + }}#4 + }{ % FitR + \box_move_down:nn{\box_dp:N\l_tmpa_box}{\hbox:n{ + \pbs_pdfobj:nnn{}{generic}{@xpos} + \tl_gset_eq:NN\g_pbs_llx_tl\g_pbs_pdflastobj_tl + \pbs_pdfobj:nnn{}{generic}{@ypos} + \tl_gset_eq:NN\g_pbs_lly_tl\g_pbs_pdflastobj_tl + }} + \box_use:N\l_tmpa_box + \box_move_up:nn{\box_ht:N\l_tmpa_box}{\hbox:n{ + \special{pdf:~dest~(#1)~[@thispage~ + /FitR~ + \g_pbs_llx_tl\space\g_pbs_lly_tl\space @xpos~@ypos + ]} + }} + } + \box_clear:N\l_tmpa_box + \group_end: + } + } + + \cs_new_protected_nopar:Nn\pbs_pdfxform:nnnnn{ % #2 not used + \group_begin: + \hbox_set:Nn\l_tmpa_box{ + \special{pdf:bxobj~@pbs@obj\int_use:N\g_pbs_obj_int\space + width~\dim_eval:n{\box_wd:N#5}~ + height~\space\dim_eval:n{\box_ht:N#5}~ + depth~\space \dim_eval:n{\box_dp:N#5} + } + \box_use:N#5 + \tl_clear:N\l_tmpa_tl{} + %transparency et al. for PGF + \bool_if:nT{\int_compare_p:n{#1>\c_zero_int} && \g_pbs_pgfloaded_bool}{ + \ifpgf@sys@pdf@extgs@exists + \tl_set:Nn\l_tmpa_tl{/ExtGState~@pgfextgs} + \fi + \ifpgf@sys@pdf@patterns@exists + \tl_put_right:Nn\l_tmpa_tl{/Pattern~@pgfpatterns} + \fi + \ifpgf@sys@pdf@colorspaces@exists + \tl_put_right:Nn\l_tmpa_tl{/ColorSpace~@pgfcolorspaces} + \fi + } + %additional resources + \tl_put_right:Nx\l_tmpa_tl{~#3}\tl_trim_spaces:N\l_tmpa_tl + \str_if_eq:eeF{\l_tmpa_tl}{}{ + \special{pdf:put~@resources~<<\l_tmpa_tl>>} + } + %additional dict entries + \tl_set:Nx\l_tmpa_tl{#4} + \tl_trim_spaces:N\l_tmpa_tl + \special{pdf:exobj %close form xobject + \str_if_eq:eeF{\l_tmpa_tl}{}{<<\l_tmpa_tl>>} + } + } + \box_set_wd:Nn\l_tmpa_box{\c_zero_dim} + \box_set_ht:Nn\l_tmpa_box{\c_zero_dim} + \box_set_dp:Nn\l_tmpa_box{\c_zero_dim}\box_use_drop:N\l_tmpa_box + \group_end: + \tl_gset:Nx\g_pbs_pdflastxform_tl{@pbs@obj\int_use:N\g_pbs_obj_int} + \int_gincr:N\g_pbs_obj_int + } + + \cs_new_protected_nopar:Nn\pbs_pdfrefxform:n{\special{pdf:uxobj~#1}} + + \cs_new_protected_nopar:Nn\pbs_pdfximage:n{ + \filename@parse{#1} + \tl_set:Nx\l_pbs_ext_tl{\text_lowercase:n{\filename@ext}} + \bool_if:nTF{ + \str_if_eq_p:Vn\l_pbs_ext_tl{png} + ||\str_if_eq_p:Vn\l_pbs_ext_tl{jpg} + ||\str_if_eq_p:Vn\l_pbs_ext_tl{jpeg} + }{ + \special{pdf:image~@pbs@obj\int_use:N\g_pbs_obj_int\space hide~(#1)} + \tl_gset:Nx\g_pbs_pdflastximage_tl{@pbs@obj\int_use:N\g_pbs_obj_int} + \int_gincr:N\g_pbs_obj_int + }{ + \msg_error:nnnnn{pdfbase}{wrong~image~resource}{#1}{dvipdfmx/xetex}{ + png~and~jpeg + } + } + } + + \cs_new_protected_nopar:Nn\pbs_pdfbdc:nn{ + \pdf_bdcobject:nx{#1}{\tl_use:c{g_pbs_objname_#2_tl}} + } + }{ + \bool_if:NTF\g_pbs_dvisvgm_bool{ + \tl_gset:Nx\g_pbs_hash_tl{\token_to_str:N#} + %insert literal Postscript code + \cs_new_protected_nopar:Nn\pbs_literal:nn{ % #1: empty (`'), `direct' or + \str_if_eq:nnTF{#1}{}{ % #2: raw Postscript | `page' + % set current location's coordinates to (0,0) and set unit vectors to + % 1bp right and 1bp upwards; graphics state is saved before and + % re-instated after insertion + \special{"~#2} + }{ + % `direct' does the same as `page': no origin translation, + % no gs saving + \special{ps::~#2} + } + } + + \cs_new_protected_nopar:Nn\pbs_pdfannot:nnnn{ + \special{dvisvgm:raw~{?nl}<path~d=} + \group_begin: + \hbox_set:Nn\l_tmpa_box{ + \box_move_down:nn{#3}{\hbox_to_zero:n{% ll + \special{dvisvgm:raw~'M{?x}~{?y}} + }} + \hbox_to_zero:n{ + \skip_horizontal:n{#1} + \box_move_down:nn{#3}{\hbox_to_zero:n{% lr + \special{dvisvgm:raw~L{?x}~{?y}} + }} + \box_move_up:nn{#2}{\hbox_to_zero:n{% ur + \special{dvisvgm:raw~L{?x}~{?y}} + }}\hss + } + \box_move_up:nn{#2}{\hbox_to_zero:n{% ul + \special{dvisvgm:raw~L{?x}~{?y}Z'} + }} + } + \box_set_wd:Nn\l_tmpa_box{\c_zero_dim} + \box_set_ht:Nn\l_tmpa_box{\c_zero_dim} + \box_set_dp:Nn\l_tmpa_box{\c_zero_dim}\box_use_drop:N\l_tmpa_box + \group_end: + \special{dvisvgm:raw~{?nl}opacity='0'~#4~class='annot'/>} + } + + \cs_new_protected_nopar:Nn\pbs_pdfxform:nnnnn{ + \group_begin: + \hbox_set:Nn\l_tmpa_box{ + \special{dvisvgm:raw~{?nl}<defs>{?nl} + <g~ + transform='translate({?(-(x))},{?(-(y))})'~#4~ + id='pbs@obj\int_use:N\g_pbs_obj_int'~class='xform' + > + } + \special{dvisvgm:bbox~lock} + \box_use_drop:N#5 + \special{dvisvgm:bbox~unlock} + \special{dvisvgm:raw~{?nl}</g>{?nl}</defs>} + } + \box_set_wd:Nn\l_tmpa_box{\c_zero_dim} + \box_set_ht:Nn\l_tmpa_box{\c_zero_dim} + \box_set_dp:Nn\l_tmpa_box{\c_zero_dim}\box_use_drop:N\l_tmpa_box + \group_end: + \tl_gset:Nx\g_pbs_pdflastxform_tl{ + \g_pbs_hash_tl pbs@obj\int_use:N\g_pbs_obj_int} + \int_gincr:N\g_pbs_obj_int + } + + \cs_new_protected_nopar:Nn\pbs_pdfrefxform:n{ + \special{dvisvgm:raw~{?nl} + <use~x='{?x}'~y='{?y}'~transform='{?matrix}'~xlink:href='#1'/>} + } + }{ + %dvips + \sys_if_engine_pdftex:TF{ + \cs_new_nopar:Nn\pbs_filedump:nnn{\pdffiledump~offset~#1~length~#2~{#3}} + }{ + \sys_if_engine_luatex:T{ + \cs_new_nopar:Nn\pbs_filedump:nnn{\lua_now:e{ + tex.sprint(ltx.utils.filedump( + "\lua_escape:e{#3}", \int_eval:n{#1}, \int_eval:n{#2} + )) + }} + } + } + + \AtBeginDocument{ + \special{! + systemdict~/pdfmark~known + { + userdict~/?pdfmark~systemdict~/exec~get~put + }{ + userdict~/?pdfmark~systemdict~/pop~get~put~ + userdict~/pdfmark~systemdict~/cleartomark~get~put + } + ifelse + %back-transforms user coords to page coords (bigpoints with reference + %point [0,0] in the bottom-left page corner) + % user_x user_y pbs@user2page --> page_x page_y + /pbs@user2page~{ + 0~begin~% make everything local in here + /y~exch~def~/x~exch~def~ + matrix~currentmatrix~ + matrix~defaultmatrix~ + matrix~invertmatrix~ + matrix~concatmatrix~cvx~exec~ + /ty~exch~def~/tx~exch~def~ + /d~exch~def~/c~exch~def~ + /b~exch~def~/a~exch~def~ + x~a~mul~y~c~mul~add~tx~add~ + x~b~mul~y~d~mul~add~ty~add~ + end + }~def~ + /pbs@user2page~load~0~1~dict~put % insert dict at index 0; + } % dict is allocated only once + } + \cs_new:Nn\pbs_special:n{\special{ps:~SDict~begin~#1~end}} + + \bool_if:NT\g_pbs_pkgbigfiles_bool{ + \special{psfile=\c_sys_jobname_str.pbsdat} + %open auxiliary file \jobname.pbsdat for writing hex encoded streams of + %the files to be embedded. This file is inserted into PS during dvips. + \iow_new:N\g_pbs_mstreams_stream + \iow_open:Nn\g_pbs_mstreams_stream{\c_sys_jobname_str.pbsdat} + \iow_now:Nn\g_pbs_mstreams_stream{ + /M9D~1~dict~def~M9D~begin + /o{mark/_objdef}bind~def/O{/type/stream/OBJ~pdfmark}bind~def + /m~systemdict/mark~get~def + /P{/ASCIIHexDecode~filter/PUT~pdfmark}bind~def + /PP{/PUT~pdfmark}bind~def + /C{/CLOSE~pdfmark}bind~def~end + } + } + + %insert literal Postscript code + \cs_new_protected_nopar:Nn\pbs_literal:nn{ % #1: empty (`'), `direct' or + \str_if_eq:nnTF{#1}{}{ % #2: raw Postscript `page' + % set current location's coordinates to (0,0) and set unit vectors to + % 1bp right and 1bp upwards; graphics state is saved before and + % re-instated after insertion + \special{"~#2} + }{ + % `direct' does the same as `page': no origin translation, + % no gs saving + \special{ps::~#2} + } + } + + \msg_new:nnn{pdfbase}{generic-object-pdfmark}{ + Generic~object~creation~not~supported~by~PDFmarks + } + \cs_new_protected_nopar:Nn\pbs_pdfobj:nnn{ + \tl_clear:N\l_pbs_usenum_tl + \tl_if_blank:oTF{#1}{ + \tl_set:Nx\l_pbs_usenum_tl{{pbs@obj\int_use:N\g_pbs_obj_int}} + \int_gincr:N\g_pbs_obj_int + }{ + \tl_set:Nx\l_pbs_usenum_tl{#1} + } + \str_if_eq:nnT{#2}{generic}{ + \msg_error:nn{pdfbase}{generic-object-pdfmark} + } + \tl_if_blank:oF{#3}{ + \bool_if:nTF{ + \g_pbs_pkgbigfiles_bool && + \str_if_eq_p:nn{#2}{fstream} + }{ + \iow_now:Nx\g_pbs_mstreams_stream{ + M9D~begin~o\l_pbs_usenum_tl O + } + }{ + \pbs_special:n{mark~/_objdef~\l_pbs_usenum_tl\space/type + \str_case:nn{#2}{ + {generic}{} + {dict}{/dict} + {array}{/array} + {stream}{/stream} + {fstream}{/stream} + }~ + /OBJ~pdfmark + } + } + \str_case:nn{#2}{ + {generic}{} + {dict}{\pbs_special:n{mark~\l_pbs_usenum_tl~<<#3>>/PUT~pdfmark}} + {array}{ + \pbs_special:n{mark~\l_pbs_usenum_tl~0~[#3]/PUTINTERVAL~pdfmark} + } + {stream}{\special{ps::[nobreak]~SDict~begin~ + mark~\l_pbs_usenum_tl~(\use_ii:nn#3)/PUT~pdfmark~ + mark~\l_pbs_usenum_tl~<<\use_i:nn#3>>/PUT~pdfmark~end + }} + {fstream}{ + \tl_set:Nn\l_pbs_offset_tl{0} + \tl_set:Nx\l_pbs_fsize_tl{\file_size:n{\use_ii:nn#3}} + \message{<\use_ii:nn#3} + %embed file in chunks of 32768 Bytes into PS as chunks of + %65536 Bytes of HEX code + \bool_while_do:nn{ + \int_compare_p:n{\l_pbs_offset_tl<\l_pbs_fsize_tl} + }{ + \bool_if:NTF\g_pbs_pkgbigfiles_bool{ + \iow_now:Nx\g_pbs_mstreams_stream{ + m\l_pbs_usenum_tl + (\pbs_filedump:nnn{\l_pbs_offset_tl}{32767}{ + \use_ii:nn#3 + })P + } + }{ + \pbs_special:n{ + mark~ + \l_pbs_usenum_tl~ + (\pbs_filedump:nnn{\l_pbs_offset_tl}{32767}{ + \use_ii:nn#3 + })~ + /ASCIIHexDecode~filter~/PUT~ + pdfmark + } + } + \tl_set:Nx\l_pbs_offset_tl{\int_eval:n{\l_pbs_offset_tl+32767}} + \message{.} + } + \bool_if:NTF\g_pbs_pkgbigfiles_bool{ + \iow_now:Nx\g_pbs_mstreams_stream{ + m\l_pbs_usenum_tl<<\use_i:nn#3>>PP~ + m\l_pbs_usenum_tl~C~end + } + }{ + \pbs_special:n{ + mark~\l_pbs_usenum_tl~<<\use_i:nn#3>>~/PUT~pdfmark~ + mark~\l_pbs_usenum_tl~/CLOSE~pdfmark + } + } + \message{>} + } + } + } + \tl_gset_eq:NN\g_pbs_pdflastobj_tl\l_pbs_usenum_tl + } + + \cs_new_protected_nopar:Nn\pbs_pdfannot:nnnn{ + \group_begin: + % mark annotation rectangle + \hbox_set:Nn\l_tmpa_box{ + % lower left + \box_move_down:nn{#3}{\hbox_to_zero:n{\pbs_special:n{ + currentpoint~/pbs@lly~exch~def~/pbs@llx~exch~def + }}} + \skip_horizontal:n{#1} + % upper right + \box_move_up:nn{#2}{\hbox_to_zero:n{\pbs_special:n{ + currentpoint~/pbs@ury~exch~def~/pbs@urx~exch~def + }}} + } + \box_set_wd:Nn\l_tmpa_box{\c_zero_dim} + \box_set_ht:Nn\l_tmpa_box{\c_zero_dim} + \box_set_dp:Nn\l_tmpa_box{\c_zero_dim}\box_use_drop:N\l_tmpa_box + \group_end: + \str_if_eq:eeF{#4}{}{ + \pbs_special:n{ + mark~ + /_objdef~{pbs@obj\int_use:N\g_pbs_obj_int} + /Rect~[pbs@llx~pbs@lly~pbs@urx~pbs@ury] + \cs_if_exist_use:N\ocgbase_insert_oc:~#4 + /ANN~pdfmark + } + \tl_gset:Nx\g_pbs_pdflastann_tl{{pbs@obj\int_use:N\g_pbs_obj_int}} + \int_gincr:N\g_pbs_obj_int + } + } + + \cs_new_protected:Nn\pbs_pdflink:nn{ + \mode_leave_vertical: + \cs_if_exist:NTF\pdfmark{ + \pdfmark[#2]{pdfmark=/ANN,Raw={ + \cs_if_exist_use:N\ocgbase_insert_oc:~#1}} + }{ + \hbox_set:Nn\l_tmpb_box{#2} + \pbs_pdfannot:nnnn{ + \dim_use:N\box_wd:N\l_tmpb_box}{ + \dim_use:N\box_ht:N\l_tmpb_box}{ + \dim_use:N\box_dp:N\l_tmpb_box + }{#1} + \box_use_drop:N\l_tmpb_box + } + } + + \cs_new_protected:Nn\pbs_pdfdest:nnnn{ + \mode_leave_vertical: + \group_begin: + %write destination page number to aux + \iow_shipout_x:Nx\@mainaux{ + \token_to_str:N\pbs@newkey{pbs@#1@destpage}{ + \exp_not:N\int_use:N\exp_not:N\g_pbs_page_int} + } + \cs_if_exist:cF{pbs@#1@destpage}{ + \tl_set:cn{pbs@#1@destpage}{0} + \cs_if_exist:NF\g_pbs_rerunwarned_tl{ + \tl_new:N\g_pbs_rerunwarned_tl + \msg_warning:nn{pdfbase}{rerun} + } + } + \str_case:nnTF{#2}{ + {fit}{\tl_set:Nn\l_pbs_fittype_tl{/Fit}} + {fitb}{\tl_set:Nn\l_pbs_fittype_tl{/FitB}} + }{ + \pbs_special:n{ + mark~/Dest~(#1)~cvn~/Page~\tl_use:c{pbs@#1@destpage}~/View~[ + \l_pbs_fittype_tl + ]~/DEST~pdfmark + } + #4 + }{ + \hbox_set:Nn\l_tmpa_box{#4} + %mark anchor/view rect, insert text, insert destination + \str_case:nnTF{#2}{ + {fitbh}{\tl_set:Nn\l_pbs_fittype_tl{/FitBH}} + {fith}{\tl_set:Nn\l_pbs_fittype_tl{/FitH}} + }{ + \box_move_up:nn{\box_ht:N\l_tmpa_box}{\hbox:n{ + \pbs_special:n{ + currentpoint~pbs@user2page~/pbs@top~exch~def~pop~ + mark~/Dest~(#1)~cvn~/Page~\tl_use:c{pbs@#1@destpage}~/View~[ + \l_pbs_fittype_tl\space pbs@top + ]~/DEST~pdfmark + } + }} + #4 + }{ + \str_case:nnTF{#2}{ + {fitbv}{\tl_set:Nn\l_pbs_fittype_tl{/FitBV}} + {fitv}{\tl_set:Nn\l_pbs_fittype_tl{/FitV}} + }{ + \pbs_special:n{ + currentpoint~pbs@user2page~pop~/pbs@left~exch~def~ + mark~/Dest~(#1)~cvn~/Page~\tl_use:c{pbs@#1@destpage}~/View~[ + \l_pbs_fittype_tl\space pbs@left + ]~/DEST~pdfmark + } + #4 + }{ + \str_case:nn{#2}{ + {xyz}{ + \box_move_up:nn{\box_ht:N\l_tmpa_box}{\hbox:n{ + \pbs_special:n{ + currentpoint~pbs@user2page~ + /pbs@top~exch~def~/pbs@left~exch~def~ + mark~/Dest~(#1)~cvn~/Page~\tl_use:c{pbs@#1@destpage}~ + /View~[ + /XYZ~pbs@left~pbs@top~#3 + ]~/DEST~pdfmark + } + }} + #4 + } + {fitr}{ + \box_move_down:nn{\box_dp:N\l_tmpa_box}{\hbox:n{ + \pbs_special:n{ + currentpoint~pbs@user2page~ + /pbs@lly~exch~def~/pbs@llx~exch~def + } + }} + \box_use:N\l_tmpa_box + \box_move_up:nn{\box_ht:N\l_tmpa_box}{\hbox:n{ + \pbs_special:n{ + currentpoint~pbs@user2page~ + /pbs@ury~exch~def~/pbs@urx~exch~def~ + mark~/Dest~(#1)~cvn~/Page~\tl_use:c{pbs@#1@destpage}~ + /View~[ + /FitR~pbs@llx~pbs@lly~pbs@urx~pbs@ury + ]~/DEST~pdfmark + } + }} + } + } + } + } + \box_clear:N\l_tmpa_box + } + \group_end: + } + + \msg_set:nnn{pdfbase}{content~too~large}{ + Line~\msg_line_number: :\\ + Content~exceeds~paper~size~(width~and/or~height)\\ + of~the~document~and~may~be~clipped~in~the~final\\ + output. + } + + \cs_new_protected_nopar:Nn\pbs_pdfxform:nnnnn{ % #1, #3 not used (resources + \mode_leave_vertical: % are managed automatically) + %rescale box to fit within the papersize while distilling + \tl_gset:cx{scale_{pbs@obj\int_use:N\g_pbs_obj_int}}{\fp_eval:n{min(1.0, + \dim_ratio:nn{\paperwidth}{\box_wd:N#5}, + \dim_ratio:nn{\paperheight}{\box_ht:N#5+\box_dp:N#5} + )}} + \box_scale:Nnn#5{ + \tl_use:c{scale_{pbs@obj\int_use:N\g_pbs_obj_int}} + }{ + \tl_use:c{scale_{pbs@obj\int_use:N\g_pbs_obj_int}} + } + \group_begin: + %mark bbox of box#5 + \hbox_set:Nn\l_tmpa_box{ + % lower left + \box_move_down:nn{\box_dp:N#5}{\hbox_to_zero:n{\pbs_special:n{ + currentpoint~/pbs@lly~exch~def~/pbs@llx~exch~def + }}} + \skip_horizontal:n{\box_wd:N#5} + % upper right + \box_move_up:nn{\box_ht:N#5}{\hbox_to_zero:n{\pbs_special:n{ + currentpoint~/pbs@ury~exch~def~/pbs@urx~exch~def + }}} + } + \box_set_wd:Nn\l_tmpa_box{\c_zero_dim} + \box_set_ht:Nn\l_tmpa_box{\c_zero_dim} + \box_set_dp:Nn\l_tmpa_box{\c_zero_dim}\box_use_drop:N\l_tmpa_box + \group_end: + %additional dict entries + \tl_set:Nx\l_tmpa_tl{#4} \tl_trim_spaces:N\l_tmpa_tl + \pbs_special:n{ + gsave~ + currentpoint~/pbs@cury~exch~def~/pbs@curx~exch~def~ + %translate graphics to upper left page corner, so we have the whole + %clipbox (i. e. page area) available for distilling; outlying parts + %get clipped + { + clippath~pathbbox~newpath~pop~pop~translate~ + pbs@llx~neg~pbs@ury~neg~translate + }?pdfmark~ + %move origin (0,0) to the current position + gsave~pbs@curx~pbs@cury~translate~ + %distillation-bbox left and top coords + clippath~pathbbox~newpath~pop~pop~/pbs@bbox@top~exch~def~ + /pbs@bbox@left~exch~def~ + %distill graphics to XObject + mark~ + /_objdef~{pbs@obj\int_use:N\g_pbs_obj_int}~ + /BBox~[ + pbs@bbox@left~pbs@bbox@top~pbs@bbox@left~pbs@urx~ + pbs@llx~sub~add~pbs@bbox@top~pbs@lly~pbs@ury~sub~add + ]~ + %insert additional dict entries (the Distiller way) + \str_if_eq:eeF{\l_tmpa_tl}{}{ + product~(Distiller)~search~{pop~pop~pop~\l_tmpa_tl}{pop}ifelse~ + } + /BP~pdfmark~grestore~ + \int_compare:nT{#2>\c_zero_int}{ + %operations needed if used as annotation appearance + { + % landscape mode (as class option, powerdot, + % geometry or typearea /w pkg option) + isls{ + /pbs@dxdy~{ + pbs@urx~pbs@llx~sub~abs~pbs@ury~pbs@lly~sub~abs~div + }~bind~def~ + /pbs@dydx~{1~pbs@dxdy~div}~bind~def~ + /pbs@cx~{pbs@urx~pbs@llx~add~2~div}~bind~def~ + /pbs@cy~{pbs@ury~pbs@lly~add~2~div}~bind~def~ + % graphics needs to be rescaled for some reason ... + [pbs@dxdy~0~0~pbs@dydx~1~pbs@dxdy~sub~pbs@cx~mul~ + 1~pbs@dydx~sub~pbs@cy~mul]~concat~ + %... rotated by 270 degrees ... + [0~-1~1~0~pbs@cx~pbs@cy~sub~pbs@cx~pbs@cy~add]~concat~ + landplus90{ + %... and flipped around vertical axis (geometry, powerdot) + [-1~0~0~1~pbs@llx~pbs@urx~add~0]~concat + }{ + %... and flipped around horizontal axis (other) + [1~0~0~-1~0~pbs@lly~pbs@ury~add]~concat + }ifelse + }{ + % flip around horizontal axis in portrait mode + [1~0~0~-1~0~pbs@lly~pbs@ury~add]~concat + }ifelse + }?pdfmark + } + } + \box_set_wd:Nn#5{\c_zero_dim} + \box_set_ht:Nn#5{\c_zero_dim} + \box_set_dp:Nn#5{\c_zero_dim}\box_use_drop:N#5 + \pbs_special:n{~mark~/EP~pdfmark~grestore} + %insert additional dict entries (the Ghostscript way) + \str_if_eq:eeF{\l_tmpa_tl}{}{ + \pbs_special:n{ + product~(Ghostscript)~search~{ + pop~pop~pop~ + mark~{pbs@obj\int_use:N\g_pbs_obj_int}~<<\l_tmpa_tl>>~/PUT~pdfmark + }{pop}ifelse + } + } + \tl_gset:Nx\g_pbs_pdflastxform_tl{{pbs@obj\int_use:N\g_pbs_obj_int}} + \int_gincr:N\g_pbs_obj_int + \int_compare:nT{#2>\c_zero_int}{ + %Form XObjects for use as annotation appearances require that + %dvips generated PostScript to be further processed with ps2pdf + %must not have the exaggerated dpi resolution resulting from dvips + %option `-Ppdf'. + \tl_if_exist:NF\g_pbs_dpiwarned_tl{ + \tl_new:N\g_pbs_dpiwarned_tl + \AddToHook{shipout/lastpage}{ + \special{ps::[nobreak]~SDict~begin~\pbs_dpiwarning:\space end} + } + } + } + } + + \cs_new_protected_nopar:Nn\pbs_pdfrefxform:n{% #1: xform obj ID + %The /SP pdfmark for placement of Form XObjects works reliably only + %since gs-9.14. As gs-9.14 had some other TeX-related issues, we + %require 9.15. + \tl_if_exist:NF\g_pbs_gsoldwarned_tl{ + \tl_new:N\g_pbs_gsoldwarned_tl + \AddToHook{shipout/lastpage}{ + \special{ps::[nobreak]~SDict~begin~\pbs_gsoldwarning:\space end} + } + } + \pbs_special:n{ + gsave~currentpoint~translate~1~\tl_use:c{scale_#1}~div~dup~scale~ + mark~#1~/SP~pdfmark~grestore + } + } + + \cs_new_protected_nopar:Nn\pbs_pdfximage:n{ + \filename@parse{#1} + \tl_set:Nx\l_pbs_ext_tl{\text_lowercase:n{\filename@ext}} + \bool_if:nTF{ + \str_if_eq_p:Vn\l_pbs_ext_tl{ps} + ||\str_if_eq_p:Vn\l_pbs_ext_tl{eps} + }{ + \pbs_special:n{ + mark~/_objdef~{pbs@obj\int_use:N\g_pbs_obj_int}~/NI~pdfmark + } + \special{psfile=#1~hsize=0~vsize=0} + \pbs_special:n{ + { + 0~0~1~[1~0~0~1~0~0]~{}~image~%empty dummy, in case #1 is not + }?pdfmark %a valid raster image file + } + \tl_gset:Nx\g_pbs_pdflastximage_tl{{pbs@obj\int_use:N\g_pbs_obj_int}} + \int_gincr:N\g_pbs_obj_int + }{ + \msg_error:nnxxx{pdfbase}{wrong~image~resource}{#1}{dvips}{ + Postscript~(ps/eps)~with~bitmapped~content + } + } + } + + %marked content BDC operators + %require Ghostscript v. >= 9.15 + \cs_new_protected_nopar:Nn\pbs_pdfbdc:nn{ + \pbs_special:n{~mark~/#1~#2~/BDC~pdfmark} + \tl_if_exist:NF\g_pbs_gsoldwarned_tl{ + \tl_new:N\g_pbs_gsoldwarned_tl + \AddToHook{shipout/lastpage}{ + \special{ps::[nobreak]~SDict~begin~\pbs_gsoldwarning:\space end} + } + } + } + } + } +} +\cs_generate_variant:Nn\pdf_bdcobject:nn{nx} +\cs_new_eq:NN\pbs_pdfemc:\pdf_emc: + +\cs_new_nopar:Nn\pbs_pdflastobj:{\g_pbs_pdflastobj_tl} +\cs_new_nopar:Nn\pbs_pdflastann:{\g_pbs_pdflastann_tl} +\cs_new_nopar:Nn\pbs_pdflastxform:{\g_pbs_pdflastxform_tl} +\cs_new_nopar:Nn\pbs_pdflastximage:{\g_pbs_pdflastximage_tl} + +%modify output routine for output box insertions +\bool_new:N\l_pbs_is_vertical_bool +\cs_set_eq:NN\pbs_outputpage_orig:\@outputpage +\cs_set_nopar:Npn\@outputpage{ + \int_gincr:N\g_pbs_page_int + \box_if_vertical:cTF{@outputbox}{ + \bool_set_true:N\l_pbs_is_vertical_bool + }{ + \bool_set_false:N\l_pbs_is_vertical_bool + } + \hbox_set:Nn\@outputbox{ + %begin of page + \hbox_overlap_right:n{\seq_map_inline:Nn\g_pbs_bop_seq{##1}} + \box_use_drop:N\@outputbox + %end of page + \hbox_overlap_right:n{\seq_map_inline:Nn\g_pbs_eop_seq{##1}} + } + \bool_if:NT\l_pbs_is_vertical_bool{ + \vbox_set:Nn\@outputbox{\box_use_drop:N\@outputbox} + } + \pbs_outputpage_orig: +} + +\AtBeginDocument{ + \bool_new:N\g_pbs_ocgbase_loaded_bool + \@ifpackageloaded{ocgbase}{\bool_gset_true:N\g_pbs_ocgbase_loaded_bool}{} +} +\AddToHook{shipout/background}{ + % workaround for curious AR bug (pdf annot or link placed on + % OCG remains active although OCG is hidden) + % This can be fixed by placing a dumb (non-interactive) Widget dummy + % somewhere on the page. + \bool_if:NT\g_pbs_ocgbase_loaded_bool{ + \put(1,-1){ + \pbs_pdfannot:nnnn{3bp}{\c_zero_dim}{3bp}{ + /Ff~65537/FT/Btn/Subtype/Widget + /T~(pbs@ARFix@\int_use:N\g_pbs_page_int) + } + } + } +} + \group_begin: \char_set_catcode_active:N\+\let+\space \cs_new_nopar:Nx\pbs_gsoldwarning:{ diff --git a/macros/latex/contrib/ocgx2/ChangeLog b/macros/latex/contrib/ocgx2/ChangeLog index 244ce66c95..4b91f95c79 100644 --- a/macros/latex/contrib/ocgx2/ChangeLog +++ b/macros/latex/contrib/ocgx2/ChangeLog @@ -1,3 +1,8 @@ +2021-06-11 + * v0.52: ocgx2.sty + * v0.20: ocgbase.sty + * fix: incomplete \ifx when pdfmanagement-testphase was not enabled + 2021-06-03 * v0.51: ocgx2.sty * v0.19: ocgbase.sty diff --git a/macros/latex/contrib/ocgx2/ocgbase.sty b/macros/latex/contrib/ocgx2/ocgbase.sty index 6e514c2236..0d1cc4a73d 100644 --- a/macros/latex/contrib/ocgx2/ocgbase.sty +++ b/macros/latex/contrib/ocgx2/ocgbase.sty @@ -102,8 +102,8 @@ \RequirePackage{l3keys2e} -\def\g@ocgbase@date@tl{2021/06/03} -\def\g@ocgbase@version@tl{0.19} +\def\g@ocgbase@date@tl{2021/06/11} +\def\g@ocgbase@version@tl{0.20} \ProvidesExplPackage{ocgbase}{\g@ocgbase@date@tl}{\g@ocgbase@version@tl} {support package for ocgx2.sty} @@ -372,8 +372,10 @@ \cs_gset_eq:NN\ocgbase@oc@emc\ocgbase_oc_emc: \cs_gset_eq:NN\ocgbase@open@stack@pop\ocgbase_open_stack_pop:N \cs_gset_eq:NN\ocgbase@open@stack@push\ocgbase_open_stack_push:n -\endinput \fi +\begingroup +\if@ocgbase@testphase\else\aftergroup\endinput\fi +\endgroup %%%%%%%%%%%%%%%%%%%%%% /pdfmanagement-testphase %%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -472,8 +474,8 @@ \RequirePackage{l3keys2e} -\def\g@ocgbase@date@tl{2021/06/03} -\def\g@ocgbase@version@tl{0.19} +\def\g@ocgbase@date@tl{2021/06/11} +\def\g@ocgbase@version@tl{0.20} \ProvidesExplPackage{ocgbase}{\g@ocgbase@date@tl}{\g@ocgbase@version@tl} {support package for ocgx2.sty} diff --git a/macros/latex/contrib/ocgx2/ocgx2.sty b/macros/latex/contrib/ocgx2/ocgx2.sty index f2375cfbf9..101537322e 100644 --- a/macros/latex/contrib/ocgx2/ocgx2.sty +++ b/macros/latex/contrib/ocgx2/ocgx2.sty @@ -47,8 +47,8 @@ \RequirePackage{l3keys2e} -\def\g@ocgxii@date@tl{2021/06/03} -\def\g@ocgxii@version@tl{0.51} +\def\g@ocgxii@date@tl{2021/06/11} +\def\g@ocgxii@version@tl{0.52} \ProvidesExplPackage{ocgx2}{\g@ocgxii@date@tl}{\g@ocgxii@version@tl} {ports `ocgx' functionality to dvips+ps2pdf, xelatex and dvipdfmx} @@ -1293,7 +1293,7 @@ % TikZ related code follows (to be enabled with package option `tikz') -\bool_if:NF\l_ocgxii_tikz_bool{\endinput} +\bool_if:NT\l_ocgxii_tikz_bool{ \cs_set_eq:NN\ocgxii@trmspc\tl_trim_spaces:N \ExplSyntaxOff \RequirePackage{tikz} @@ -1499,8 +1499,11 @@ } } } -\endinput +} \fi +\begingroup +\if@ocgxii@testphase\else\aftergroup\endinput\fi +\endgroup %%%%%%%%%%%%%%%%%%%%%% /pdfmanagement-testphase %%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1544,8 +1547,8 @@ \RequirePackage{l3keys2e} -\def\g@ocgxii@date@tl{2021/06/03} -\def\g@ocgxii@version@tl{0.51} +\def\g@ocgxii@date@tl{2021/06/11} +\def\g@ocgxii@version@tl{0.52} \ProvidesExplPackage{ocgx2}{\g@ocgxii@date@tl}{\g@ocgxii@version@tl} {ports `ocgx' functionality to dvips+ps2pdf, xelatex and dvipdfmx} @@ -2780,7 +2783,9 @@ % TikZ related code follows (to be enabled with package option `tikz') -\bool_if:NF\l_ocgxii_tikz_bool{\endinput} +\group_begin: +\bool_if:NF\l_ocgxii_tikz_bool{\aftergroup\endinput} +\group_end: \cs_set_eq:NN\ocgxii@trmspc\tl_trim_spaces:N \ExplSyntaxOff \RequirePackage{tikz} diff --git a/macros/latex/contrib/orcidlink/orcidlink.dtx b/macros/latex/contrib/orcidlink/orcidlink.dtx index 7f34baa2fc..219fb44268 100644 --- a/macros/latex/contrib/orcidlink/orcidlink.dtx +++ b/macros/latex/contrib/orcidlink/orcidlink.dtx @@ -40,7 +40,7 @@ %</driver> % \fi % -% \CheckSum{32} +% \CheckSum{33} % % \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 @@ -65,6 +65,8 @@ % author, and combined with hyperref's option pdfusetitle} % \changes{v1.0.3}{2021/03/15}{Improve fragility by calculating % scaling ourselves, and using DeclareRobustCommand} +% \changes{v1.0.4}{2021/06/11}{Use XeTeXLinkBox to get hyperlink +% working correctly with XeTeX. Thanks to Tim Henke for the bug report.} % % \DoNotIndex{\newcommand,\newenvironment} % @@ -120,7 +122,7 @@ % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}[1994/06/01] \ProvidesPackage{orcidlink} - [2021/03/15 v1.0.3 Linked ORCiD logo macro package] + [2021/06/11 v1.0.4 Linked ORCiD logo macro package] %% All I did was package up Milo's code on TeX.SE, %% see https://tex.stackexchange.com/a/445583/34063 @@ -155,12 +157,12 @@ \DeclareRobustCommand\orcidlink[1]{% \texorpdfstring{% \setlength{\@curXheight}{\fontcharht\font`X}% -\href{https://orcid.org/#1}{\mbox{% +\href{https://orcid.org/#1}{\XeTeXLinkBox{\mbox{% \begin{tikzpicture}[yscale=-\@OrigHeightRecip*\@curXheight, xscale=\@OrigHeightRecip*\@curXheight,transform shape] \pic{orcidlogo}; \end{tikzpicture}% -}}}{}} +}}}}{}} \endinput % \end{macrocode} diff --git a/macros/latex/contrib/orcidlink/orcidlink.pdf b/macros/latex/contrib/orcidlink/orcidlink.pdf Binary files differindex b064dbf561..49a8daa112 100644 --- a/macros/latex/contrib/orcidlink/orcidlink.pdf +++ b/macros/latex/contrib/orcidlink/orcidlink.pdf diff --git a/macros/latex/contrib/semantex/semantex.pdf b/macros/latex/contrib/semantex/semantex.pdf Binary files differindex 7cf9755983..fb7f1fbfdf 100644 --- a/macros/latex/contrib/semantex/semantex.pdf +++ b/macros/latex/contrib/semantex/semantex.pdf diff --git a/macros/latex/contrib/semantex/semantex.sty b/macros/latex/contrib/semantex/semantex.sty index 3e7e1422b2..0031ccf854 100644 --- a/macros/latex/contrib/semantex/semantex.sty +++ b/macros/latex/contrib/semantex/semantex.sty @@ -1,5 +1,5 @@ \RequirePackage{xparse,l3keys2e,leftindex,semtex} -\ProvidesExplPackage{semantex}{2021/06/10}{0.500}{} +\ProvidesExplPackage{semantex}{2021/06/10}{0.501}{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % diff --git a/macros/latex/contrib/semantex/semantex.tex b/macros/latex/contrib/semantex/semantex.tex index 2bf168eb0f..2d257f95ae 100644 --- a/macros/latex/contrib/semantex/semantex.tex +++ b/macros/latex/contrib/semantex/semantex.tex @@ -42,7 +42,7 @@ \usepackage[nameinlink]{cleveref} -\title{Seman\!\TeX: semantic, keyval-based mathematics (v0.500)} +\title{Seman\!\TeX: semantic, keyval-based mathematics (v0.501)} \date{\today} \author{Sebastian Ørsted (\href{mailto:sorsted@gmail.com}{sorsted@gmail.com})} @@ -1731,10 +1731,10 @@ $\RHom{\vX,\vY}$ } Imagine we want to do cohomology with coefficients in some ring~\( \vR \). -It is common to write this as~\( \co{*}{\vX,coef=\vR} \) +It is common to write this as~\( \co[*]{\vX,coef=\vR} \) with a semicolon instead of a comma. This can be implemented, too, with the syntax \begin{LTXexample} -$\co{*}{\vX,coef=\vR}$ +$\co[*]{\vX,coef=\vR}$ \end{LTXexample} This shows that arguments of functions also support keyval syntax. To define argument keys, @@ -1748,11 +1748,13 @@ keys (at least those taking values) are actually turned off by default, so we shall have to turn them on first: \begin{lstlisting} \SetupClass\MyVar{ - arg keyval=true, % this turns keyval syntax in arguments on define arg keys[1]={ {coef}{ other sep={;}{#1} }, }, } +\SetupObject\co{ + arg keyval=true, +} \end{lstlisting} The key \lstinline!other sep! is a key that controls the separator between the current argument and the previous argument (it will only be printed if there was a previous argument). By default, this separator is a comma. So in the syntax~\lstinline!\co{*}{\vX,coef=\vR}!, diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl index 4c236adce9..7a8a4af0ae 100644 --- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl +++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl @@ -177,7 +177,6 @@ $mirrors = { 'https://ctan.mirror.globo.tech/' => 1, 'https://ctan.mirror.rafal.ca/' => 1, 'https://mirror.0xem.ma/tex-archive/' => 1, - 'https://mirror.its.dal.ca/ctan/' => 1, 'https://muug.ca/mirror/ctan/' => 1, }, 'Costa Rica' => { diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb index 4bb9345915..3216cc5c9c 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb @@ -26,11 +26,11 @@ depend container_split_src_files/1 depend frozen/0 depend minrelease/2016 depend release/2021 -depend revision/59546 +depend revision/59561 name 00texlive.image category TLCore -revision 59539 +revision 59553 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=13875 +runfiles size=13876 .mkisofsrc autorun.inf texmf-dist/README @@ -1717,6 +1717,7 @@ runfiles size=13875 tlpkg/tlpsrc/feyn.tlpsrc tlpkg/tlpsrc/feynmf.tlpsrc tlpkg/tlpsrc/feynmp-auto.tlpsrc + tlpkg/tlpsrc/ffcode.tlpsrc tlpkg/tlpsrc/ffslides.tlpsrc tlpkg/tlpsrc/fge.tlpsrc tlpkg/tlpsrc/fgruler.tlpsrc @@ -2733,6 +2734,7 @@ runfiles size=13875 tlpkg/tlpsrc/minim-math.tlpsrc tlpkg/tlpsrc/minim-mp.tlpsrc tlpkg/tlpsrc/minim-pdf.tlpsrc + tlpkg/tlpsrc/minim-xmp.tlpsrc tlpkg/tlpsrc/minim.tlpsrc tlpkg/tlpsrc/minimalist.tlpsrc tlpkg/tlpsrc/minipage-marginpar.tlpsrc @@ -4400,7 +4402,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd name 00texlive.installer category TLCore -revision 59520 +revision 59548 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 @@ -18560,7 +18562,7 @@ docfiles size=32 name animate category Package -revision 56583 +revision 59555 shortdesc Create PDF and SVG animations from graphics files and inline graphics relocated 1 longdesc The package provides an interface to create portable, @@ -18568,16 +18570,16 @@ longdesc JavaScript driven PDF and SVG animations from sets of graphics longdesc files or from inline graphics, such as LaTeX picture longdesc environment, PSTricks or pgf/TikZ generated pictures, or just longdesc from typeset text. -containersize 23388 -containerchecksum 29739e0c995ef6c00efdaa730a1e866b13efdb4005db8b8088ce4f1826899adabae41e2b7c0659df256817274ee11dfb7a033eb7b2f11302591a1fd541e1c1be -doccontainersize 3145132 -doccontainerchecksum 95fc8d11094fc1e339ebe7c7db4ea88237790358bbd9bbec8420e3f53bac986ad2b8e6dc5e962c2d0c3f0de348b7b1cbc39b0289cee26276009e914e3ce15943 -docfiles size=957 +containersize 23304 +containerchecksum c1a4efc9d263a61321f4fe6c8a4dcf1b49183827c16ba460a19a48356a0420e266509605ea1cc7499ae221e68de06e2b90a4b700766574ea3ae10b6a91c54564 +doccontainersize 3143984 +doccontainerchecksum 6577c5511bfc2a7b7d301c50085e457e0ae9c7f103b601053c031b88481af1ad3ede6d905e62b5487c5eeaefb0fc85c7da68bfa3002389b17766c65881131540 +docfiles size=951 RELOC/doc/latex/animate/ChangeLog RELOC/doc/latex/animate/README.txt RELOC/doc/latex/animate/animate.pdf details="Package documentation" -srccontainersize 30296 -srccontainerchecksum 68a330fe39398265a10c25d452a6a26da8f4bfb28fd0826293c710e90259a401d55dc2b5adb1f29301bd809ccc2176a2e8b4e82a324a098fb9a29ec7f17bd8dd +srccontainersize 30180 +srccontainerchecksum e29c45bc2527374430e927edfce3cd073ed20f805e914feeaabc415768713d23ac4529e82f9029dc6babf99ff1581f1b57ee74444703d7e155cdc9d7d5ea6086 srcfiles size=36 RELOC/source/latex/animate/animate.tex RELOC/source/latex/animate/files/bye_0.eps @@ -26840,7 +26842,7 @@ catalogue-version 1.5 name autoarea category Package -revision 15878 +revision 59552 catalogue pictex-autoarea shortdesc Automatic computation of bounding boxes with PiCTeX relocated 1 @@ -26849,18 +26851,16 @@ longdesc determining the "bounding box" of a picture. (PiCTeX so far longdesc accounted for put commands only). The "bounding box" is longdesc essential for proper placement of a picture between running longdesc text and margins and for keeping the running text away. -containersize 4168 -containerchecksum 81a6e2d2c241056cdb5ca7e54b33b523aa3bebe08d83e3418080659d316720a6bdcbb63d82c337175e6f0591a81ea322289333c5b8f125360c5ed4ae99843c4d -doccontainersize 36544 -doccontainerchecksum 8b3cb3def1945ae63b7d29614b868d07c64fba6ef50e266f92e3f1de1aa536084f5af5ff095bd467ef83d33701f780dcaed8a7d1c60dc68dcb5323444158b3b3 -docfiles size=22 +containersize 4148 +containerchecksum dadd69326335b6fe6e425a867e2e62a0b1df2f3179801bcc726c6ceebc15c24e3a7c9ecb3034209e25e503be47a9ad8639addfb628f720bd0c0d64c15177043d +doccontainersize 35392 +doccontainerchecksum 1b0f6ab0c7b1c69b7a802e9685db50e6b54361acf68ce2c2803419b165be1dd01f52a5b3fa9ccbe273e859509f7b7faa0c7c6b88bfec8f51f0bb66adf7b94e90 +docfiles size=20 RELOC/doc/latex/autoarea/ANNOUNCE.txt - RELOC/doc/latex/autoarea/README.aa + RELOC/doc/latex/autoarea/README details="Readme" RELOC/doc/latex/autoarea/autodemo/README.autodemo - RELOC/doc/latex/autoarea/autodemo/autodemo+.log RELOC/doc/latex/autoarea/autodemo/autodemo+.pdf RELOC/doc/latex/autoarea/autodemo/autodemo+.tex - RELOC/doc/latex/autoarea/autodemo/autodemo-.log RELOC/doc/latex/autoarea/autodemo/autodemo-.pdf RELOC/doc/latex/autoarea/autodemo/autodemo-.tex RELOC/doc/latex/autoarea/autodemo/autodemo.tex @@ -26868,7 +26868,7 @@ runfiles size=3 RELOC/tex/latex/autoarea/autoarea.sty catalogue-also pictex catalogue-contact-support http://www.webdesign-bu.de/uwe_lueck/contact.html -catalogue-ctan /graphics/pictex/addon/autoarea +catalogue-ctan /graphics/pictex-addons/autoarea catalogue-license lppl catalogue-topics graphics-in-tex catalogue-version 0.3a @@ -67285,7 +67285,7 @@ containerchecksum 0568a3251d71fb3106fbb3961427200419ae1df22d39b5e72c608e2d94fc35 name collection-latexextra category Collection -revision 59271 +revision 59549 shortdesc LaTeX additional packages relocated 1 longdesc A very large collection of add-on packages for LaTeX. @@ -67748,6 +67748,7 @@ depend fbox depend fcolumn depend fetchcls depend fewerfloatpages +depend ffcode depend ffslides depend fgruler depend fibeamer @@ -68662,8 +68663,8 @@ depend ziffer depend zref depend zwgetfdate depend zwpagelayout -containersize 6356 -containerchecksum 8076743d8508fa1c4df4846c5c88d49df9ffc026f912e29508dedccaf6cfb32e484741d4e35c931f9fcda979c50b2f06dd67fe557f600a0eed711c57affa5d3d +containersize 6364 +containerchecksum 7f38906af17c3675c52729cc9c13b0c574ab29a1d31ccccd25260526806acdc3b9be7adabf401ab88739e8797c64c955038e12aabfea2b44a69269a8212680ee name collection-latexrecommended category Collection @@ -68750,7 +68751,7 @@ containerchecksum f763ff9a6832abce7a148bc5e8b9e5860f883ce0a56ad2119d9e18e7fb4dad name collection-luatex category Collection -revision 59538 +revision 59553 shortdesc LuaTeX packages relocated 1 longdesc Packages for LuaTeX, a Unicode-aware extension of pdfTeX, using @@ -68807,6 +68808,7 @@ depend minim depend minim-math depend minim-mp depend minim-pdf +depend minim-xmp depend newpax depend nodetree depend odsfile @@ -68820,8 +68822,8 @@ depend spelling depend stricttex depend typewriter depend uninormalize -containersize 736 -containerchecksum f238704809e10eb64eb4d307e78ec7ba32b24917c81b49d9d46e4039a32fdc9edcc28a49e3cabd2f5cb0b32fafc65cf05c9e3c373e8f7ec0d2bca93c051b5394 +containersize 740 +containerchecksum 3b4c93da478be29b0bb95fa6b01d3115c89f4986abf2152927c0d3f96a0f4469ca236b510b32e455489753ecebb0e7cbc2d43bfc389c0a6f0916d8fc843c22f0 name collection-mathscience category Collection @@ -98920,20 +98922,20 @@ catalogue-topics notes editorial name easybook category Package -revision 59522 +revision 59556 shortdesc Typeset Chinese books or notes relocated 1 longdesc Easybook is a minimalist style template based on the ctexbook longdesc book document class. -containersize 14444 -containerchecksum 9ffb00bba2f82bac038518e05afe572cb2208c2978ece0cd78dd46ca95135e492f32bb56711bb31b61d2ecdd85c7a013b421663a83a2d0fc9850fe37b49fe261 -doccontainersize 323036 -doccontainerchecksum 582715b919ef0a1b0d0569fb986cb6fb0b4575649f452d7b66a6f6c714003c2398111ecbe347e758cc69b49eee3fca949175415d110d20c0e95076d43c1f707a +containersize 14468 +containerchecksum 9bc5436dc88b69a0b8f2f9ede43fc486b275476d0fb77d357017661abff2511c06368ba431721956ef67df8d016f37de0157d0af8fb26e3504423f63ac091e93 +doccontainersize 322924 +doccontainerchecksum 90512cfc495701ef26255b3152eec8cf5173f35f18b3a022b87be1d53e3923550e451bd354066a723c4861232fa7a27fddefc484a55c7970f7318cf33b9b0d30 docfiles size=81 RELOC/doc/latex/easybook/README.md details="Readme" RELOC/doc/latex/easybook/easybook.pdf details="Package documentation" language="zh" -srccontainersize 31576 -srccontainerchecksum 9c40bd5e62f56245d63dc7590d540f342ff1deab674091b553350f764d8e0c9d00e5f2ff82cc5c5b6027548f7679f95ee6532b5981b1366e273b4952e319459f +srccontainersize 31616 +srccontainerchecksum 31513f8b98fb46a12fd1a69eb6d3a340deafee952b5fb878e8df0d8b3dbe652c63f3cbaace60a6ad13bfa10a345d2ba66839408551725a0fb8cc92a49c24a16f srcfiles size=33 RELOC/source/latex/easybook/easybook.dtx RELOC/source/latex/easybook/easybook.ins @@ -98945,7 +98947,7 @@ catalogue-contact-repository https://gitee.com/texl3/easybook catalogue-ctan /macros/latex/contrib/easybook catalogue-license cc-by-4 catalogue-topics book-pub class chinese expl3 -catalogue-version 1.25w +catalogue-version 1.26 name easyfig category Package @@ -116255,6 +116257,37 @@ catalogue-license lppl1.3 catalogue-topics graphics-inline catalogue-version 1.1 +name ffcode +category Package +revision 59549 +shortdesc Fixed-font code blocks formatted nicely +relocated 1 +longdesc This LaTeX package helps you write source code in your academic +longdesc papers and make sure it looks neat. It uses minted and +longdesc tcolorbox, configuring them the right way, to make sure code +longdesc fragments and code blocks look nicer. +depend microtype +depend minted +depend tcolorbox +depend xkeyval +containersize 1720 +containerchecksum f58cd7979f02ac58f92cde961651f859f70a0f16df52fd15efd67bc1d7691262ec624acda134187fa265bd9426ce071aa51082bc1d2fe11964bdfbd5f0ac8f10 +doccontainersize 110340 +doccontainerchecksum 5e091190746e4ef259f6c5c311b451310ad06ce4db2b04cb74266690f9f031a91423342a8310f617415c65e8e5fbdd2a91e856cbbd91613ce51325763c405b87 +docfiles size=30 + RELOC/doc/latex/ffcode/DEPENDS.txt + RELOC/doc/latex/ffcode/README.md details="Readme" + RELOC/doc/latex/ffcode/ffcode.pdf details="Package documentation" + RELOC/doc/latex/ffcode/ffcode.tex +runfiles size=1 + RELOC/tex/latex/ffcode/ffcode.sty +catalogue-contact-bugs https://github.com/yegor256/ffcode/issues +catalogue-contact-repository https://github.com/yegor256/ffcode +catalogue-ctan /macros/latex/contrib/ffcode +catalogue-license mit +catalogue-topics listing verbatim line-nos +catalogue-version 0.1.0 + name ffslides category Package revision 38895 @@ -157037,7 +157070,7 @@ catalogue-version 3.1415 name keyfloat category Package -revision 59523 +revision 59557 shortdesc Provides a key/value interface for generating floats relocated 1 longdesc The keyfloat package provides a key/value user interface for @@ -157056,17 +157089,17 @@ longdesc columns, continuing to the next row if necessary. Nested longdesc sub-rows may be used to generate layouts such as two small longdesc figures placed vertically next to one larger figure. Subfloats longdesc are supported by two environments. -containersize 6820 -containerchecksum e59c0262094a4d3700363e64396d933dc9ef1c5e3096cd560aad570cc28e2789d4a6ca6ab11ebe2721c89534a921e9b68f6e9e64bcbd670b586ceeff0c863dc0 -doccontainersize 1008152 -doccontainerchecksum 1e611ea3f79acff1c0dd1548582bf43cddbc505c80441a6eee01a34de5b7827e0c72d12c902409860a99d3b4397a3c9eda6a93a68608a7b556f107baef643205 -docfiles size=253 +containersize 6768 +containerchecksum 6c1f6dd239f27cf95bd68b6e90c55feaccf307f48d1298bf2248be1497676ef2bb3080a9b5cad57c1de40f3a4819f0cab696d126e608594e3d1fbf5ae9547907 +doccontainersize 1005852 +doccontainerchecksum 7864a40c2343d29c3e0c11b9a1726f7ee3a957b8d88e61df560c3234d1ff71f586b62110631e948792e976bdece7e17138d127d7882dced5d04d940a3c77a8d8 +docfiles size=252 RELOC/doc/latex/keyfloat/README.txt details="Readme" RELOC/doc/latex/keyfloat/images/image.pdf RELOC/doc/latex/keyfloat/images/image2.pdf RELOC/doc/latex/keyfloat/keyfloat.pdf details="Package documentation" -srccontainersize 28188 -srccontainerchecksum dcb03b17ffb590dae62a195e5e70776d0548acade70eda9b2b916783b3a151d34c667e59a3f555e6f4821063fefb49603a5dbef51cfbb74c56b5688153c8a7c7 +srccontainersize 28116 +srccontainerchecksum 4042df5dbbd64a2cb12941a25d20d1eafad1e4f6fbae670f9054cc3129627df7342c587e81bdbc1290a91347b7803cee804f298bd6a61793173d8d8c39cd6b0e srcfiles size=37 RELOC/source/latex/keyfloat/keyfloat.dtx RELOC/source/latex/keyfloat/keyfloat.ins @@ -157076,7 +157109,7 @@ catalogue-contact-home http://bdtechconcepts.com catalogue-ctan /macros/latex/contrib/keyfloat catalogue-license lppl1.3 catalogue-topics float -catalogue-version 2.04 +catalogue-version 2.05 name keyindex category Package @@ -189299,7 +189332,7 @@ catalogue-topics index-multi name marathi category Package -revision 59172 +revision 59554 shortdesc Typeset Marathi language using XeLaTeX or LuaLaTeX relocated 1 longdesc luaa-laattek v jhii-laattek hyaaNcyaash mraatthiicaa sulbh @@ -189311,16 +189344,17 @@ longdesc typesetting Marathi language with LuaLaTeX and XeLaTeX. This longdesc package will provide localizations needed for the Marathi longdesc language. Currently the package localizes package blindtext and longdesc package expex. -containersize 5268 -containerchecksum 68c76708f20a7edcaac0d984829b71f2bdbedf1ade5a67af861355f014e22320694c3a930103d9cf78a93b2472917297667aa2d3dd30752837beeae852a35e4a -doccontainersize 150336 -doccontainerchecksum 8d2a73db9cb42795abdd15fcaa39209f07f9352753f6cd10fc9141f33142a7d6b5bb97b33e483d50706b9fcf2d64fae2b65d905e42c0024174939b7899db186d -docfiles size=45 +containersize 5292 +containerchecksum 5c59fbdc46728ae44de9a30d864c451bf5dcb665feec0b1851d1227812eaecb71b6aa2c7f88cff1a0fcb7eb1d89a135e3b9846075c977b8a7acb424df80b335e +doccontainersize 189772 +doccontainerchecksum 18ca218cd446648ae5b57dd67a9f39ad91813dee790a2fa2c0171de3b9be317ca79b5e482f473247157b96a8eee7988e06444f61657258125aff303d7dc042b1 +docfiles size=62 RELOC/doc/latex/marathi/COPYING + RELOC/doc/latex/marathi/LICENSE.md RELOC/doc/latex/marathi/README.txt details="Readme" RELOC/doc/latex/marathi/marathi.pdf details="Package documentation" language="mr" -srccontainersize 17760 -srccontainerchecksum 8c6b3fda67638b3daea049cb3bec71ac5bf60e021bb2282d80e6b6ca1e79fab9f4b4134fde2e3cf3210825bc74a961b5c93e9a044aa81f8444f9ce070836b735 +srccontainersize 17792 +srccontainerchecksum c73d23bbd309ba4cc3cf3d36b61d754d7f8a63da57a9da5518b288e15381ca9f06bdb1f052755d9712ac2d883f86f9fa314d263aa6d82b349ab2c181908b0e45 srcfiles size=19 RELOC/source/latex/marathi/marathi.dtx RELOC/source/latex/marathi/marathi.ins @@ -189337,7 +189371,7 @@ catalogue-contact-repository https://gitlab.com/niruvt/marathi/ catalogue-ctan /language/marathi catalogue-license gpl3+ other-free fdl catalogue-topics indic marathi -catalogue-version 1.6.3 +catalogue-version 1.6.4 name marcellus category Package @@ -192893,7 +192927,7 @@ catalogue-version 0.5 name media9 category Package -revision 58025 +revision 59558 shortdesc Multimedia inclusion package with Adobe Reader-9/X compatibility relocated 1 longdesc The package provides an interface to embed interactive Flash @@ -192906,16 +192940,16 @@ longdesc Player supports the efficient H.264 codec for video longdesc compression. The package is based on the RichMedia Annotation, longdesc an Adobe addition to the PDF specification. It replaces the now longdesc obsolete movie15 package. -containersize 1894400 -containerchecksum 8074b787eb47d82d9ea38ec1e3261deca554902fdc4acfa140de33db4ed2b6de1b0f9af761f27cfcb1ad90df6a02e6b0e697e2ebcebe718eed6d95ed1c296ba1 -doccontainersize 3717032 -doccontainerchecksum 2a28cb6f7b10eb19767ca75e51d16406319fc22967af38b170669f46627d0978065917a028d1f0ac480680175ba0464e27c367fe2181ad36c0cd057cb1beb286 -docfiles size=918 +containersize 1895388 +containerchecksum 79d5ff7c482259cd4a53bb74351b674637a13645efc990ff65cb8ed25bd7e0869b74034ce6bcc462f9dd34aa68d38848a153e2fb8c14b0b0a590710c120653fd +doccontainersize 3725000 +doccontainerchecksum 8fcd945ea395454984001f0091832e1f362c7e9ee847886f471fb2b3927c332905fd78d97c0b33d8e1482e71e614e3a60898fef26c2c0c171b754cc19fd81c6a +docfiles size=921 RELOC/doc/latex/media9/ChangeLog RELOC/doc/latex/media9/README.txt RELOC/doc/latex/media9/media9.pdf details="Package documentation" -srccontainersize 1776784 -srccontainerchecksum 954dac82dc95330b16055b5096b03c784363f34833b6a30d19b785b621289408b8dbd574e8d77e59ad57216af20b65071e55e1c228ee1dbdfcb1d5fb2b9d0410 +srccontainersize 1776596 +srccontainerchecksum ee916b3bf40dd22678007160a93c0a168017b85586afcd091986d64c3d5cfdbd34bfabbec81b26d67685eea6c82542b105441ef16ab133d4a30d90e8a003e42f srcfiles size=555 RELOC/source/latex/media9/files/3dsystem.fig RELOC/source/latex/media9/files/3dsystem.pdf @@ -192953,7 +192987,7 @@ srcfiles size=555 RELOC/source/latex/media9/players/StrobeMediaPlayback-license RELOC/source/latex/media9/players/VPlayer.mxml RELOC/source/latex/media9/players/VPlayer9.mxml -runfiles size=503 +runfiles size=534 RELOC/tex/latex/media9/javascript/3Dmenu.js RELOC/tex/latex/media9/javascript/3Dspintool.js RELOC/tex/latex/media9/javascript/animation.js @@ -192969,8 +193003,8 @@ runfiles size=503 catalogue-contact-repository https://gitlab.com/agrahn/media9 catalogue-ctan /macros/latex/contrib/media9 catalogue-license lppl -catalogue-topics multimedia -catalogue-version 1.15 +catalogue-topics multimedia expl3 +catalogue-version 1.16 name medstarbeamer category Package @@ -197897,6 +197931,33 @@ catalogue-license other-free catalogue-topics luatex tagged-pdf pdf-feat catalogue-version 2021/1.0 +name minim-xmp +category Package +revision 59553 +shortdesc Embed XMP metadata in PDF with LuaTeX +relocated 1 +longdesc This package enables the inclusion of XMP (eXtensible Metadata +longdesc Platform) data in the pdf output generated by (plain) LuaTeX. +longdesc The use of XMP is required by PDF standards such as PDF/A. +containersize 6316 +containerchecksum 24ddab94e49752a686822aa10035f93da45b6fbd1612411602238608769bf9675d19aff2de49e74ecfebc36474fc20a2a0120c43cb93a2f8da21b4e0d4a1e6ad +doccontainersize 51028 +doccontainerchecksum 2f33c23fd359ccfafe7e4679ad6a55bf97a6464f565ce6ef893fa5b0e1272ec2bc4b39baa4fb6cc20c7d19400ecdb1ee3d6ff0f5b6bd6472f32a9c91bfd78adc +docfiles size=23 + RELOC/doc/luatex/minim-xmp/EUPL-1.2-EN.txt + RELOC/doc/luatex/minim-xmp/README details="Readme" + RELOC/doc/luatex/minim-xmp/minim-xmp.doc + RELOC/doc/luatex/minim-xmp/minim-xmp.pdf details="Package documentation" +runfiles size=7 + RELOC/tex/luatex/minim-xmp/minim-xmp.lua + RELOC/tex/luatex/minim-xmp/minim-xmp.tex +catalogue-also minim hyperxmp +catalogue-contact-repository https://gitlab.com/renkema/minim +catalogue-ctan /macros/luatex/generic/minim-xmp +catalogue-license other-free +catalogue-topics luatex pdf-feat +catalogue-version 2021/1.0 + name minimalist category Package revision 59513 @@ -230139,7 +230200,7 @@ catalogue-version 0.5 name ocgx2 category Package -revision 59455 +revision 59559 shortdesc Drop-in replacement for 'ocgx' and 'ocg-p' relocated 1 longdesc This package serves as a drop-in replacement for the packages @@ -230150,10 +230211,10 @@ longdesc known engines and back-ends including: LaTeX - dvips - longdesc ps2pdf/Distiller (Xe)LaTeX(x) - dvipdfmx pdfLaTeX and LuaLaTeX longdesc . It also ensures compatibility with the media9 and animate longdesc packages. -containersize 14820 -containerchecksum 0e5407bae305b3f0f261403634ff3ca3a9ac527795349d494ed4cbbdda37fe33b85fa86731703c8e7271aa88b5d5451fbc2c7c0ba64c7d67c0417bcab1722d27 -doccontainersize 6088 -doccontainerchecksum 52ab77b6c28fe51c64541523bdb44ce48e827e59c0dc28bfc9ac137d5d6d692cd10aaefb80364d2d998f0271efcce460421a07f9abceb05781eb9ad3bf6877ed +containersize 14860 +containerchecksum 73b35fee403625f8d8f84ba6a2832d43dca7819bb7b45ede4add69a983ade6a8a9ef2d696f5fd56286b9520aadef996cb856bbe1cbbcc12ecc15dd85ffa6d0fc +doccontainersize 6116 +doccontainerchecksum e8a22ce76cf7b46418c63b8c4b56a74d0914cc42b55e25dca357a60618e2ccd541191a78f2258617d2ba68b78f36c91e78ae3f2f45cf31ec75c521b08299232d docfiles size=5 RELOC/doc/latex/ocgx2/ChangeLog RELOC/doc/latex/ocgx2/README.txt @@ -230166,7 +230227,7 @@ catalogue-contact-repository https://gitlab.com/agrahn/ocgx2 catalogue-ctan /macros/latex/contrib/ocgx2 catalogue-license lppl catalogue-topics pdf-feat adobe-distiller expl3 -catalogue-version 0.51 +catalogue-version 0.52 name ocherokee category Package @@ -233813,21 +233874,21 @@ catalogue-version 1.0 name orcidlink category Package -revision 58432 +revision 59560 shortdesc Insert hyperlinked ORCiD logo relocated 1 longdesc This package provides a command to insert the ORCiD logo, which longdesc is hyperlinked to the URL of the researcher whose iD was longdesc specified. -containersize 1652 -containerchecksum c4f2ce57c5c6a792f7d1cd0ef835e38cc582eb7df9655ae3d2555e3c9d389787ce0a058973dbc9d453f063247968957b2ba9ec1ed62499ab731b57fb96e0a342 -doccontainersize 165292 -doccontainerchecksum 8b18a107eb786e45fee9a1a16c5e88386e80db353e729e1288377aec3a87ed7433d189d0acbc1e8065a72b3fb7bf86cd8f635fe870735ddd3ebabed5aab8ba03 -docfiles size=42 +containersize 1664 +containerchecksum ba51e034e90800c402b559fd636acc38a96f0913c552e506e26457d5c690299c7860bf9a1fc911eb2d4e734c90f775e814b8bac52a492ad7743a47f3e89efc5f +doccontainersize 174664 +doccontainerchecksum c20f8e77d3c5866f414f0dcc47d84fa3328492a003a81be1ac3aa69f9ebc2bfff7198be5656192ba7bc4330ca7b773c6d319ec389bd0ad9821ebd6159b7d0b97 +docfiles size=45 RELOC/doc/latex/orcidlink/README.md details="Readme" RELOC/doc/latex/orcidlink/orcidlink.pdf details="Package documentation" -srccontainersize 3264 -srccontainerchecksum f1d11f008b85d65228d1284228e4839d340fe9e661c0cfecc2e9c76c2433b0e7ef6a27b0a630ee7458e4f98a32f12d0356d95bbb9756348e2070175b6d32aa5e +srccontainersize 3336 +srccontainerchecksum 485492dfc8256d97fd747196bb142eb178283eee98aed5edea689543075fe0992e9c25fa522c9fadd48c9b631ffb31c8600c82be598678b03e78c4e5643b8cb2 srcfiles size=3 RELOC/source/latex/orcidlink/orcidlink.dtx RELOC/source/latex/orcidlink/orcidlink.ins @@ -233839,7 +233900,7 @@ catalogue-contact-repository https://github.com/duetosymmetry/orcidlink-LaTeX-co catalogue-ctan /macros/latex/contrib/orcidlink catalogue-license lppl1.3c catalogue-topics hyper -catalogue-version 1.0.3 +catalogue-version 1.0.4 name ordinalpt category Package @@ -243572,26 +243633,20 @@ catalogue-version 0.4b name pictex category Package -revision 21943 +revision 59551 shortdesc Picture drawing macros for TeX and LaTeX relocated 1 -longdesc PicTeX is an early, and very comprehensive drawing package, -longdesc that mostly draws by placing myriads of small dots to make up -longdesc pictures. It has a tendency to run out of space, most -longdesc especially of allowable dimensions registers; packages m-pictex -longdesc and pictexwd deal with the register problem, in different ways. -longdesc Note that full documentation may be bought via the PC-TeX site, -longdesc though a command summary is available as free software. -longdesc Alternatively, a front-end package such as mathsPiC, which -longdesc covers all of PicTeX and has a complete and free manual, could -longdesc be used. -containersize 41440 -containerchecksum ed91f0518668007aab7b9222dd08c7f489caaf084ef915f88d435128012b2b4eb9ba610168154f07bd0d084a34909cefb1dc0c1cfb2186982b4f08f9f6412f7a -doccontainersize 1420 -doccontainerchecksum 61ed0f632d7f12fca4631b13714994b2cee8e05176262dd8cab672d4f8f7e65a36e0d927e3b803991818d9d2976d5794d48a46ebbbaf8bc8aad99aadec7d3fcb +longdesc PicTeX is an early and very comprehensive drawing package that +longdesc mostly draws by placing myriads of small dots to make up +longdesc pictures. It has a tendency to run out of space; packages +longdesc m-pictex and pictexwd deal with the problems in different ways. +containersize 41444 +containerchecksum cca6216568bead5120ef39eb2743897ad97d285b55e7d9b0723b3f6c7fa94ab17cb8cecb946845aefc57eae3c69305de6d839feb9df8212be83d2c7f242c2fd4 +doccontainersize 1608 +doccontainerchecksum e5bdad8dfdeaf3e3427d37b35641f37c8bb8005aea3773a914967a10b2583e1721fe0afeea0b8cb7f230edfa7b7d33c2d6fe023c229de4a27d6c979f6830088a docfiles size=4 - RELOC/doc/generic/pictex/00index - RELOC/doc/generic/pictex/README details="Readme" + RELOC/doc/generic/pictex/README.TEXLIVE + RELOC/doc/generic/pictex/README.txt details="Readme" RELOC/doc/generic/pictex/pictexzusatz.txt RELOC/doc/generic/pictex/readme.errorbars runfiles size=81 @@ -243612,7 +243667,7 @@ catalogue-also qfig epic pictex2 pictexsum catalogue-ctan /graphics/pictex catalogue-license lppl1 catalogue-topics graphics-in-tex -catalogue-version 1.1 +catalogue-version 1.1b name pictex2 category Package @@ -272075,7 +272130,7 @@ catalogue-version 0.302 name semantex category Package -revision 59543 +revision 59561 shortdesc Semantic, keyval-based mathematics relocated 1 longdesc The SemanTeX package for LaTeX delivers a more semantic, @@ -272092,10 +272147,10 @@ longdesc considered feature-complete and more or less stable, so using longdesc it at this point should be safe. Still, suggestions, ideas, and longdesc bug reports are more than welcome! depend semtex -containersize 26460 -containerchecksum e6b9e6ca89fc10d72e1ecd9a9e0b3e549c9c85fe1c33aa8c838f781e39c64a2815db6956db7226d700514de0d057670a395a6eb3edc191a85219bfade0607448 -doccontainersize 396124 -doccontainerchecksum 2cdab6be40b7f7694ddb149731d8eb3c3957bb3e736860a5b1a45c8c97c9d0b645f16b49d52753dfe3f0ee24d64984079b4435cf39575e939540fbd2db7f1a75 +containersize 26484 +containerchecksum cde629ba80f4c520c61528875d886314d9352121babd814901e1f1e7b0ab87663eb235abf2db38944b07192dc43998e6864129d9a805085d09e0be10351c17d0 +doccontainersize 395908 +doccontainerchecksum 4884d4d9c1727ba346ff4c05192618329ac0888dc7261dbea5c3249e48dc52ff453040ac1068a02f005f8851b2dbde413b7d57b2ef9418e87a2ffcd173dd2a93 docfiles size=136 RELOC/doc/latex/semantex/README.md details="Readme" RELOC/doc/latex/semantex/semantex.pdf details="Package documentation" @@ -272107,7 +272162,7 @@ runfiles size=79 catalogue-ctan /macros/latex/contrib/semantex catalogue-license lppl1.3c catalogue-topics maths expl3 -catalogue-version 0.500 +catalogue-version 0.501 name semantic category Package @@ -300157,7 +300212,7 @@ docfiles size=376 name texlive-scripts category TLCore -revision 59541 +revision 59548 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. @@ -300165,10 +300220,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 108008 -containerchecksum 1d94cfdfd4ac4e6ff03786b9788bdca4583a2ad157a8374d586002428ef7c849e733bbbcc3b937b61facac4f8ab85086c950db06bf22f1c75604af62b2628cf4 +containersize 107996 +containerchecksum 995a37893dee495eb8b589871164017c4028c07a0206bb9203ec61b88e879a5f1d966381794bdcf13062594e05aff60bbf3d4c6e1c6baac26e0556420c220261 doccontainersize 397696 -doccontainerchecksum e6cb77e7bfbc4385647efb5f0ce3951a371635ca2e452547b4b56b4ea4fc76d57955039884386a36417f23ff5b8934835e2a48831acc05f7405b1b8254663b3d +doccontainerchecksum b39c806a254fd5797dc367328cadaea103aa393e0c49dcfe93078cba89a112ae9df11983abc2f8d1a753d00b1b1d60c524624d1b99aec86cbd4595c3e6ada823 docfiles size=490 doc.html texmf-dist/doc/man/man1/fmtutil-sys.1 diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 index 8833cdb066..2218ddb0f2 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 @@ -1 +1 @@ -83c0a73207f9649aca36b5d8b4aebedd texlive.tlpdb +8aaf8df00cf221389f4e37afdb6d56f1 texlive.tlpdb diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 index e2ae2194fc..e13dc5fc63 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 @@ -1 +1 @@ -4cd17fd1d8f8f5b92f95772041ad297dc09abcbfe838024c811612e3f6363bf0f392c41d5c7ad0171f7763c19d76ec7d9388a36acae361d0d36f68c7831726ab texlive.tlpdb +7b7fa1d1ff4b6420a20d7a7f4c2d4d82082f89b65790ba847b1e34db765f10bc3a369a01bc27e0b3b2c1d3bf8a8397f0bd0d7af59758494632de7a5ae4a512e9 texlive.tlpdb diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc index 7e71b88f03..9e3bd25ec2 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----- -iQEcBAEBCgAGBQJgwqV6AAoJEEzhh34ZQ4xwSuEIAJcv/CWqVK5JCJmzHoiM36ql -Q2I2wth40axBwaXFyzvHZ+EbJvrTw8DSZ3TRMmhWitT1+vyMoTrz2dng/tmp3/W4 -O1Nt6zCPDvIp4B7kp8lUCwcZQ02oqskPg6gbm30ZPCGLJLFFsh50DWYvZUc9UnsM -NoOlA+Cl6BKRzlRH+f075DgAnqolvW3HUj8LLzYF7keNaE/1a2puNS1rtYR7LkAX -bbJcELDwbPL8+3UyoRlaTAgfUwdT4QfHixhyoy3pzCWLEe6PbhCXdsMfI+bwQm9E -30OnG0dbXj73IKGqWCHkzeUtw38uLT6/Q9PUISP6INpGGDOwgW0naC4uBbX+gIQ= -=VuGZ +iQEcBAEBCgAGBQJgw/c+AAoJEEzhh34ZQ4xwJF8H/ic/nRh65gyD5lrSRXVPdOjd +2qm7ouKHv5DxM0ixOXAWhZlniugHSunUYAz9jwO7KS7w7fbxdtJgy5RexRyAnpbc +WSJC7zGi34ELpmnstRAUUcfDtc0RrJJtzv6jNunl0YzBPueUNjTvxqmZ5OH16Gx4 +v9Ek9zT6GkPIAMHpzkJDHF3LX7bNM7adOJgnZt5lAeJRQw9yxdd0iCUwr5cb/Gu2 +8Vd6ytABtyDTvNTo8YrgUxs8qKEwngLeA3+kBCCo8Y9QdhTOFYaeqeH0OcbKSNU/ +Sfu4oaUn5lEpZiqfQODccCTh8CJRJLAXDYYNooqsk5XtQ+0TZLk8paObosQvWao= +=gBYz -----END PGP SIGNATURE----- diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz Binary files differindex ff1b06726d..1b882dc191 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz diff --git a/systems/win32/miktex/tm/packages/files.csv.lzma b/systems/win32/miktex/tm/packages/files.csv.lzma Binary files differindex d55c43210d..a1301f9a8a 100644 --- a/systems/win32/miktex/tm/packages/files.csv.lzma +++ b/systems/win32/miktex/tm/packages/files.csv.lzma diff --git a/systems/win32/miktex/tm/packages/next/files.csv.lzma b/systems/win32/miktex/tm/packages/next/files.csv.lzma Binary files differindex 5c473251f1..edacaee650 100644 --- a/systems/win32/miktex/tm/packages/next/files.csv.lzma +++ b/systems/win32/miktex/tm/packages/next/files.csv.lzma diff --git a/systems/win32/miktex/tm/packages/next/pr.ini b/systems/win32/miktex/tm/packages/next/pr.ini index 0db3634f35..54214f357c 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=1623356114
+date=1623442560
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=314a172ee39f7f5492b9a181b5fd6af1
-numpkg=4294
+lstdigest=cb5425c641f070c7456d580fe5f6b616
+numpkg=4308
relstate=next
-version=7831
+version=7832
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: WGhZSqj25+g/DIK1LT4+dgdDD7UE9m+8pW4qxEHefILAjLP6tRZZbD4Sjf9HvA5Q2Hs652DqLfxDNjOcGJHglQzRU/Sk6fbbfw9e95fCuJ93zgZUo57rvLE1AXKp6xaSM1cELBGUvMflzqyj2o07+UeYUUJufIr84nAX0mLxaejO9z40kGnUI0R9p+MDZTzFKQfcRvpZKv2FHXaP7jgcY0A7BLdnhgCio0JIYq+HnkF5eTjdq1T8hW3sYgaKtUFmMfQUo4MV6Aw2+UUcBysmpvQz/3fkHMR2dDByHBSyr9UMwZLwrevjkqlz4v3b6ARteVCGndSaHFJDYHVm3i3oYQ==
+;;;; signature/miktex: AYJZZk+LMod5v+sfN0z4ArqUXREdw9zmdkYIe1VnLUEwgupNKg3YEfDAaah+08yUe2Cf99VLjo9RiAvD2aix0GJtXyv6vb+yfDFj6VihgFPZl1Vx6/32WZPVJTbEUhM4Iw5XEmjQetwwAEfmkOUWjt7H3MAG6fGy1SQmlyzYpNq7djIjYnQc1tOHgqCmukvtZi+CrckmrUDOfesb5k9uIo6tSew4rPq7arq+kU6hFx+RUkq7vVU6L2gcdfL8ljpyjOE7k0ONb8POIMlyeqTt5G1J+OYOuTEMu497lTQHMili2lPvb6Urmr1MDEOB+LMgHbPSlNFdkF+3YOQvZhzrpw==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/systems/win32/miktex/tm/packages/pr.ini b/systems/win32/miktex/tm/packages/pr.ini index 6ca7483861..9d9b1bac28 100644 --- a/systems/win32/miktex/tm/packages/pr.ini +++ b/systems/win32/miktex/tm/packages/pr.ini @@ -1,13 +1,13 @@ [repository]
-date=1623355872
-lastupd=biblatex-mla biblatex-mla__doc biblatex-mla__source easybook easybook__doc easybook__source hvfloat hvfloat__doc jfmutil jfmutil__doc minim minim-hatching minim-hatching__doc minim-hatching__source minim-math minim-math__doc minim-math__source minim-mp minim-mp__doc minim-mp__source
-lstdigest=a892d1086cb3436314bcdcad7b1d2b75
-numpkg=4294
+date=1623442322
+lastupd=cooking-units cooking-units__doc cooking-units__source easybook easybook__doc easybook__source ffcode ffcode__doc ffcode__source luatexko luatexko__doc luatexko__source minim-xmp minim-xmp__doc minim-xmp__source semantex semantex__doc semantex__source tiscreen tiscreen__doc
+lstdigest=7d41a4f608e63f26e7cf6c4aab5aded9
+numpkg=4308
relstate=stable
-version=7831
+version=7832
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: MzwMA6dYj/buoQEK6eQONLxGQR+SZgAY2M/aJotDflYgodiIE/r2FAHuPEnQnXAiHIF8ozv0svauOtmYaB47IeIv8ca8DXkNMzcwgkODcSrmjhkyZMcL1gJTtadm2iyr8AcZqQ5TcGaYF5pgqCat7XFQhO+IRc1+slR6Pk6cVMT3w/R7kU6zeLNpc/ybpuO5JtS7HG2QuQeg71AsqRcj0Wi9/nv2OX//dvMM2kFcyS28PQqkGPDq7MhnEi9t+4bqMm9JI6rOZzbrxRrZoE+yZh8Syb+njF7wtuVBL39S1GGO08XIYHeXCn4pudChlH31kNo02cu7pLAZaG8LlmJixg==
+;;;; signature/miktex: kzHJVE8TM2NPkTajIKZJcGH9vZdc157r2VuPGtLaB3WNs9YBv73WqifBGawPaRazAYmxOh0P+0Bn2avQPZILNhikgcOWeKmsLsuvVIm5MpWOx4U0BGc628p9WkeJK5skyRaYoJNEqVJaHsb/BFMfTJyPjdi2aXVgAlnChvZ+bto2JJAZ7yn8wMr2AYjw9ZB0izveyUBkXJCb61JCtBhzyFXlSYnigrv4pMTyd4tD6WGV+iCMFPFGqV8rlDKmEqkQX07IaVgUBbQvpFXV6PWp9YcyFc0cOk3h10nlxSLHFNmoKoNcC7iF4JpBGKTqO99FOZ7Aa6Hule9dwA7HM5o8yg==
;;;;-----END MIKTEX SIGNATURE-----
@@ -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-06-11-02-02 +2021-06-12-02-02 |