summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FILES.byname777
-rw-r--r--FILES.byname.gzbin2389729 -> 2389854 bytes
-rw-r--r--FILES.last07days699
-rw-r--r--graphics/mcf2graph/CHANGELOG6
-rw-r--r--graphics/mcf2graph/README2
-rw-r--r--graphics/mcf2graph/mcf2graph.mf61
-rw-r--r--graphics/mcf2graph/mcf_data_base.mcf11
-rw-r--r--graphics/mcf2graph/mcf_exa_soc.mf8
-rw-r--r--graphics/mcf2graph/mcf_example.pdfbin314077 -> 312868 bytes
-rw-r--r--graphics/mcf2graph/mcf_example.tex2
-rw-r--r--graphics/mcf2graph/mcf_man_soc.mf6
-rw-r--r--graphics/mcf2graph/mcf_manual.pdfbin344886 -> 382758 bytes
-rw-r--r--graphics/mcf2graph/mcf_manual.tex8
-rw-r--r--graphics/mcf2graph/mcf_mplib_exa.pdfbin184158 -> 184025 bytes
-rw-r--r--graphics/mcf2graph/mcf_mplib_exa.tex4
-rw-r--r--macros/latex/contrib/esami/README18
-rw-r--r--macros/latex/contrib/esami/VERSION2
-rw-r--r--macros/latex/contrib/esami/doc/esami-doc-en.pdfbin459201 -> 481289 bytes
-rw-r--r--macros/latex/contrib/esami/doc/esami-doc-en.tex9
-rw-r--r--macros/latex/contrib/esami/doc/esami-doc-it.pdfbin466907 -> 489492 bytes
-rw-r--r--macros/latex/contrib/esami/doc/esami-doc-it.tex9
-rw-r--r--macros/latex/contrib/esami/doc/esami.bib5
-rw-r--r--macros/latex/contrib/esami/doc/examples/test14.tex465
-rw-r--r--macros/latex/contrib/esami/doc/examples/testA-sol.pdfbin232036 -> 211514 bytes
-rw-r--r--macros/latex/contrib/esami/doc/examples/testA.pdfbin177496 -> 178754 bytes
-rw-r--r--macros/latex/contrib/esami/es-italian.lng5
-rw-r--r--macros/latex/contrib/esami/esami-xyz.cfg11
-rw-r--r--macros/latex/contrib/esami/esami.sty707
-rw-r--r--macros/latex/contrib/phfcc/Makefile10
-rw-r--r--macros/latex/contrib/phfcc/README.md19
-rw-r--r--macros/latex/contrib/phfcc/phfcc.dtx1898
-rw-r--r--macros/latex/contrib/phfcc/phfcc.ins55
-rw-r--r--macros/latex/contrib/phfcc/phfcc.pdfbin0 -> 411573 bytes
-rw-r--r--macros/latex/contrib/phfcc/pkg.mk188
-rw-r--r--macros/latex/contrib/phfextendedabstract/Makefile11
-rw-r--r--macros/latex/contrib/phfextendedabstract/README.md19
-rw-r--r--macros/latex/contrib/phfextendedabstract/phfextendedabstract.dtx1138
-rw-r--r--macros/latex/contrib/phfextendedabstract/phfextendedabstract.ins55
-rw-r--r--macros/latex/contrib/phfextendedabstract/phfextendedabstract.pdfbin0 -> 283010 bytes
-rw-r--r--macros/latex/contrib/phfextendedabstract/pkg.mk188
-rw-r--r--macros/latex/contrib/phfnote/Makefile2
-rw-r--r--macros/latex/contrib/phfnote/README.md13
-rw-r--r--macros/latex/contrib/phfnote/naturemagdoi.bst4
-rw-r--r--macros/latex/contrib/phfnote/phfnote.dtx2434
-rw-r--r--macros/latex/contrib/phfnote/phfnote.ins6
-rw-r--r--macros/latex/contrib/phfnote/phfnote.pdfbin646717 -> 766991 bytes
-rw-r--r--macros/latex/contrib/phfnote/pkg.mk49
-rw-r--r--macros/latex/contrib/phfqit/README.md5
-rw-r--r--macros/latex/contrib/phfqit/phfqit.dtx594
-rw-r--r--macros/latex/contrib/phfqit/phfqit.pdfbin397925 -> 461269 bytes
-rw-r--r--macros/latex/contrib/phfqit/pkg.mk44
-rw-r--r--macros/latex/contrib/phfthm/README.md13
-rw-r--r--macros/latex/contrib/phfthm/phfthm.dtx329
-rw-r--r--macros/latex/contrib/phfthm/phfthm.ins4
-rw-r--r--macros/latex/contrib/phfthm/phfthm.pdfbin381267 -> 400744 bytes
-rw-r--r--macros/latex/contrib/phfthm/pkg.mk49
-rw-r--r--macros/latex/contrib/sttools/README.md100
-rw-r--r--macros/latex/contrib/sttools/cuted.dtx1213
-rw-r--r--macros/latex/contrib/sttools/cuted.pdfbin129830 -> 112309 bytes
-rw-r--r--macros/latex/contrib/sttools/floatpag.dtx141
-rw-r--r--macros/latex/contrib/sttools/floatpag.pdfbin130401 -> 134309 bytes
-rw-r--r--macros/latex/contrib/sttools/flushend.dtx1480
-rw-r--r--macros/latex/contrib/sttools/flushend.pdfbin83883 -> 125615 bytes
-rw-r--r--macros/latex/contrib/sttools/midfloat.dtx32
-rw-r--r--macros/latex/contrib/sttools/midfloat.pdfbin122155 -> 122093 bytes
-rw-r--r--macros/latex/contrib/sttools/stabular.dtx41
-rw-r--r--macros/latex/contrib/sttools/stabular.pdfbin107168 -> 106924 bytes
-rw-r--r--macros/latex/contrib/sttools/stfloats.dtx29
-rw-r--r--macros/latex/contrib/sttools/stfloats.pdfbin125623 -> 123989 bytes
-rw-r--r--macros/latex/contrib/sttools/sttools.dtx38
-rw-r--r--macros/latex/contrib/sttools/sttools.ins2
-rw-r--r--macros/latex/contrib/sttools/sttools.pdfbin107283 -> 115511 bytes
-rw-r--r--macros/latex/contrib/sttools/texsort.dtx37
-rw-r--r--macros/latex/contrib/sttools/texsort.pdfbin122530 -> 122482 bytes
-rw-r--r--macros/xetex/latex/hanzibox/README.md26
-rw-r--r--macros/xetex/latex/hanzibox/hanzibox.dtx1300
-rw-r--r--macros/xetex/latex/hanzibox/hanzibox.pdfbin505041 -> 578525 bytes
-rw-r--r--support/TeX4ht/source/tex4ht-4ht.tex10
-rw-r--r--support/make4ht/changelog.tex19
-rw-r--r--support/make4ht/domfilters/make4ht-mathmlfixes.lua25
-rw-r--r--support/make4ht/formats/make4ht-odt.lua10
-rwxr-xr-xsupport/make4ht/make4ht2
-rw-r--r--support/make4ht/make4ht-doc.pdfbin152568 -> 152668 bytes
-rw-r--r--systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl4
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb282
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.md52
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha5122
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc14
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.xzbin2312372 -> 2315584 bytes
-rw-r--r--systems/win32/miktex/tm/packages/next/pr.ini8
-rw-r--r--systems/win32/miktex/tm/packages/pr.ini8
-rw-r--r--timestamp2
92 files changed, 10376 insertions, 4393 deletions
diff --git a/FILES.byname b/FILES.byname
index 684dc1b522..e8a8d36482 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -5105,7 +5105,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/10/10 | 68043 | FILES.last07days
+2021/10/11 | 87059 | FILES.last07days
2021/07/24 | 1139410 | fonts/aboensis/Aboensis.glyphs
2021/07/24 | 18907382 | fonts/aboensis/aboensis.pdf
2021/07/24 | 137860 | fonts/aboensis/Aboensis-Regular.otf
@@ -149577,20 +149577,20 @@
2011/05/31 | 231925 | graphics/mathspic/perl/sourcecode113.html
2011/05/31 | 183530 | graphics/mathspic/perl/sourcecode113.nw
2011/05/31 | 2864043 | graphics/mathspic/perl/sourcecode113.pdf
-2021/09/20 | 15807 | graphics/mcf2graph/CHANGELOG
-2021/09/20 | 116725 | graphics/mcf2graph/mcf2graph.mf
-2021/09/16 | 97963 | graphics/mcf2graph/mcf_data_base.mcf
-2021/09/20 | 314077 | graphics/mcf2graph/mcf_example.pdf
-2021/09/20 | 2325 | graphics/mcf2graph/mcf_example.tex
-2021/09/20 | 2117 | graphics/mcf2graph/mcf_exa_soc.mf
-2021/09/20 | 44742 | graphics/mcf2graph/mcf_man_soc.mf
-2021/09/20 | 344886 | graphics/mcf2graph/mcf_manual.pdf
-2021/09/20 | 63153 | graphics/mcf2graph/mcf_manual.tex
-2021/09/20 | 184158 | graphics/mcf2graph/mcf_mplib_exa.pdf
-2021/09/20 | 16122 | graphics/mcf2graph/mcf_mplib_exa.tex
+2021/10/10 | 15891 | graphics/mcf2graph/CHANGELOG
+2021/10/10 | 116868 | graphics/mcf2graph/mcf2graph.mf
+2021/10/10 | 97979 | graphics/mcf2graph/mcf_data_base.mcf
+2021/10/10 | 312868 | graphics/mcf2graph/mcf_example.pdf
+2021/10/02 | 2324 | graphics/mcf2graph/mcf_example.tex
+2021/10/10 | 2117 | graphics/mcf2graph/mcf_exa_soc.mf
+2021/10/10 | 44742 | graphics/mcf2graph/mcf_man_soc.mf
+2021/10/10 | 382758 | graphics/mcf2graph/mcf_manual.pdf
+2021/10/10 | 63149 | graphics/mcf2graph/mcf_manual.tex
+2021/10/10 | 184025 | graphics/mcf2graph/mcf_mplib_exa.pdf
+2021/10/10 | 16122 | graphics/mcf2graph/mcf_mplib_exa.tex
2021/09/20 | 3963 | graphics/mcf2graph/mcf_setup.sty
-2021/09/20 | 4579 | graphics/mcf2graph/README
-2021/09/20 | 914246 | graphics/mcf2graph.zip
+2021/10/10 | 4579 | graphics/mcf2graph/README
+2021/10/11 | 949329 | graphics/mcf2graph.zip
2004/07/13 | 8567 | graphics/metaplot/axes.mp
2004/06/28 | 1122 | graphics/metaplot/examples/cap1.cc
2004/06/28 | 2178 | graphics/metaplot/examples/cap1.mp
@@ -208575,50 +208575,50 @@
2020/06/04 | 678206 | macros/latex/contrib/erw-l3/erw-l3.pdf
2020/06/04 | 346 | macros/latex/contrib/erw-l3/README.md
2020/06/04 | 682019 | macros/latex/contrib/erw-l3.zip
-2016/08/31 | 1570 | macros/latex/contrib/esami/doc/esami.bib
-2018/05/06 | 459201 | macros/latex/contrib/esami/doc/esami-doc-en.pdf
-2018/05/06 | 52105 | macros/latex/contrib/esami/doc/esami-doc-en.tex
-2018/05/06 | 466907 | macros/latex/contrib/esami/doc/esami-doc-it.pdf
-2018/05/06 | 56287 | macros/latex/contrib/esami/doc/esami-doc-it.tex
-2015/07/01 | 2347 | macros/latex/contrib/esami/doc/examples/master-sol.tex
+2021/10/11 | 1571 | macros/latex/contrib/esami/doc/esami.bib
+2021/10/11 | 481289 | macros/latex/contrib/esami/doc/esami-doc-en.pdf
+2021/10/11 | 52623 | macros/latex/contrib/esami/doc/esami-doc-en.tex
+2021/10/11 | 489492 | macros/latex/contrib/esami/doc/esami-doc-it.pdf
+2021/10/11 | 56851 | macros/latex/contrib/esami/doc/esami-doc-it.tex
+2021/10/11 | 2347 | macros/latex/contrib/esami/doc/examples/master-sol.tex
2015/07/01 | 2349 | macros/latex/contrib/esami/doc/examples/master.tex
-2014/06/02 | 644 | macros/latex/contrib/esami/doc/examples/problem1.tex
-2013/04/13 | 696 | macros/latex/contrib/esami/doc/examples/problem2-tabella.tex
-2013/10/08 | 1167 | macros/latex/contrib/esami/doc/examples/problem2.tex
-2013/04/13 | 503 | macros/latex/contrib/esami/doc/examples/problem3-matching.tex
-2013/04/13 | 753 | macros/latex/contrib/esami/doc/examples/problem4-fillin.tex
-2013/04/13 | 625 | macros/latex/contrib/esami/doc/examples/test11.tex
-2013/04/13 | 1023 | macros/latex/contrib/esami/doc/examples/test12.tex
-2013/04/13 | 1365 | macros/latex/contrib/esami/doc/examples/test13.tex
-2017/03/06 | 6433 | macros/latex/contrib/esami/doc/examples/test14.tex
-2016/08/01 | 471 | macros/latex/contrib/esami/doc/examples/test1.tex
-2017/02/16 | 1103 | macros/latex/contrib/esami/doc/examples/test2.tex
-2015/02/26 | 1533 | macros/latex/contrib/esami/doc/examples/test3.tex
-2013/04/13 | 1701 | macros/latex/contrib/esami/doc/examples/test4.tex
-2016/08/14 | 462 | macros/latex/contrib/esami/doc/examples/test5-fillin.tex
-2014/02/24 | 1361 | macros/latex/contrib/esami/doc/examples/test9.tex
+2021/10/11 | 644 | macros/latex/contrib/esami/doc/examples/problem1.tex
+2021/10/11 | 696 | macros/latex/contrib/esami/doc/examples/problem2-tabella.tex
+2021/10/11 | 1167 | macros/latex/contrib/esami/doc/examples/problem2.tex
+2021/10/11 | 503 | macros/latex/contrib/esami/doc/examples/problem3-matching.tex
+2021/10/11 | 753 | macros/latex/contrib/esami/doc/examples/problem4-fillin.tex
+2021/10/11 | 625 | macros/latex/contrib/esami/doc/examples/test11.tex
+2021/10/11 | 1023 | macros/latex/contrib/esami/doc/examples/test12.tex
+2021/10/11 | 1365 | macros/latex/contrib/esami/doc/examples/test13.tex
+2021/10/11 | 6349 | macros/latex/contrib/esami/doc/examples/test14.tex
+2021/10/11 | 471 | macros/latex/contrib/esami/doc/examples/test1.tex
+2021/10/11 | 1103 | macros/latex/contrib/esami/doc/examples/test2.tex
+2021/10/11 | 1533 | macros/latex/contrib/esami/doc/examples/test3.tex
+2021/10/11 | 1701 | macros/latex/contrib/esami/doc/examples/test4.tex
+2021/10/11 | 462 | macros/latex/contrib/esami/doc/examples/test5-fillin.tex
+2021/10/11 | 1361 | macros/latex/contrib/esami/doc/examples/test9.tex
2015/02/22 | 55273 | macros/latex/contrib/esami/doc/examples/testA-luatex.pdf
2015/02/22 | 65018 | macros/latex/contrib/esami/doc/examples/testA-luatex-sol.pdf
-2017/11/28 | 177496 | macros/latex/contrib/esami/doc/examples/testA.pdf
-2017/02/16 | 232036 | macros/latex/contrib/esami/doc/examples/testA-sol.pdf
-2018/02/08 | 2863 | macros/latex/contrib/esami/doc/examples/testA-sol.tex
+2018/10/23 | 178754 | macros/latex/contrib/esami/doc/examples/testA.pdf
+2018/12/07 | 211514 | macros/latex/contrib/esami/doc/examples/testA-sol.pdf
+2021/10/11 | 2863 | macros/latex/contrib/esami/doc/examples/testA-sol.tex
2017/11/28 | 2947 | macros/latex/contrib/esami/doc/examples/testA.tex
2015/02/22 | 52621 | macros/latex/contrib/esami/doc/examples/testA-xetex.pdf
2015/02/22 | 61685 | macros/latex/contrib/esami/doc/examples/testA-xetex-sol.pdf
2015/02/26 | 1311 | macros/latex/contrib/esami/doc/examples/totale-versioni.tex
-2018/05/06 | 81408 | macros/latex/contrib/esami/esami.sty
-2018/05/06 | 11286 | macros/latex/contrib/esami/esami-xyz.cfg
+2021/10/11 | 80309 | macros/latex/contrib/esami/esami.sty
+2021/10/11 | 11301 | macros/latex/contrib/esami/esami-xyz.cfg
2017/06/20 | 2637 | macros/latex/contrib/esami/es-french.lng
2016/08/31 | 2680 | macros/latex/contrib/esami/es-german.lng
-2016/08/31 | 2812 | macros/latex/contrib/esami/es-greek.lng
-2016/08/31 | 3071 | macros/latex/contrib/esami/es-italian.lng
-2016/08/31 | 2520 | macros/latex/contrib/esami/es-serbian.lng
+2021/10/11 | 2812 | macros/latex/contrib/esami/es-greek.lng
+2020/07/22 | 3026 | macros/latex/contrib/esami/es-italian.lng
+2021/10/11 | 2520 | macros/latex/contrib/esami/es-serbian.lng
2016/08/31 | 2836 | macros/latex/contrib/esami/es-spanish.lng
2017/06/20 | 2777 | macros/latex/contrib/esami/es-UKenglish.lng
2018/02/08 | 2492 | macros/latex/contrib/esami/es-USenglish.lng
-2018/05/06 | 2490 | macros/latex/contrib/esami/README
-2018/05/06 | 30 | macros/latex/contrib/esami/VERSION
-2018/05/07 | 1617620 | macros/latex/contrib/esami.zip
+2021/10/11 | 2479 | macros/latex/contrib/esami/README
+2021/10/11 | 34 | macros/latex/contrib/esami/VERSION
+2021/10/11 | 1626572 | macros/latex/contrib/esami.zip
2008/05/14 | 11107 | macros/latex/contrib/esdiff/esdiff.dtx
2008/05/14 | 824 | macros/latex/contrib/esdiff/esdiff.ins
2008/05/14 | 96415 | macros/latex/contrib/esdiff/esdiff.pdf
@@ -219081,6 +219081,20 @@
2014/07/10 | 175516 | macros/latex/contrib/pgfopts/pgfopts.pdf
2013/04/25 | 1247 | macros/latex/contrib/pgfopts/README
2014/07/11 | 180427 | macros/latex/contrib/pgfopts.zip
+2021/10/10 | 109 | macros/latex/contrib/phfcc/Makefile
+2021/10/10 | 78749 | macros/latex/contrib/phfcc/phfcc.dtx
+2021/10/10 | 1962 | macros/latex/contrib/phfcc/phfcc.ins
+2021/10/10 | 411573 | macros/latex/contrib/phfcc/phfcc.pdf
+2021/10/10 | 5302 | macros/latex/contrib/phfcc/pkg.mk
+2021/10/10 | 957 | macros/latex/contrib/phfcc/README.md
+2021/10/11 | 428351 | macros/latex/contrib/phfcc.zip
+2021/10/10 | 139 | macros/latex/contrib/phfextendedabstract/Makefile
+2021/10/10 | 43931 | macros/latex/contrib/phfextendedabstract/phfextendedabstract.dtx
+2021/10/10 | 1990 | macros/latex/contrib/phfextendedabstract/phfextendedabstract.ins
+2021/10/10 | 283010 | macros/latex/contrib/phfextendedabstract/phfextendedabstract.pdf
+2021/10/10 | 5302 | macros/latex/contrib/phfextendedabstract/pkg.mk
+2021/10/10 | 532 | macros/latex/contrib/phfextendedabstract/README.md
+2021/10/11 | 295585 | macros/latex/contrib/phfextendedabstract.zip
2016/08/15 | 121 | macros/latex/contrib/phffullpagefigure/Makefile
2016/08/15 | 33987 | macros/latex/contrib/phffullpagefigure/phffullpagefigure.dtx
2016/08/15 | 1988 | macros/latex/contrib/phffullpagefigure/phffullpagefigure.ins
@@ -219088,14 +219102,14 @@
2016/08/15 | 4547 | macros/latex/contrib/phffullpagefigure/pkg.mk
2016/08/15 | 417 | macros/latex/contrib/phffullpagefigure/README.md
2016/08/15 | 252479 | macros/latex/contrib/phffullpagefigure.zip
-2016/08/15 | 261 | macros/latex/contrib/phfnote/Makefile
-2016/08/15 | 37695 | macros/latex/contrib/phfnote/naturemagdoi.bst
-2016/08/15 | 113547 | macros/latex/contrib/phfnote/phfnote.dtx
-2016/08/15 | 2036 | macros/latex/contrib/phfnote/phfnote.ins
-2016/08/15 | 646717 | macros/latex/contrib/phfnote/phfnote.pdf
-2016/08/15 | 4547 | macros/latex/contrib/phfnote/pkg.mk
-2016/08/15 | 723 | macros/latex/contrib/phfnote/README.md
-2016/08/15 | 674565 | macros/latex/contrib/phfnote.zip
+2021/10/10 | 317 | macros/latex/contrib/phfnote/Makefile
+2021/10/10 | 37652 | macros/latex/contrib/phfnote/naturemagdoi.bst
+2021/10/10 | 157027 | macros/latex/contrib/phfnote/phfnote.dtx
+2021/10/10 | 2203 | macros/latex/contrib/phfnote/phfnote.ins
+2021/10/10 | 766991 | macros/latex/contrib/phfnote/phfnote.pdf
+2021/10/10 | 5302 | macros/latex/contrib/phfnote/pkg.mk
+2021/10/10 | 963 | macros/latex/contrib/phfnote/README.md
+2021/10/11 | 801452 | macros/latex/contrib/phfnote.zip
2016/08/15 | 112 | macros/latex/contrib/phfparen/Makefile
2016/08/15 | 28835 | macros/latex/contrib/phfparen/phfparen.dtx
2016/08/15 | 1970 | macros/latex/contrib/phfparen/phfparen.ins
@@ -219103,13 +219117,13 @@
2016/08/15 | 4547 | macros/latex/contrib/phfparen/pkg.mk
2016/08/15 | 487 | macros/latex/contrib/phfparen/README.md
2016/08/15 | 314324 | macros/latex/contrib/phfparen.zip
-2017/08/19 | 110 | macros/latex/contrib/phfqit/Makefile
-2017/08/19 | 77418 | macros/latex/contrib/phfqit/phfqit.dtx
-2017/08/19 | 1964 | macros/latex/contrib/phfqit/phfqit.ins
-2017/08/19 | 397925 | macros/latex/contrib/phfqit/phfqit.pdf
-2017/08/19 | 4634 | macros/latex/contrib/phfqit/pkg.mk
-2017/08/19 | 907 | macros/latex/contrib/phfqit/README.md
-2017/08/20 | 412849 | macros/latex/contrib/phfqit.zip
+2021/10/10 | 110 | macros/latex/contrib/phfqit/Makefile
+2021/10/10 | 93420 | macros/latex/contrib/phfqit/phfqit.dtx
+2021/10/10 | 1964 | macros/latex/contrib/phfqit/phfqit.ins
+2021/10/10 | 461269 | macros/latex/contrib/phfqit/phfqit.pdf
+2021/10/10 | 5302 | macros/latex/contrib/phfqit/pkg.mk
+2021/10/10 | 972 | macros/latex/contrib/phfqit/README.md
+2021/10/11 | 479171 | macros/latex/contrib/phfqit.zip
2016/08/15 | 116 | macros/latex/contrib/phfquotetext/Makefile
2016/08/15 | 12418 | macros/latex/contrib/phfquotetext/phfquotetext.dtx
2016/08/15 | 1978 | macros/latex/contrib/phfquotetext/phfquotetext.ins
@@ -219124,13 +219138,13 @@
2016/08/15 | 4547 | macros/latex/contrib/phfsvnwatermark/pkg.mk
2016/08/15 | 482 | macros/latex/contrib/phfsvnwatermark/README.md
2016/08/16 | 210554 | macros/latex/contrib/phfsvnwatermark.zip
-2016/08/15 | 110 | macros/latex/contrib/phfthm/Makefile
-2016/08/15 | 101545 | macros/latex/contrib/phfthm/phfthm.dtx
-2016/08/15 | 1966 | macros/latex/contrib/phfthm/phfthm.ins
-2016/08/15 | 381267 | macros/latex/contrib/phfthm/phfthm.pdf
-2016/08/15 | 4547 | macros/latex/contrib/phfthm/pkg.mk
-2016/08/15 | 549 | macros/latex/contrib/phfthm/README.md
-2016/08/16 | 401025 | macros/latex/contrib/phfthm.zip
+2021/10/10 | 110 | macros/latex/contrib/phfthm/Makefile
+2021/10/10 | 111359 | macros/latex/contrib/phfthm/phfthm.dtx
+2021/10/10 | 1964 | macros/latex/contrib/phfthm/phfthm.ins
+2021/10/10 | 400744 | macros/latex/contrib/phfthm/phfthm.pdf
+2021/10/10 | 5302 | macros/latex/contrib/phfthm/pkg.mk
+2021/10/10 | 789 | macros/latex/contrib/phfthm/README.md
+2021/10/11 | 422039 | macros/latex/contrib/phfthm.zip
2015/02/27 | 233073 | macros/latex/contrib/philex/philexmanual.pdf
2015/02/27 | 41912 | macros/latex/contrib/philex/philexmanual.tex
2014/08/22 | 44714 | macros/latex/contrib/philex/philex.sty
@@ -223302,25 +223316,25 @@
2018/06/04 | 433146 | macros/latex/contrib/struktex/struktex.en.pdf
2018/06/04 | 3132 | macros/latex/contrib/struktex/struktex.ins
2018/06/04 | 956302 | macros/latex/contrib/struktex.zip
-2014/10/02 | 22598 | macros/latex/contrib/sttools/cuted.dtx
-2014/10/02 | 129830 | macros/latex/contrib/sttools/cuted.pdf
-2014/10/02 | 9526 | macros/latex/contrib/sttools/floatpag.dtx
-2014/10/02 | 130401 | macros/latex/contrib/sttools/floatpag.pdf
-2020/10/26 | 48070 | macros/latex/contrib/sttools/flushend.dtx
-2020/10/26 | 83883 | macros/latex/contrib/sttools/flushend.pdf
-2014/10/02 | 11797 | macros/latex/contrib/sttools/midfloat.dtx
-2014/10/02 | 122155 | macros/latex/contrib/sttools/midfloat.pdf
-2020/10/26 | 2720 | macros/latex/contrib/sttools/README.md
-2014/10/02 | 7357 | macros/latex/contrib/sttools/stabular.dtx
-2014/10/02 | 107168 | macros/latex/contrib/sttools/stabular.pdf
-2017/04/03 | 33698 | macros/latex/contrib/sttools/stfloats.dtx
-2017/04/03 | 125623 | macros/latex/contrib/sttools/stfloats.pdf
-2016/06/29 | 4311 | macros/latex/contrib/sttools/sttools.dtx
-2016/06/29 | 2021 | macros/latex/contrib/sttools/sttools.ins
-2016/06/29 | 107283 | macros/latex/contrib/sttools/sttools.pdf
-2014/10/02 | 15035 | macros/latex/contrib/sttools/texsort.dtx
-2014/10/02 | 122530 | macros/latex/contrib/sttools/texsort.pdf
-2020/10/26 | 952688 | macros/latex/contrib/sttools.zip
+2021/10/11 | 26918 | macros/latex/contrib/sttools/cuted.dtx
+2021/10/11 | 112309 | macros/latex/contrib/sttools/cuted.pdf
+2021/10/11 | 9246 | macros/latex/contrib/sttools/floatpag.dtx
+2021/10/11 | 134309 | macros/latex/contrib/sttools/floatpag.pdf
+2021/10/11 | 37312 | macros/latex/contrib/sttools/flushend.dtx
+2021/10/11 | 125615 | macros/latex/contrib/sttools/flushend.pdf
+2021/10/05 | 12279 | macros/latex/contrib/sttools/midfloat.dtx
+2021/10/08 | 122093 | macros/latex/contrib/sttools/midfloat.pdf
+2021/10/08 | 3221 | macros/latex/contrib/sttools/README.md
+2021/10/06 | 7912 | macros/latex/contrib/sttools/stabular.dtx
+2021/10/08 | 106924 | macros/latex/contrib/sttools/stabular.pdf
+2021/10/05 | 34213 | macros/latex/contrib/sttools/stfloats.dtx
+2021/10/08 | 123989 | macros/latex/contrib/sttools/stfloats.pdf
+2021/10/11 | 4966 | macros/latex/contrib/sttools/sttools.dtx
+2021/10/08 | 2021 | macros/latex/contrib/sttools/sttools.ins
+2021/10/11 | 115511 | macros/latex/contrib/sttools/sttools.pdf
+2021/10/05 | 15445 | macros/latex/contrib/sttools/texsort.dtx
+2021/10/11 | 122482 | macros/latex/contrib/sttools/texsort.pdf
+2021/10/11 | 991987 | macros/latex/contrib/sttools.zip
2005/12/17 | 247 | macros/latex/contrib/stubs/changelog.txt
2005/11/27 | 18011 | macros/latex/contrib/stubs/COPYING
2005/12/12 | 312 | macros/latex/contrib/stubs/README
@@ -242874,11 +242888,11 @@
2008/06/07 | 15435 | macros/xetex/latex/fontwrap/fontwrap.tex
2008/06/07 | 3891 | macros/xetex/latex/fontwrap/README
2008/06/08 | 287452 | macros/xetex/latex/fontwrap.zip
-2021/10/07 | 242 | macros/xetex/latex/hanzibox/build.sh
-2021/10/07 | 84591 | macros/xetex/latex/hanzibox/hanzibox.dtx
-2021/10/07 | 505041 | macros/xetex/latex/hanzibox/hanzibox.pdf
-2021/10/07 | 5049 | macros/xetex/latex/hanzibox/README.md
-2021/10/07 | 516964 | macros/xetex/latex/hanzibox.zip
+2021/10/11 | 242 | macros/xetex/latex/hanzibox/build.sh
+2021/10/11 | 96836 | macros/xetex/latex/hanzibox/hanzibox.dtx
+2021/10/11 | 578525 | macros/xetex/latex/hanzibox/hanzibox.pdf
+2021/10/11 | 5361 | macros/xetex/latex/hanzibox/README.md
+2021/10/11 | 589873 | macros/xetex/latex/hanzibox.zip
2013/04/03 | 54055 | macros/xetex/latex/imsproc/imsproc.cls
2013/04/03 | 65609 | macros/xetex/latex/imsproc/logo.JPG
2013/04/03 | 1332 | macros/xetex/latex/imsproc/README
@@ -270469,73 +270483,73 @@
2019/05/27 | 96489 | support/lyluatex/lyluatex.tex
2019/05/27 | 2868 | support/lyluatex/README.md
2019/05/28 | 1334865 | support/lyluatex.zip
-2021/09/30 | 32576 | support/make4ht/changelog.tex
-2021/09/30 | 4641 | support/make4ht/domfilters/make4ht-aeneas.lua
-2021/09/30 | 2741 | support/make4ht/domfilters/make4ht-booktabs.lua
-2021/09/30 | 8257 | support/make4ht/domfilters/make4ht-collapsetoc.lua
-2021/09/30 | 1057 | support/make4ht/domfilters/make4ht-fixinlines.lua
-2021/09/30 | 595 | support/make4ht/domfilters/make4ht-idcolons.lua
-2021/09/30 | 935 | support/make4ht/domfilters/make4ht-itemparagraphs.lua
-2021/09/30 | 5379 | support/make4ht/domfilters/make4ht-joincharacters.lua
-2021/09/30 | 2232 | support/make4ht/domfilters/make4ht-joincolors.lua
-2021/09/30 | 3802 | support/make4ht/domfilters/make4ht-mathmlfixes.lua
-2021/09/30 | 627 | support/make4ht/domfilters/make4ht-odtimagesize.lua
-2021/09/30 | 321 | support/make4ht/domfilters/make4ht-odtpartable.lua
-2021/09/30 | 1458 | support/make4ht/domfilters/make4ht-odtsvg.lua
-2021/09/30 | 4920 | support/make4ht/domfilters/make4ht-sectionid.lua
-2021/09/30 | 1026 | support/make4ht/domfilters/make4ht-t4htlinks.lua
-2021/09/30 | 2780 | support/make4ht/domfilters/make4ht-tablerows.lua
-2021/09/30 | 1077 | support/make4ht/extensions/make4ht-ext-common_domfilters.lua
-2021/09/30 | 628 | support/make4ht/extensions/make4ht-ext-common_filters.lua
-2021/09/30 | 2794 | support/make4ht/extensions/make4ht-ext-detect_engine.lua
-2021/09/30 | 8387 | support/make4ht/extensions/make4ht-ext-dvisvgm_hashes.lua
-2021/09/30 | 310 | support/make4ht/extensions/make4ht-ext-join_colors.lua
-2021/09/30 | 974 | support/make4ht/extensions/make4ht-ext-latexmk_build.lua
-2021/09/30 | 434 | support/make4ht/extensions/make4ht-ext-mathjaxnode.lua
-2021/09/30 | 919 | support/make4ht/extensions/make4ht-ext-mjcli.lua
-2021/09/30 | 288 | support/make4ht/extensions/make4ht-ext-odttemplate.lua
-2021/09/30 | 3861 | support/make4ht/extensions/make4ht-ext-preprocess_input.lua
-2021/09/30 | 4965 | support/make4ht/extensions/make4ht-ext-staticsite.lua
-2021/09/30 | 1330 | support/make4ht/extensions/make4ht-ext-tidy.lua
-2021/09/30 | 798 | support/make4ht/filters/make4ht-cleanspan.lua
-2021/09/30 | 264 | support/make4ht/filters/make4ht-cleanspan-nat.lua
-2021/09/30 | 2270 | support/make4ht/filters/make4ht-domfilter.lua
-2021/09/30 | 291 | support/make4ht/filters/make4ht-entities.lua
-2021/09/30 | 713 | support/make4ht/filters/make4ht-entities-to-unicode.lua
-2021/09/30 | 596 | support/make4ht/filters/make4ht-filter.lua
-2021/09/30 | 386 | support/make4ht/filters/make4ht-fixligatures.lua
-2021/09/30 | 425 | support/make4ht/filters/make4ht-fix-links.lua
-2021/09/30 | 402 | support/make4ht/filters/make4ht-hruletohr.lua
-2021/09/30 | 3191 | support/make4ht/filters/make4ht-mathjaxnode.lua
-2021/09/30 | 6116 | support/make4ht/filters/make4ht-mjcli.lua
-2021/09/30 | 2324 | support/make4ht/filters/make4ht-odttemplate.lua
-2021/09/30 | 3538 | support/make4ht/filters/make4ht-staticsite.lua
-2021/09/30 | 1215 | support/make4ht/filters/make4ht-svg-height.lua
-2021/09/30 | 1143 | support/make4ht/formats/make4ht-docbook.lua
-2021/09/30 | 395 | support/make4ht/formats/make4ht-html5.lua
-2021/09/30 | 345 | support/make4ht/formats/make4ht-jats.lua
-2021/09/30 | 10647 | support/make4ht/formats/make4ht-odt.lua
-2021/09/30 | 733 | support/make4ht/formats/make4ht-tei.lua
-2021/09/30 | 326 | support/make4ht/formats/make4ht-xhtml.lua
-2021/09/30 | 9796 | support/make4ht/lapp-mk4.lua
-2021/09/30 | 4207 | support/make4ht/make4ht
-2021/09/30 | 7915 | support/make4ht/make4ht-aeneas-config.lua
-2021/09/30 | 2465 | support/make4ht/make4ht-config.lua
-2021/09/30 | 152568 | support/make4ht/make4ht-doc.pdf
-2021/09/30 | 798 | support/make4ht/make4ht-doc.tex
-2021/09/30 | 5355 | support/make4ht/make4ht-dvireader.lua
-2021/09/30 | 2751 | support/make4ht/make4ht-errorlogparser.lua
-2021/09/30 | 1039 | support/make4ht/make4ht-filterlib.lua
-2021/09/30 | 4234 | support/make4ht/make4ht-htlatex.lua
-2021/09/30 | 7547 | support/make4ht/make4ht-indexing.lua
-2021/09/30 | 6356 | support/make4ht/make4ht-lib.lua
-2021/09/30 | 3167 | support/make4ht/make4ht-logging.lua
-2021/09/30 | 3247 | support/make4ht/make4ht-xtpipes.lua
-2021/09/30 | 10527 | support/make4ht/mkparams.lua
-2021/09/30 | 19578 | support/make4ht/mkutils.lua
-2021/09/30 | 41355 | support/make4ht/README
-2021/09/30 | 51558 | support/make4ht/readme.tex
-2021/09/30 | 262017 | support/make4ht.zip
+2021/10/11 | 32907 | support/make4ht/changelog.tex
+2021/10/11 | 4641 | support/make4ht/domfilters/make4ht-aeneas.lua
+2021/10/11 | 2741 | support/make4ht/domfilters/make4ht-booktabs.lua
+2021/10/11 | 8257 | support/make4ht/domfilters/make4ht-collapsetoc.lua
+2021/10/11 | 1057 | support/make4ht/domfilters/make4ht-fixinlines.lua
+2021/10/11 | 595 | support/make4ht/domfilters/make4ht-idcolons.lua
+2021/10/11 | 935 | support/make4ht/domfilters/make4ht-itemparagraphs.lua
+2021/10/11 | 5379 | support/make4ht/domfilters/make4ht-joincharacters.lua
+2021/10/11 | 2232 | support/make4ht/domfilters/make4ht-joincolors.lua
+2021/10/11 | 4458 | support/make4ht/domfilters/make4ht-mathmlfixes.lua
+2021/10/11 | 627 | support/make4ht/domfilters/make4ht-odtimagesize.lua
+2021/10/11 | 321 | support/make4ht/domfilters/make4ht-odtpartable.lua
+2021/10/11 | 1458 | support/make4ht/domfilters/make4ht-odtsvg.lua
+2021/10/11 | 4920 | support/make4ht/domfilters/make4ht-sectionid.lua
+2021/10/11 | 1026 | support/make4ht/domfilters/make4ht-t4htlinks.lua
+2021/10/11 | 2780 | support/make4ht/domfilters/make4ht-tablerows.lua
+2021/10/11 | 1077 | support/make4ht/extensions/make4ht-ext-common_domfilters.lua
+2021/10/11 | 628 | support/make4ht/extensions/make4ht-ext-common_filters.lua
+2021/10/11 | 2794 | support/make4ht/extensions/make4ht-ext-detect_engine.lua
+2021/10/11 | 8387 | support/make4ht/extensions/make4ht-ext-dvisvgm_hashes.lua
+2021/10/11 | 310 | support/make4ht/extensions/make4ht-ext-join_colors.lua
+2021/10/11 | 974 | support/make4ht/extensions/make4ht-ext-latexmk_build.lua
+2021/10/11 | 434 | support/make4ht/extensions/make4ht-ext-mathjaxnode.lua
+2021/10/11 | 919 | support/make4ht/extensions/make4ht-ext-mjcli.lua
+2021/10/11 | 288 | support/make4ht/extensions/make4ht-ext-odttemplate.lua
+2021/10/11 | 3861 | support/make4ht/extensions/make4ht-ext-preprocess_input.lua
+2021/10/11 | 4965 | support/make4ht/extensions/make4ht-ext-staticsite.lua
+2021/10/11 | 1330 | support/make4ht/extensions/make4ht-ext-tidy.lua
+2021/10/11 | 798 | support/make4ht/filters/make4ht-cleanspan.lua
+2021/10/11 | 264 | support/make4ht/filters/make4ht-cleanspan-nat.lua
+2021/10/11 | 2270 | support/make4ht/filters/make4ht-domfilter.lua
+2021/10/11 | 291 | support/make4ht/filters/make4ht-entities.lua
+2021/10/11 | 713 | support/make4ht/filters/make4ht-entities-to-unicode.lua
+2021/10/11 | 596 | support/make4ht/filters/make4ht-filter.lua
+2021/10/11 | 386 | support/make4ht/filters/make4ht-fixligatures.lua
+2021/10/11 | 425 | support/make4ht/filters/make4ht-fix-links.lua
+2021/10/11 | 402 | support/make4ht/filters/make4ht-hruletohr.lua
+2021/10/11 | 3191 | support/make4ht/filters/make4ht-mathjaxnode.lua
+2021/10/11 | 6116 | support/make4ht/filters/make4ht-mjcli.lua
+2021/10/11 | 2324 | support/make4ht/filters/make4ht-odttemplate.lua
+2021/10/11 | 3538 | support/make4ht/filters/make4ht-staticsite.lua
+2021/10/11 | 1215 | support/make4ht/filters/make4ht-svg-height.lua
+2021/10/11 | 1143 | support/make4ht/formats/make4ht-docbook.lua
+2021/10/11 | 395 | support/make4ht/formats/make4ht-html5.lua
+2021/10/11 | 345 | support/make4ht/formats/make4ht-jats.lua
+2021/10/11 | 10673 | support/make4ht/formats/make4ht-odt.lua
+2021/10/11 | 733 | support/make4ht/formats/make4ht-tei.lua
+2021/10/11 | 326 | support/make4ht/formats/make4ht-xhtml.lua
+2021/10/11 | 9796 | support/make4ht/lapp-mk4.lua
+2021/10/11 | 4207 | support/make4ht/make4ht
+2021/10/11 | 7915 | support/make4ht/make4ht-aeneas-config.lua
+2021/10/11 | 2465 | support/make4ht/make4ht-config.lua
+2021/10/11 | 152668 | support/make4ht/make4ht-doc.pdf
+2021/10/11 | 798 | support/make4ht/make4ht-doc.tex
+2021/10/11 | 5355 | support/make4ht/make4ht-dvireader.lua
+2021/10/11 | 2751 | support/make4ht/make4ht-errorlogparser.lua
+2021/10/11 | 1039 | support/make4ht/make4ht-filterlib.lua
+2021/10/11 | 4234 | support/make4ht/make4ht-htlatex.lua
+2021/10/11 | 7547 | support/make4ht/make4ht-indexing.lua
+2021/10/11 | 6356 | support/make4ht/make4ht-lib.lua
+2021/10/11 | 3167 | support/make4ht/make4ht-logging.lua
+2021/10/11 | 3247 | support/make4ht/make4ht-xtpipes.lua
+2021/10/11 | 10527 | support/make4ht/mkparams.lua
+2021/10/11 | 19578 | support/make4ht/mkutils.lua
+2021/10/11 | 41355 | support/make4ht/README
+2021/10/11 | 51558 | support/make4ht/readme.tex
+2021/10/11 | 262399 | support/make4ht.zip
2018/02/21 | 59658 | support/makedtx/makedtx.dtx
2018/02/21 | 1370 | support/makedtx/makedtx.ins
2018/02/21 | 300434 | support/makedtx/makedtx.pdf
@@ -272921,7 +272935,7 @@
2021/05/03 | 629 | support/TeX4ht/doc/README
2020/08/24 | 358454 | support/TeX4ht/doc/TeX4ht-doc.tex
2021/05/11 | 262 | support/TeX4ht/README
-2021/10/04 | 163335 | support/TeX4ht/source/ChangeLog
+2021/10/10 | 163657 | support/TeX4ht/source/ChangeLog
2021/05/03 | 1375 | support/TeX4ht/source/checklog.lua
2021/05/03 | 1189 | support/TeX4ht/source/common-code.tex
2021/05/03 | 2727 | support/TeX4ht/source/common-info.tex
@@ -272951,7 +272965,7 @@
2021/05/03 | 493710 | support/TeX4ht/source/tex4ht-fonts-libertine.tex
2021/05/03 | 696568 | support/TeX4ht/source/tex4ht-fonts-modern.tex
2021/05/03 | 297720 | support/TeX4ht/source/tex4ht-fonts-newtx.tex
-2021/06/21 | 1534853 | support/TeX4ht/source/tex4ht-fonts-noncjk.tex
+2021/10/10 | 1534858 | support/TeX4ht/source/tex4ht-fonts-noncjk.tex
2021/05/03 | 207424 | support/TeX4ht/source/tex4ht-fonts-spectral.tex
2021/05/03 | 14218 | support/TeX4ht/source/tex4ht-htcmd.tex
2021/05/03 | 70683 | support/TeX4ht/source/tex4ht-html0.tex
@@ -278904,7 +278918,7 @@
2021/09/27 | 6456 | systems/texlive/tlnet/archive/collection-latexextra.r60619.tar.xz
2020/12/03 | 696 | systems/texlive/tlnet/archive/collection-latex.r57048.tar.xz
2021/02/24 | 772 | systems/texlive/tlnet/archive/collection-latexrecommended.r57862.tar.xz
-2021/10/03 | 764 | systems/texlive/tlnet/archive/collection-luatex.r60681.tar.xz
+2021/10/11 | 776 | systems/texlive/tlnet/archive/collection-luatex.r60723.tar.xz
2021/09/30 | 1520 | systems/texlive/tlnet/archive/collection-mathscience.r60655.tar.xz
2021/06/10 | 548 | systems/texlive/tlnet/archive/collection-metapost.r59531.tar.xz
2021/02/24 | 476 | systems/texlive/tlnet/archive/collection-music.r57878.tar.xz
@@ -279658,8 +279672,8 @@
2019/02/28 | 13996 | systems/texlive/tlnet/archive/dcpic.r30206.tar.xz
2019/09/02 | 284556 | systems/texlive/tlnet/archive/ddphonism.doc.r52009.tar.xz
2019/09/02 | 3000 | systems/texlive/tlnet/archive/ddphonism.r52009.tar.xz
-2021/09/25 | 235988 | systems/texlive/tlnet/archive/debate.doc.r60601.tar.xz
-2021/09/25 | 1576 | systems/texlive/tlnet/archive/debate.r60601.tar.xz
+2021/10/11 | 236680 | systems/texlive/tlnet/archive/debate.doc.r60720.tar.xz
+2021/10/11 | 1580 | systems/texlive/tlnet/archive/debate.r60720.tar.xz
2019/02/28 | 155764 | systems/texlive/tlnet/archive/decimal.doc.r23374.tar.xz
2019/02/28 | 1420 | systems/texlive/tlnet/archive/decimal.r23374.tar.xz
2019/02/28 | 6576 | systems/texlive/tlnet/archive/decimal.source.r23374.tar.xz
@@ -280236,9 +280250,9 @@
2021/07/19 | 313228 | systems/texlive/tlnet/archive/easing.doc.r59975.tar.xz
2021/07/19 | 2220 | systems/texlive/tlnet/archive/easing.r59975.tar.xz
2021/07/19 | 7876 | systems/texlive/tlnet/archive/easing.source.r59975.tar.xz
-2021/10/09 | 597832 | systems/texlive/tlnet/archive/easybook.doc.r60714.tar.xz
-2021/10/09 | 17228 | systems/texlive/tlnet/archive/easybook.r60714.tar.xz
-2021/10/09 | 17268 | systems/texlive/tlnet/archive/easybook.source.r60714.tar.xz
+2021/10/11 | 597700 | systems/texlive/tlnet/archive/easybook.doc.r60721.tar.xz
+2021/10/11 | 17208 | systems/texlive/tlnet/archive/easybook.r60721.tar.xz
+2021/10/11 | 17268 | systems/texlive/tlnet/archive/easybook.source.r60721.tar.xz
2019/02/28 | 4540 | systems/texlive/tlnet/archive/easy.doc.r19440.tar.xz
2020/09/08 | 175976 | systems/texlive/tlnet/archive/easyfig.doc.r56291.tar.xz
2020/09/08 | 1936 | systems/texlive/tlnet/archive/easyfig.r56291.tar.xz
@@ -283656,6 +283670,9 @@
2021/01/08 | 3476 | systems/texlive/tlnet/archive/lua-visual-debug.r57349.tar.xz
2021/03/04 | 95132 | systems/texlive/tlnet/archive/luavlna.doc.r58087.tar.xz
2021/03/04 | 7628 | systems/texlive/tlnet/archive/luavlna.r58087.tar.xz
+2021/10/11 | 247296 | systems/texlive/tlnet/archive/lua-widow-control.doc.r60723.tar.xz
+2021/10/11 | 5704 | systems/texlive/tlnet/archive/lua-widow-control.r60723.tar.xz
+2021/10/11 | 10400 | systems/texlive/tlnet/archive/lua-widow-control.source.r60723.tar.xz
2021/10/08 | 123428 | systems/texlive/tlnet/archive/luaxml.doc.r60709.tar.xz
2021/10/08 | 32276 | systems/texlive/tlnet/archive/luaxml.r60709.tar.xz
2019/02/28 | 344 | systems/texlive/tlnet/archive/lwarp.aarch64-linux.r46208.tar.xz
@@ -285884,8 +285901,8 @@
2019/02/28 | 378272 | systems/texlive/tlnet/archive/productbox.doc.r20886.tar.xz
2019/02/28 | 4944 | systems/texlive/tlnet/archive/productbox.r20886.tar.xz
2019/02/28 | 15512 | systems/texlive/tlnet/archive/productbox.source.r20886.tar.xz
-2021/09/01 | 5107464 | systems/texlive/tlnet/archive/profcollege.doc.r60380.tar.xz
-2021/09/01 | 102072 | systems/texlive/tlnet/archive/profcollege.r60380.tar.xz
+2021/10/11 | 5261244 | systems/texlive/tlnet/archive/profcollege.doc.r60724.tar.xz
+2021/10/11 | 104040 | systems/texlive/tlnet/archive/profcollege.r60724.tar.xz
2019/02/28 | 49880 | systems/texlive/tlnet/archive/program.doc.r44214.tar.xz
2019/02/28 | 11780 | systems/texlive/tlnet/archive/program.r44214.tar.xz
2019/02/28 | 86236 | systems/texlive/tlnet/archive/progressbar.doc.r33822.tar.xz
@@ -287015,9 +287032,9 @@
2021/01/14 | 9180 | systems/texlive/tlnet/archive/showexpl.source.r57414.tar.xz
2019/02/28 | 86248 | systems/texlive/tlnet/archive/showhyphens.doc.r39787.tar.xz
2019/02/28 | 1784 | systems/texlive/tlnet/archive/showhyphens.r39787.tar.xz
-2019/02/28 | 169108 | systems/texlive/tlnet/archive/showlabels.doc.r41322.tar.xz
-2019/02/28 | 3180 | systems/texlive/tlnet/archive/showlabels.r41322.tar.xz
-2019/02/28 | 12656 | systems/texlive/tlnet/archive/showlabels.source.r41322.tar.xz
+2021/10/11 | 243704 | systems/texlive/tlnet/archive/showlabels.doc.r60722.tar.xz
+2021/10/11 | 3132 | systems/texlive/tlnet/archive/showlabels.r60722.tar.xz
+2021/10/11 | 15492 | systems/texlive/tlnet/archive/showlabels.source.r60722.tar.xz
2019/02/28 | 211912 | systems/texlive/tlnet/archive/showtags.doc.r20336.tar.xz
2019/02/28 | 2052 | systems/texlive/tlnet/archive/showtags.r20336.tar.xz
2021/02/15 | 2179340 | systems/texlive/tlnet/archive/shtthesis.doc.r57740.tar.xz
@@ -287709,14 +287726,14 @@
2021/02/27 | 109184 | systems/texlive/tlnet/archive/tex4ht.amd64-freebsd.r57941.tar.xz
2021/02/24 | 87364 | systems/texlive/tlnet/archive/tex4ht.amd64-netbsd.r57877.tar.xz
2021/02/27 | 69944 | systems/texlive/tlnet/archive/tex4ht.armhf-linux.r57957.tar.xz
-2021/10/05 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r60699.tar.xz
+2021/10/11 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r60725.tar.xz
2021/03/16 | 51080 | systems/texlive/tlnet/archive/tex4ht.i386-cygwin.r58387.tar.xz
2021/02/27 | 93092 | systems/texlive/tlnet/archive/tex4ht.i386-freebsd.r57961.tar.xz
2021/02/24 | 89116 | systems/texlive/tlnet/archive/tex4ht.i386-linux.r57878.tar.xz
2021/02/24 | 76196 | systems/texlive/tlnet/archive/tex4ht.i386-netbsd.r57877.tar.xz
2021/02/27 | 83896 | systems/texlive/tlnet/archive/tex4ht.i386-solaris.r57938.tar.xz
-2021/10/05 | 908556 | systems/texlive/tlnet/archive/tex4ht.r60699.tar.xz
-2021/10/05 | 1213096 | systems/texlive/tlnet/archive/tex4ht.source.r60699.tar.xz
+2021/10/11 | 908856 | systems/texlive/tlnet/archive/tex4ht.r60725.tar.xz
+2021/10/11 | 1220780 | systems/texlive/tlnet/archive/tex4ht.source.r60725.tar.xz
2021/02/25 | 185088 | systems/texlive/tlnet/archive/tex4ht.universal-darwin.r57908.tar.xz
2021/04/08 | 57760 | systems/texlive/tlnet/archive/tex4ht.win32.r58783.tar.xz
2021/03/16 | 58360 | systems/texlive/tlnet/archive/tex4ht.x86_64-cygwin.r58387.tar.xz
@@ -287951,7 +287968,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/10/10 | 400472 | systems/texlive/tlnet/archive/texlive-scripts.doc.r60716.tar.xz
+2021/10/11 | 400476 | systems/texlive/tlnet/archive/texlive-scripts.doc.r60719.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
@@ -287975,7 +287992,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/10/10 | 108292 | systems/texlive/tlnet/archive/texlive-scripts.r60716.tar.xz
+2021/10/11 | 108264 | systems/texlive/tlnet/archive/texlive-scripts.r60719.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
@@ -289719,16 +289736,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/10/10 | 6811634 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2021/10/10 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2021/10/10 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2021/10/11 | 6811588 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2021/10/11 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2021/10/11 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2021/04/11 | 4945 | systems/texlive/tlnet/install-tl-windows.bat
-2021/10/10 | 20874821 | systems/texlive/tlnet/install-tl-windows.exe
-2021/10/10 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2021/10/10 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2021/10/10 | 25629606 | systems/texlive/tlnet/install-tl.zip
-2021/10/10 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2021/10/10 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2021/10/11 | 20874476 | systems/texlive/tlnet/install-tl-windows.exe
+2021/10/11 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2021/10/11 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2021/10/11 | 25629585 | systems/texlive/tlnet/install-tl.zip
+2021/10/11 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2021/10/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/07/03 | 7181 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
@@ -289738,7 +289755,7 @@
2021/07/03 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg
2021/07/02 | 49348 | systems/texlive/tlnet/tlpkg/installer/config.guess
2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt
-2021/10/09 | 6879 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2021/10/10 | 6789 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2020/04/15 | 223687 | systems/texlive/tlnet/tlpkg/installer/curl/curl-ca-bundle.crt
2020/04/15 | 2606592 | systems/texlive/tlnet/tlpkg/installer/curl/curl.exe
2017/04/16 | 2629 | systems/texlive/tlnet/tlpkg/installer/installer-options.txt
@@ -289780,12 +289797,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/10/10 | 16894302 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2021/10/10 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2021/10/11 | 16897234 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2021/10/11 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2021/05/16 | 86511 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2021/10/10 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2021/10/10 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2021/10/10 | 2313656 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2021/10/11 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2021/10/11 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2021/10/11 | 2312372 | 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
@@ -294725,7 +294742,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/10/10 | 617904 | systems/win32/miktex/tm/packages/files.csv.lzma
+2021/10/11 | 617904 | 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
@@ -296131,9 +296148,9 @@
2018/01/12 | 157226 | systems/win32/miktex/tm/packages/miktex-zip-bin-x64.tar.lzma
2021/10/05 | 39429 | systems/win32/miktex/tm/packages/miktex-zlib-bin-2.9.tar.lzma
2021/10/05 | 43382 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma
-2021/10/10 | 244747 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
-2021/10/10 | 1364658 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2021/10/10 | 1266938 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2021/10/11 | 244761 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2021/10/11 | 1365712 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2021/10/11 | 1266723 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
2021/10/05 | 13448 | systems/win32/miktex/tm/packages/miktex-zzip-bin-2.9.tar.lzma
2021/10/05 | 14320 | 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
@@ -296345,189 +296362,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/10/10 | 618187 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2021/10/10 | 51110 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
-2021/10/10 | 56479 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2021/10/10 | 973040 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
-2021/10/10 | 1076363 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
-2021/10/10 | 29059 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
-2021/10/10 | 31307 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
-2021/10/10 | 29852 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
-2021/10/10 | 34694 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
-2021/10/10 | 49889 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
-2021/10/10 | 57555 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
-2021/10/10 | 83479 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
-2021/10/10 | 95494 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
-2021/10/10 | 68002 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
-2021/10/10 | 75845 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
-2021/10/10 | 27187 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
-2021/10/10 | 30806 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
-2021/10/10 | 330542 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
-2021/10/10 | 392720 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
-2021/10/10 | 32494 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
-2021/10/10 | 36605 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
-2021/10/10 | 51314 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
-2021/10/10 | 56842 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
-2021/10/10 | 254820 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
-2021/10/10 | 274920 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
-2021/10/10 | 179865 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
-2021/10/10 | 195699 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
-2021/10/10 | 54650 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
-2021/10/10 | 61845 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
-2021/10/10 | 21185 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
-2021/10/10 | 23345 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
-2021/10/10 | 462087 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
-2021/10/10 | 45960 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
-2021/10/10 | 51197 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
-2021/10/10 | 284704 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
-2021/10/10 | 324938 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
-2021/10/10 | 41156 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
-2021/10/10 | 45305 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
-2021/10/10 | 119659 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
-2021/10/10 | 133923 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
-2021/10/10 | 1287266 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
-2021/10/10 | 1415701 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
-2021/10/10 | 100294 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
-2021/10/10 | 112988 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2021/10/10 | 43037 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
-2021/10/10 | 48237 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
-2021/10/10 | 25023 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
-2021/10/10 | 28189 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
-2021/10/10 | 56366 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
-2021/10/10 | 62719 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
-2021/10/10 | 136385 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
-2021/10/10 | 153921 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
-2021/10/10 | 73175 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
-2021/10/10 | 77990 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
-2021/10/10 | 71527 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
-2021/10/10 | 80779 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
-2021/10/10 | 258860 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
-2021/10/10 | 295332 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
-2021/10/10 | 22030 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
-2021/10/10 | 24991 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
-2021/10/10 | 97370 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
-2021/10/10 | 112274 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
-2021/10/10 | 64439 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
-2021/10/10 | 73137 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
-2021/10/10 | 96568 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
-2021/10/10 | 115328 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
-2021/10/10 | 38164 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
-2021/10/10 | 42992 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
-2021/10/10 | 483088 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
-2021/10/10 | 567171 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
-2021/10/10 | 147409 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
-2021/10/10 | 159524 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
-2021/10/10 | 94763 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
-2021/10/10 | 109026 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
-2021/10/10 | 16343 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
-2021/10/10 | 17966 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
-2021/10/10 | 28400 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
-2021/10/10 | 30053 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
-2021/10/10 | 629909 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
-2021/10/10 | 681192 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
-2021/10/10 | 532390 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
-2021/10/10 | 596910 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
-2021/10/10 | 476952 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
-2021/10/10 | 510893 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
-2021/10/10 | 94420 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
-2021/10/10 | 103442 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
-2021/10/10 | 1708548 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
-2021/10/10 | 2006280 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
-2021/10/10 | 67583 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
-2021/10/10 | 74252 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
-2021/10/10 | 27363 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
-2021/10/10 | 31609 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
-2021/10/10 | 7715 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
-2021/10/10 | 8764 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
-2021/10/10 | 196852 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
-2021/10/10 | 215225 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
-2021/10/10 | 250309 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
-2021/10/10 | 283991 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
-2021/10/10 | 98385 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
-2021/10/10 | 103481 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2021/10/10 | 60661 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma
-2021/10/10 | 68084 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma
-2021/10/10 | 124333 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
-2021/10/10 | 136228 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
-2021/10/10 | 178342 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
-2021/10/10 | 196427 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
-2021/10/10 | 199527 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
-2021/10/10 | 180230 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
-2021/10/10 | 67468 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
-2021/10/10 | 77046 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
-2021/10/10 | 31232 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
-2021/10/10 | 35069 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
-2021/10/10 | 37799 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
-2021/10/10 | 42683 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
-2021/10/10 | 42866 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
-2021/10/10 | 46900 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
-2021/10/10 | 45961 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
-2021/10/10 | 52485 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
-2021/10/10 | 194112 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
-2021/10/10 | 206580 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
-2021/10/10 | 35707 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
-2021/10/10 | 40226 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
-2021/10/10 | 748971 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
-2021/10/10 | 818550 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
-2021/10/10 | 198387 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
-2021/10/10 | 202819 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
-2021/10/10 | 207919 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
-2021/10/10 | 243391 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
-2021/10/10 | 78748 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
-2021/10/10 | 87712 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2021/10/10 | 1169720 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
-2021/10/10 | 1301195 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
-2021/10/10 | 20128 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
-2021/10/10 | 23884 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
-2021/10/10 | 31552 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
-2021/10/10 | 37249 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
-2021/10/10 | 64036 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
-2021/10/10 | 72253 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
-2021/10/10 | 50312 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
-2021/10/10 | 57876 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
-2021/10/10 | 1342958 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
-2021/10/10 | 1466195 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2021/10/10 | 42410 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
-2021/10/10 | 51789 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
-2021/10/10 | 56546 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
-2021/10/10 | 59975 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
-2021/10/10 | 25236 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
-2021/10/10 | 27395 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2021/10/10 | 16436 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
-2021/10/10 | 18161 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
-2021/10/10 | 63760 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
-2021/10/10 | 69898 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
-2021/10/10 | 154711 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
-2021/10/10 | 169342 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
-2021/10/10 | 57092 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
-2021/10/10 | 65749 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
-2021/10/10 | 98254 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
-2021/10/10 | 105117 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
-2021/10/10 | 2671403 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
-2021/10/10 | 2797939 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
-2021/10/10 | 56406 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
-2021/10/10 | 62187 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
-2021/10/10 | 33477 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
-2021/10/10 | 37359 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
-2021/10/10 | 27731 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
-2021/10/10 | 33630 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
-2021/10/10 | 65561 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
-2021/10/10 | 70634 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
-2021/10/10 | 311789 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
-2021/10/10 | 345971 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
-2021/10/10 | 55506 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
-2021/10/10 | 57174 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
-2021/10/10 | 590595 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
-2021/10/10 | 624640 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
-2021/10/10 | 39137 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
-2021/10/10 | 43402 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
-2021/10/10 | 244817 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2021/10/10 | 1365677 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
-2021/10/10 | 1267145 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
-2021/10/10 | 13459 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
-2021/10/10 | 14335 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2021/10/11 | 618187 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2021/10/11 | 51111 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
+2021/10/11 | 56477 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2021/10/11 | 973040 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
+2021/10/11 | 1076362 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2021/10/11 | 29061 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
+2021/10/11 | 31308 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2021/10/11 | 29850 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
+2021/10/11 | 34695 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2021/10/11 | 49890 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
+2021/10/11 | 57554 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2021/10/11 | 83475 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
+2021/10/11 | 95492 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2021/10/11 | 68002 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
+2021/10/11 | 75846 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2021/10/11 | 27189 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
+2021/10/11 | 30805 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2021/10/11 | 330541 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
+2021/10/11 | 392719 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2021/10/11 | 32495 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
+2021/10/11 | 36603 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2021/10/11 | 51313 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
+2021/10/11 | 56844 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2021/10/11 | 254821 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
+2021/10/11 | 274920 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2021/10/11 | 179865 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
+2021/10/11 | 195702 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2021/10/11 | 54650 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
+2021/10/11 | 61847 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2021/10/11 | 21186 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
+2021/10/11 | 23345 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2021/10/11 | 462087 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
+2021/10/11 | 45960 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
+2021/10/11 | 51196 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2021/10/11 | 284705 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
+2021/10/11 | 324939 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2021/10/11 | 41157 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
+2021/10/11 | 45304 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2021/10/11 | 119656 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
+2021/10/11 | 133923 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2021/10/11 | 1287265 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
+2021/10/11 | 1415699 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2021/10/11 | 100293 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
+2021/10/11 | 112990 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2021/10/11 | 43039 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
+2021/10/11 | 48238 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2021/10/11 | 25022 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
+2021/10/11 | 28188 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2021/10/11 | 56365 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
+2021/10/11 | 62720 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2021/10/11 | 136384 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
+2021/10/11 | 153921 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2021/10/11 | 73176 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
+2021/10/11 | 77990 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2021/10/11 | 71528 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
+2021/10/11 | 80778 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2021/10/11 | 258861 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
+2021/10/11 | 295335 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2021/10/11 | 22030 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
+2021/10/11 | 24992 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2021/10/11 | 97369 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
+2021/10/11 | 112273 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2021/10/11 | 64440 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
+2021/10/11 | 73135 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2021/10/11 | 96568 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
+2021/10/11 | 115330 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2021/10/11 | 38165 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
+2021/10/11 | 42991 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2021/10/11 | 483088 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
+2021/10/11 | 567170 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2021/10/11 | 147410 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
+2021/10/11 | 159525 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2021/10/11 | 94763 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
+2021/10/11 | 109028 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2021/10/11 | 16343 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
+2021/10/11 | 17966 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2021/10/11 | 28399 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
+2021/10/11 | 30052 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2021/10/11 | 629909 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
+2021/10/11 | 681192 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2021/10/11 | 532389 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
+2021/10/11 | 596910 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2021/10/11 | 476953 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
+2021/10/11 | 510891 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2021/10/11 | 94418 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
+2021/10/11 | 103441 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2021/10/11 | 1708549 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
+2021/10/11 | 2006279 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2021/10/11 | 67583 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
+2021/10/11 | 74252 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2021/10/11 | 27361 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
+2021/10/11 | 31608 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2021/10/11 | 7715 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
+2021/10/11 | 8765 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2021/10/11 | 196853 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
+2021/10/11 | 215227 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2021/10/11 | 250309 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
+2021/10/11 | 283991 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2021/10/11 | 98386 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
+2021/10/11 | 103481 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2021/10/11 | 60661 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma
+2021/10/11 | 68083 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma
+2021/10/11 | 124333 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
+2021/10/11 | 136229 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2021/10/11 | 178342 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
+2021/10/11 | 196427 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2021/10/11 | 199527 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
+2021/10/11 | 180228 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2021/10/11 | 67467 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
+2021/10/11 | 77045 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2021/10/11 | 31231 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
+2021/10/11 | 35069 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2021/10/11 | 37799 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
+2021/10/11 | 42683 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2021/10/11 | 42866 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
+2021/10/11 | 46899 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2021/10/11 | 45961 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
+2021/10/11 | 52485 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2021/10/11 | 194110 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
+2021/10/11 | 206579 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
+2021/10/11 | 35707 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
+2021/10/11 | 40226 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
+2021/10/11 | 748969 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
+2021/10/11 | 818550 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2021/10/11 | 198386 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
+2021/10/11 | 202819 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2021/10/11 | 207924 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
+2021/10/11 | 243392 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2021/10/11 | 78748 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
+2021/10/11 | 87712 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2021/10/11 | 1169719 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
+2021/10/11 | 1301196 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2021/10/11 | 20128 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
+2021/10/11 | 23885 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2021/10/11 | 31552 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
+2021/10/11 | 37251 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2021/10/11 | 64035 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
+2021/10/11 | 72254 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2021/10/11 | 50313 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
+2021/10/11 | 57876 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2021/10/11 | 1342958 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
+2021/10/11 | 1466196 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2021/10/11 | 42409 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
+2021/10/11 | 51789 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2021/10/11 | 56547 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
+2021/10/11 | 59976 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2021/10/11 | 25237 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
+2021/10/11 | 27398 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2021/10/11 | 16437 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
+2021/10/11 | 18161 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2021/10/11 | 63760 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
+2021/10/11 | 69898 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2021/10/11 | 154712 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
+2021/10/11 | 169343 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2021/10/11 | 57092 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
+2021/10/11 | 65748 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2021/10/11 | 98251 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
+2021/10/11 | 105117 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2021/10/11 | 2671401 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
+2021/10/11 | 2797939 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2021/10/11 | 56405 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
+2021/10/11 | 62186 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2021/10/11 | 33478 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
+2021/10/11 | 37359 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2021/10/11 | 27731 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
+2021/10/11 | 33630 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2021/10/11 | 65561 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
+2021/10/11 | 70635 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2021/10/11 | 311789 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
+2021/10/11 | 345970 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2021/10/11 | 55505 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
+2021/10/11 | 57174 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
+2021/10/11 | 590594 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
+2021/10/11 | 624643 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2021/10/11 | 39135 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
+2021/10/11 | 43403 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2021/10/11 | 244800 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2021/10/11 | 1364595 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2021/10/11 | 1266968 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2021/10/11 | 13459 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
+2021/10/11 | 14336 | 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/10/10 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
+2021/10/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
@@ -296926,7 +296943,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/10/10 | 1081 | systems/win32/miktex/tm/packages/pr.ini
+2021/10/11 | 1081 | 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
@@ -298564,7 +298581,7 @@
2004/06/04 | 404 | tds/tds.sed
2004/06/23 | 65418 | tds/tds.tex
2019/05/29 | 304264 | tds.zip
-2021/10/11 | 186 | timestamp
+2021/10/12 | 186 | timestamp
2002/08/26 | 61898 | usergrps/dante/antrag.pdf
2002/08/26 | 118217 | usergrps/dante/antrag.ps
2021/08/04 | 917 | usergrps/dante/dtk/doc/beispiel.bib
diff --git a/FILES.byname.gz b/FILES.byname.gz
index 7d5be79303..db09339305 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index 0db254ec64..f61c2eb475 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,17 +1,351 @@
+2021/10/11 | 991987 | macros/latex/contrib/sttools.zip
+2021/10/11 | 98386 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
+2021/10/11 | 98251 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
+2021/10/11 | 9796 | support/make4ht/lapp-mk4.lua
+2021/10/11 | 974 | support/make4ht/extensions/make4ht-ext-latexmk_build.lua
+2021/10/11 | 97369 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
+2021/10/11 | 973040 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
+2021/10/11 | 96836 | macros/xetex/latex/hanzibox/hanzibox.dtx
+2021/10/11 | 96568 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
+2021/10/11 | 95492 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2021/10/11 | 949329 | graphics/mcf2graph.zip
+2021/10/11 | 94763 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
+2021/10/11 | 94418 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
+2021/10/11 | 935 | support/make4ht/domfilters/make4ht-itemparagraphs.lua
+2021/10/11 | 9246 | macros/latex/contrib/sttools/floatpag.dtx
+2021/10/11 | 919 | support/make4ht/extensions/make4ht-ext-mjcli.lua
+2021/10/11 | 908856 | systems/texlive/tlnet/archive/tex4ht.r60725.tar.xz
+2021/10/11 | 87712 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2021/10/11 | 8765 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2021/10/11 | 8387 | support/make4ht/extensions/make4ht-ext-dvisvgm_hashes.lua
+2021/10/11 | 83475 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
+2021/10/11 | 8257 | support/make4ht/domfilters/make4ht-collapsetoc.lua
+2021/10/11 | 818550 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2021/10/11 | 80778 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2021/10/11 | 80309 | macros/latex/contrib/esami/esami.sty
+2021/10/11 | 801452 | macros/latex/contrib/phfnote.zip
+2021/10/11 | 798 | support/make4ht/make4ht-doc.tex
+2021/10/11 | 798 | support/make4ht/filters/make4ht-cleanspan.lua
+2021/10/11 | 7915 | support/make4ht/make4ht-aeneas-config.lua
+2021/10/11 | 78748 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
+2021/10/11 | 77990 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2021/10/11 | 776 | systems/texlive/tlnet/archive/collection-luatex.r60723.tar.xz
+2021/10/11 | 7715 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
+2021/10/11 | 77045 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2021/10/11 | 75846 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2021/10/11 | 7547 | support/make4ht/make4ht-indexing.lua
+2021/10/11 | 753 | macros/latex/contrib/esami/doc/examples/problem4-fillin.tex
+2021/10/11 | 748969 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
+2021/10/11 | 74252 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2021/10/11 | 733 | support/make4ht/formats/make4ht-tei.lua
+2021/10/11 | 73176 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
+2021/10/11 | 73135 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2021/10/11 | 72254 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2021/10/11 | 71528 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
+2021/10/11 | 713 | support/make4ht/filters/make4ht-entities-to-unicode.lua
+2021/10/11 | 70635 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2021/10/11 | 69898 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2021/10/11 | 696 | macros/latex/contrib/esami/doc/examples/problem2-tabella.tex
+2021/10/11 | 681192 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2021/10/11 | 6811588 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2021/10/11 | 68083 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma
+2021/10/11 | 68002 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
+2021/10/11 | 67583 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
+2021/10/11 | 67467 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
+2021/10/11 | 65748 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2021/10/11 | 65561 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
+2021/10/11 | 644 | macros/latex/contrib/esami/doc/examples/problem1.tex
+2021/10/11 | 64440 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
+2021/10/11 | 64035 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
+2021/10/11 | 63760 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
+2021/10/11 | 6356 | support/make4ht/make4ht-lib.lua
+2021/10/11 | 6349 | macros/latex/contrib/esami/doc/examples/test14.tex
+2021/10/11 | 629909 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
+2021/10/11 | 628 | support/make4ht/extensions/make4ht-ext-common_filters.lua
+2021/10/11 | 627 | support/make4ht/domfilters/make4ht-odtimagesize.lua
+2021/10/11 | 62720 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2021/10/11 | 625 | macros/latex/contrib/esami/doc/examples/test11.tex
+2021/10/11 | 624643 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2021/10/11 | 62186 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2021/10/11 | 61847 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2021/10/11 | 618187 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2021/10/11 | 617904 | systems/win32/miktex/tm/packages/files.csv.lzma
+2021/10/11 | 6116 | support/make4ht/filters/make4ht-mjcli.lua
+2021/10/11 | 60661 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma
+2021/10/11 | 59976 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2021/10/11 | 597700 | systems/texlive/tlnet/archive/easybook.doc.r60721.tar.xz
+2021/10/11 | 596 | support/make4ht/filters/make4ht-filter.lua
+2021/10/11 | 596910 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2021/10/11 | 595 | support/make4ht/domfilters/make4ht-idcolons.lua
+2021/10/11 | 590594 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
+2021/10/11 | 589873 | macros/xetex/latex/hanzibox.zip
+2021/10/11 | 57876 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2021/10/11 | 578525 | macros/xetex/latex/hanzibox/hanzibox.pdf
+2021/10/11 | 57554 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2021/10/11 | 57174 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
+2021/10/11 | 57092 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
+2021/10/11 | 5704 | systems/texlive/tlnet/archive/lua-widow-control.r60723.tar.xz
+2021/10/11 | 56851 | macros/latex/contrib/esami/doc/esami-doc-it.tex
+2021/10/11 | 56844 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2021/10/11 | 567170 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2021/10/11 | 56547 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
+2021/10/11 | 56477 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2021/10/11 | 56405 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
+2021/10/11 | 56365 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
+2021/10/11 | 55505 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
+2021/10/11 | 54650 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
+2021/10/11 | 5379 | support/make4ht/domfilters/make4ht-joincharacters.lua
+2021/10/11 | 5361 | macros/xetex/latex/hanzibox/README.md
+2021/10/11 | 5355 | support/make4ht/make4ht-dvireader.lua
+2021/10/11 | 532389 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
+2021/10/11 | 52623 | macros/latex/contrib/esami/doc/esami-doc-en.tex
+2021/10/11 | 5261244 | systems/texlive/tlnet/archive/profcollege.doc.r60724.tar.xz
+2021/10/11 | 52485 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2021/10/11 | 51789 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2021/10/11 | 51558 | support/make4ht/readme.tex
+2021/10/11 | 51313 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
+2021/10/11 | 51196 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2021/10/11 | 51111 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
+2021/10/11 | 510891 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2021/10/11 | 503 | macros/latex/contrib/esami/doc/examples/problem3-matching.tex
+2021/10/11 | 50313 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
+2021/10/11 | 49890 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
+2021/10/11 | 4966 | macros/latex/contrib/sttools/sttools.dtx
+2021/10/11 | 4965 | support/make4ht/extensions/make4ht-ext-staticsite.lua
+2021/10/11 | 4920 | support/make4ht/domfilters/make4ht-sectionid.lua
+2021/10/11 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2021/10/11 | 489492 | macros/latex/contrib/esami/doc/esami-doc-it.pdf
+2021/10/11 | 483088 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
+2021/10/11 | 48238 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2021/10/11 | 481289 | macros/latex/contrib/esami/doc/esami-doc-en.pdf
+2021/10/11 | 479171 | macros/latex/contrib/phfqit.zip
+2021/10/11 | 476953 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
+2021/10/11 | 471 | macros/latex/contrib/esami/doc/examples/test1.tex
+2021/10/11 | 46899 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2021/10/11 | 4641 | support/make4ht/domfilters/make4ht-aeneas.lua
+2021/10/11 | 462 | macros/latex/contrib/esami/doc/examples/test5-fillin.tex
+2021/10/11 | 462087 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
+2021/10/11 | 45961 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
+2021/10/11 | 45960 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
+2021/10/11 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2021/10/11 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2021/10/11 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2021/10/11 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2021/10/11 | 45304 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2021/10/11 | 4458 | support/make4ht/domfilters/make4ht-mathmlfixes.lua
+2021/10/11 | 434 | support/make4ht/extensions/make4ht-ext-mathjaxnode.lua
+2021/10/11 | 43403 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2021/10/11 | 43039 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
+2021/10/11 | 42991 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2021/10/11 | 42866 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
+2021/10/11 | 428351 | macros/latex/contrib/phfcc.zip
+2021/10/11 | 42683 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2021/10/11 | 425 | support/make4ht/filters/make4ht-fix-links.lua
+2021/10/11 | 42409 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
+2021/10/11 | 4234 | support/make4ht/make4ht-htlatex.lua
+2021/10/11 | 422039 | macros/latex/contrib/phfthm.zip
+2021/10/11 | 4207 | support/make4ht/make4ht
+2021/10/11 | 41355 | support/make4ht/README
+2021/10/11 | 41157 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
+2021/10/11 | 402 | support/make4ht/filters/make4ht-hruletohr.lua
+2021/10/11 | 40226 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
+2021/10/11 | 400476 | systems/texlive/tlnet/archive/texlive-scripts.doc.r60719.tar.xz
+2021/10/11 | 395 | support/make4ht/formats/make4ht-html5.lua
+2021/10/11 | 392719 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2021/10/11 | 39135 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
+2021/10/11 | 386 | support/make4ht/filters/make4ht-fixligatures.lua
+2021/10/11 | 3861 | support/make4ht/extensions/make4ht-ext-preprocess_input.lua
+2021/10/11 | 38165 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
+2021/10/11 | 37799 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
+2021/10/11 | 37359 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2021/10/11 | 37312 | macros/latex/contrib/sttools/flushend.dtx
+2021/10/11 | 37251 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2021/10/11 | 36603 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2021/10/11 | 35707 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
+2021/10/11 | 3538 | support/make4ht/filters/make4ht-staticsite.lua
+2021/10/11 | 35069 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2021/10/11 | 34 | macros/latex/contrib/esami/VERSION
+2021/10/11 | 34695 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2021/10/11 | 345 | support/make4ht/formats/make4ht-jats.lua
+2021/10/11 | 345970 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2021/10/11 | 33630 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2021/10/11 | 33478 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
+2021/10/11 | 330541 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
+2021/10/11 | 32907 | support/make4ht/changelog.tex
+2021/10/11 | 326 | support/make4ht/formats/make4ht-xhtml.lua
+2021/10/11 | 32495 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
+2021/10/11 | 324939 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2021/10/11 | 3247 | support/make4ht/make4ht-xtpipes.lua
+2021/10/11 | 321 | support/make4ht/domfilters/make4ht-odtpartable.lua
+2021/10/11 | 3191 | support/make4ht/filters/make4ht-mathjaxnode.lua
+2021/10/11 | 3167 | support/make4ht/make4ht-logging.lua
+2021/10/11 | 31608 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2021/10/11 | 31552 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
+2021/10/11 | 3132 | systems/texlive/tlnet/archive/showlabels.r60722.tar.xz
+2021/10/11 | 31308 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2021/10/11 | 31231 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
+2021/10/11 | 311789 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
+2021/10/11 | 310 | support/make4ht/extensions/make4ht-ext-join_colors.lua
+2021/10/11 | 30805 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2021/10/11 | 30052 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2021/10/11 | 29850 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
+2021/10/11 | 295585 | macros/latex/contrib/phfextendedabstract.zip
+2021/10/11 | 295335 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2021/10/11 | 291 | support/make4ht/filters/make4ht-entities.lua
+2021/10/11 | 29061 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
+2021/10/11 | 288 | support/make4ht/extensions/make4ht-ext-odttemplate.lua
+2021/10/11 | 2863 | macros/latex/contrib/esami/doc/examples/testA-sol.tex
+2021/10/11 | 284705 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
+2021/10/11 | 28399 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
+2021/10/11 | 283991 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2021/10/11 | 28188 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2021/10/11 | 2812 | macros/latex/contrib/esami/es-greek.lng
+2021/10/11 | 2797939 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2021/10/11 | 2794 | support/make4ht/extensions/make4ht-ext-detect_engine.lua
+2021/10/11 | 2780 | support/make4ht/domfilters/make4ht-tablerows.lua
+2021/10/11 | 27731 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
+2021/10/11 | 2751 | support/make4ht/make4ht-errorlogparser.lua
+2021/10/11 | 274920 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2021/10/11 | 2741 | support/make4ht/domfilters/make4ht-booktabs.lua
+2021/10/11 | 27398 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2021/10/11 | 27361 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
+2021/10/11 | 27189 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
+2021/10/11 | 26918 | macros/latex/contrib/sttools/cuted.dtx
+2021/10/11 | 2671401 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
+2021/10/11 | 264 | support/make4ht/filters/make4ht-cleanspan-nat.lua
+2021/10/11 | 262399 | support/make4ht.zip
+2021/10/11 | 258861 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
+2021/10/11 | 25629585 | systems/texlive/tlnet/install-tl.zip
+2021/10/11 | 254821 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
+2021/10/11 | 25237 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
+2021/10/11 | 2520 | macros/latex/contrib/esami/es-serbian.lng
+2021/10/11 | 250309 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
+2021/10/11 | 25022 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
+2021/10/11 | 24992 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2021/10/11 | 2479 | macros/latex/contrib/esami/README
+2021/10/11 | 247296 | systems/texlive/tlnet/archive/lua-widow-control.doc.r60723.tar.xz
+2021/10/11 | 2465 | support/make4ht/make4ht-config.lua
+2021/10/11 | 244800 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2021/10/11 | 244761 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2021/10/11 | 243704 | systems/texlive/tlnet/archive/showlabels.doc.r60722.tar.xz
+2021/10/11 | 243392 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2021/10/11 | 242 | macros/xetex/latex/hanzibox/build.sh
+2021/10/11 | 23885 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2021/10/11 | 236680 | systems/texlive/tlnet/archive/debate.doc.r60720.tar.xz
+2021/10/11 | 2347 | macros/latex/contrib/esami/doc/examples/master-sol.tex
+2021/10/11 | 23345 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2021/10/11 | 2324 | support/make4ht/filters/make4ht-odttemplate.lua
+2021/10/11 | 2312372 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2021/10/11 | 2270 | support/make4ht/filters/make4ht-domfilter.lua
+2021/10/11 | 2232 | support/make4ht/domfilters/make4ht-joincolors.lua
+2021/10/11 | 22030 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
+2021/10/11 | 215227 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2021/10/11 | 21186 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
+2021/10/11 | 20874476 | systems/texlive/tlnet/install-tl-windows.exe
+2021/10/11 | 207924 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
+2021/10/11 | 206579 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
+2021/10/11 | 202819 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2021/10/11 | 20128 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
+2021/10/11 | 2006279 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2021/10/11 | 199527 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
+2021/10/11 | 198386 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
+2021/10/11 | 196853 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
+2021/10/11 | 196427 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2021/10/11 | 19578 | support/make4ht/mkutils.lua
+2021/10/11 | 195702 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2021/10/11 | 194110 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
+2021/10/11 | 18161 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2021/10/11 | 180228 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2021/10/11 | 179865 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
+2021/10/11 | 17966 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2021/10/11 | 178342 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
+2021/10/11 | 17268 | systems/texlive/tlnet/archive/easybook.source.r60721.tar.xz
+2021/10/11 | 17208 | systems/texlive/tlnet/archive/easybook.r60721.tar.xz
+2021/10/11 | 1708549 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
+2021/10/11 | 1701 | macros/latex/contrib/esami/doc/examples/test4.tex
+2021/10/11 | 169343 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2021/10/11 | 16897234 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2021/10/11 | 16437 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
+2021/10/11 | 16343 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
+2021/10/11 | 1626572 | macros/latex/contrib/esami.zip
+2021/10/11 | 159525 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2021/10/11 | 1580 | systems/texlive/tlnet/archive/debate.r60720.tar.xz
+2021/10/11 | 1571 | macros/latex/contrib/esami/doc/esami.bib
+2021/10/11 | 15492 | systems/texlive/tlnet/archive/showlabels.source.r60722.tar.xz
+2021/10/11 | 154712 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
+2021/10/11 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2021/10/11 | 153921 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2021/10/11 | 1533 | macros/latex/contrib/esami/doc/examples/test3.tex
+2021/10/11 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2021/10/11 | 152668 | support/make4ht/make4ht-doc.pdf
+2021/10/11 | 147410 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
+2021/10/11 | 1466196 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2021/10/11 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2021/10/11 | 1458 | support/make4ht/domfilters/make4ht-odtsvg.lua
+2021/10/11 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2021/10/11 | 14336 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2021/10/11 | 1415699 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2021/10/11 | 1365 | macros/latex/contrib/esami/doc/examples/test13.tex
+2021/10/11 | 1365712 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2021/10/11 | 1364595 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2021/10/11 | 136384 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
+2021/10/11 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r60725.tar.xz
+2021/10/11 | 136229 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2021/10/11 | 1361 | macros/latex/contrib/esami/doc/examples/test9.tex
+2021/10/11 | 13459 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
+2021/10/11 | 134309 | macros/latex/contrib/sttools/floatpag.pdf
+2021/10/11 | 1342958 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
+2021/10/11 | 133923 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2021/10/11 | 1330 | support/make4ht/extensions/make4ht-ext-tidy.lua
+2021/10/11 | 1301196 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2021/10/11 | 1287265 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
+2021/10/11 | 1266968 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2021/10/11 | 1266723 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2021/10/11 | 125615 | macros/latex/contrib/sttools/flushend.pdf
+2021/10/11 | 124333 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
+2021/10/11 | 122482 | macros/latex/contrib/sttools/texsort.pdf
+2021/10/11 | 1220780 | systems/texlive/tlnet/archive/tex4ht.source.r60725.tar.xz
+2021/10/11 | 1215 | support/make4ht/filters/make4ht-svg-height.lua
+2021/10/11 | 119656 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
+2021/10/11 | 1169719 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
+2021/10/11 | 1167 | macros/latex/contrib/esami/doc/examples/problem2.tex
+2021/10/11 | 115511 | macros/latex/contrib/sttools/sttools.pdf
+2021/10/11 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
+2021/10/11 | 115330 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2021/10/11 | 1143 | support/make4ht/formats/make4ht-docbook.lua
+2021/10/11 | 11301 | macros/latex/contrib/esami/esami-xyz.cfg
+2021/10/11 | 112990 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2021/10/11 | 112309 | macros/latex/contrib/sttools/cuted.pdf
+2021/10/11 | 112273 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2021/10/11 | 1103 | macros/latex/contrib/esami/doc/examples/test2.tex
+2021/10/11 | 109028 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2021/10/11 | 108264 | systems/texlive/tlnet/archive/texlive-scripts.r60719.tar.xz
+2021/10/11 | 1081 | systems/win32/miktex/tm/packages/pr.ini
+2021/10/11 | 1077 | support/make4ht/extensions/make4ht-ext-common_domfilters.lua
+2021/10/11 | 1076362 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2021/10/11 | 10673 | support/make4ht/formats/make4ht-odt.lua
+2021/10/11 | 1057 | support/make4ht/domfilters/make4ht-fixinlines.lua
+2021/10/11 | 10527 | support/make4ht/mkparams.lua
+2021/10/11 | 105117 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2021/10/11 | 104040 | systems/texlive/tlnet/archive/profcollege.r60724.tar.xz
+2021/10/11 | 10400 | systems/texlive/tlnet/archive/lua-widow-control.source.r60723.tar.xz
+2021/10/11 | 1039 | support/make4ht/make4ht-filterlib.lua
+2021/10/11 | 103481 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2021/10/11 | 103441 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2021/10/11 | 1026 | support/make4ht/domfilters/make4ht-t4htlinks.lua
+2021/10/11 | 1023 | macros/latex/contrib/esami/doc/examples/test12.tex
+2021/10/11 | 100293 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
2021/10/10 | 999 | macros/luatex/generic/lua-widow-control/README.md
-2021/10/10 | 98385 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
-2021/10/10 | 98254 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
-2021/10/10 | 97370 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
-2021/10/10 | 973040 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
+2021/10/10 | 97979 | graphics/mcf2graph/mcf_data_base.mcf
+2021/10/10 | 972 | macros/latex/contrib/phfqit/README.md
2021/10/10 | 967 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_simple.snap
-2021/10/10 | 96568 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
-2021/10/10 | 95494 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
-2021/10/10 | 94763 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
+2021/10/10 | 963 | macros/latex/contrib/phfnote/README.md
+2021/10/10 | 957 | macros/latex/contrib/phfcc/README.md
2021/10/10 | 9462 | support/texlab/src/features/cursor.rs
2021/10/10 | 944 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__glossary_entry_definition_simple.snap
-2021/10/10 | 94420 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
2021/10/10 | 9420 | support/texlab/tests/integration/snapshots/integration__completion__latex__begin_command.snap
2021/10/10 | 9396 | support/texlab/src/features.rs
+2021/10/10 | 93420 | macros/latex/contrib/phfqit/phfqit.dtx
2021/10/10 | 928 | support/texlab/tests/integration/snapshots/integration__completion__latex__user_environment.snap
2021/10/10 | 923 | support/texlab/src/language.rs
2021/10/10 | 909 | support/texlab/src/features/formatting.rs
@@ -19,8 +353,6 @@
2021/10/10 | 88 | support/texlab/tests/integration/snapshots/integration__hover__empty_labtex_document.snap
2021/10/10 | 88 | support/texlab/tests/integration/snapshots/integration__hover__empty_bibtex_document.snap
2021/10/10 | 883 | support/texlab/src/context.rs
-2021/10/10 | 87712 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2021/10/10 | 8764 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
2021/10/10 | 8762 | support/texlab/src/features/completion/citation.rs
2021/10/10 | 875 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__glossary_entry_reference_options.snap
2021/10/10 | 8705 | support/texlab/src/label.rs
@@ -31,47 +363,34 @@
2021/10/10 | 848 | macros/luatex/generic/lua-widow-control/lua-widow-control.tex
2021/10/10 | 843 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__biblatex_include_options.snap
2021/10/10 | 839 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__equation_missing_end.snap
-2021/10/10 | 83479 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
2021/10/10 | 833 | support/texlab/src/syntax/latex.rs
2021/10/10 | 8262 | support/texlab/src/features/build.rs
2021/10/10 | 821 | support/texlab/src/features/reference.rs
-2021/10/10 | 818550 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
2021/10/10 | 808 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__equation_missing_begin.snap
-2021/10/10 | 80779 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
2021/10/10 | 802 | support/texlab/src/syntax/bibtex.rs
2021/10/10 | 799 | macros/latex/contrib/easybook/README.md
2021/10/10 | 79222 | macros/latex/contrib/easybook/easybook.dtx
-2021/10/10 | 78748 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
+2021/10/10 | 789 | macros/latex/contrib/phfthm/README.md
+2021/10/10 | 78749 | macros/latex/contrib/phfcc/phfcc.dtx
2021/10/10 | 786 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_reference_options.snap
2021/10/10 | 785 | support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_two_fields_incomplete.snap
2021/10/10 | 78353 | macros/latex/contrib/easybook/easybook.tex
-2021/10/10 | 77990 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
2021/10/10 | 778 | support/texlab/tests/integration/snapshots/integration__completion__latex__citation_multi_word.snap
2021/10/10 | 772 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__caption_figure.snap
-2021/10/10 | 7715 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
-2021/10/10 | 77046 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
2021/10/10 | 76 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__lexer__tests__empty.snap
+2021/10/10 | 766991 | macros/latex/contrib/phfnote/phfnote.pdf
2021/10/10 | 765 | support/texlab/tests/integration/snapshots/integration__completion__latex__citation_open_brace.snap
2021/10/10 | 7625849 | support/texlab.zip
-2021/10/10 | 75845 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
-2021/10/10 | 748971 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
2021/10/10 | 742 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_definition_simple.snap
-2021/10/10 | 74252 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
2021/10/10 | 741 | support/texlab/tests/integration/snapshots/integration__workspace_symbol__filter_type_math.snap
2021/10/10 | 734 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_full.snap
2021/10/10 | 734 | support/texlab/docs/tectonic.md
-2021/10/10 | 73175 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
-2021/10/10 | 73137 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
2021/10/10 | 7281 | support/texlab/src/features/completion/label.rs
2021/10/10 | 727 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_simple.snap
-2021/10/10 | 72253 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
2021/10/10 | 721 | support/texlab/tests/integration/snapshots/integration__workspace_symbol__filter_bibtex.snap
-2021/10/10 | 71527 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
2021/10/10 | 710 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_definition_simple.snap
2021/10/10 | 7067 | support/texlab/src/features/folding.rs
-2021/10/10 | 70634 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
2021/10/10 | 6 | support/texlab/rust-toolchain
-2021/10/10 | 69898 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
2021/10/10 | 6970534 | support/texlab/data/components.json.gz
2021/10/10 | 696 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__graphics_include_options.snap
2021/10/10 | 6955 | support/texlab/src/features/completion/entry_type.rs
@@ -79,186 +398,130 @@
2021/10/10 | 688 | support/texlab/src/lib.rs
2021/10/10 | 6888 | support/texlab/src/features/symbol/project_order.rs
2021/10/10 | 6843 | support/texlab/src/features/reference/entry.rs
-2021/10/10 | 681192 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
-2021/10/10 | 6811634 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2021/10/10 | 68084 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma
-2021/10/10 | 68002 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
+2021/10/10 | 6789 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2021/10/10 | 677 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__structure_siblings.snap
2021/10/10 | 676 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__svg_include_options.snap
-2021/10/10 | 67583 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
-2021/10/10 | 67468 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
2021/10/10 | 670 | support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_one_field_trailing_comma.snap
2021/10/10 | 668 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__inkscape_include_options.snap
2021/10/10 | 6618 | support/texlab/src/features/reference/string.rs
2021/10/10 | 6579 | support/texlab/src/syntax/bibtex/cst.rs
-2021/10/10 | 65749 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
2021/10/10 | 656 | support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_one_field_number_key.snap
-2021/10/10 | 65561 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
2021/10/10 | 648 | support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_one_field.snap
2021/10/10 | 6485 | support/texlab/src/line_index.rs
-2021/10/10 | 64439 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
2021/10/10 | 643 | support/texlab/texlab.1
-2021/10/10 | 64036 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
-2021/10/10 | 63760 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
2021/10/10 | 634 | support/texlab/src/syntax/latex/analysis/label_number.rs
+2021/10/10 | 63149 | graphics/mcf2graph/mcf_manual.tex
2021/10/10 | 630 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__inline_double_dollar.snap
-2021/10/10 | 629909 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
2021/10/10 | 6272 | macros/luatex/generic/lua-widow-control/lwc-documentation.mkxl
-2021/10/10 | 62719 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
2021/10/10 | 624 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__inline.snap
-2021/10/10 | 624640 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
2021/10/10 | 623 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__caption.snap
2021/10/10 | 621 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__caption_error.snap
-2021/10/10 | 62187 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
2021/10/10 | 6187 | support/texlab/src/features/reference/label.rs
-2021/10/10 | 61845 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
-2021/10/10 | 618187 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2021/10/10 | 617904 | systems/win32/miktex/tm/packages/files.csv.lzma
2021/10/10 | 617897 | macros/latex/contrib/easybook.zip
2021/10/10 | 616 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__command_definition_simple.snap
2021/10/10 | 614 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__lexer__tests__formula.snap
2021/10/10 | 609 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_error2.snap
-2021/10/10 | 60661 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma
-2021/10/10 | 59975 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
2021/10/10 | 598 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_name_with_description_and_counter.snap
-2021/10/10 | 596910 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
-2021/10/10 | 590595 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
2021/10/10 | 5896 | support/texlab/src/features/completion/field.rs
2021/10/10 | 583 | support/texlab/src/syntax/latex/analysis/theorem.rs
-2021/10/10 | 57876 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
2021/10/10 | 578151 | macros/latex/contrib/easybook/easybook.pdf
2021/10/10 | 575 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__lexer__tests__command_with_parameter.snap
-2021/10/10 | 57555 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
2021/10/10 | 57526 | support/texlab/Cargo.lock
-2021/10/10 | 57174 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
-2021/10/10 | 57092 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
2021/10/10 | 57018 | support/texlab/data/lang_data.json
-2021/10/10 | 56842 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
2021/10/10 | 5679 | support/texlab/src/features/completion/import.rs
-2021/10/10 | 567171 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
2021/10/10 | 565 | support/texlab/src/features/formatting/snapshots/texlab__features__formatting__bibtex_internal__tests__multiple_entries.snap
-2021/10/10 | 56546 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
2021/10/10 | 5650 | support/texlab/src/features/completion/argument.rs
-2021/10/10 | 56479 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2021/10/10 | 56406 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
-2021/10/10 | 56366 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
2021/10/10 | 56296 | support/texlab/src/citation/apa.csl
2021/10/10 | 559 | support/texlab/src/features/semantic.rs
2021/10/10 | 558 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_number.snap
2021/10/10 | 558 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_prenote_postnote.snap
-2021/10/10 | 55506 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
2021/10/10 | 549 | support/texlab/tests/integration/snapshots/integration__completion__latex__kernel_command.snap
-2021/10/10 | 54650 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
2021/10/10 | 540 | support/texlab/tests/integration/snapshots/integration__completion__latex__kernel_command_environment.snap
2021/10/10 | 540 | support/texlab/tests/integration/snapshots/integration__completion__latex__class_environment.snap
2021/10/10 | 538 | support/texlab/tests/integration/snapshots/integration__completion__latex__user_command.snap
2021/10/10 | 5361 | support/texlab/src/features/completion/component_command.rs
-2021/10/10 | 532390 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
+2021/10/10 | 532 | macros/latex/contrib/phfextendedabstract/README.md
+2021/10/10 | 5302 | macros/latex/contrib/phfthm/pkg.mk
+2021/10/10 | 5302 | macros/latex/contrib/phfqit/pkg.mk
+2021/10/10 | 5302 | macros/latex/contrib/phfnote/pkg.mk
+2021/10/10 | 5302 | macros/latex/contrib/phfextendedabstract/pkg.mk
+2021/10/10 | 5302 | macros/latex/contrib/phfcc/pkg.mk
2021/10/10 | 5296 | support/texlab/src/features/definition/string.rs
2021/10/10 | 5267 | support/texlab/src/features/completion/color_model.rs
-2021/10/10 | 52485 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
2021/10/10 | 521 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__structure_invalid_nesting.snap
2021/10/10 | 5217 | support/texlab/src/features/completion/include.rs
2021/10/10 | 519 | support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__string_complete.snap
2021/10/10 | 519 | support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__string_casing.snap
2021/10/10 | 517 | support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__string_missing_quote.snap
2021/10/10 | 517 | support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__string_incomplete.snap
-2021/10/10 | 51789 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
2021/10/10 | 5149 | support/texlab/docs/previewing.md
2021/10/10 | 51420 | support/texlab/src/syntax/build_log.rs
-2021/10/10 | 51314 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
-2021/10/10 | 51197 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
-2021/10/10 | 51110 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
-2021/10/10 | 510893 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
2021/10/10 | 5041 | support/texlab/src/features/rename/entry.rs
-2021/10/10 | 50312 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
2021/10/10 | 4994 | support/texlab/src/capabilities.rs
-2021/10/10 | 49889 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
2021/10/10 | 497 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_error3.snap
2021/10/10 | 4948 | support/texlab/tests/integration/snapshots/integration__completion__latex__class_import.snap
2021/10/10 | 4940 | support/texlab/src/features/completion/acronym_ref.rs
2021/10/10 | 491 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__caption_minimal.snap
2021/10/10 | 4916 | support/texlab/src/features/highlight/label.rs
2021/10/10 | 490 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_name_with_counter.snap
-2021/10/10 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2021/10/10 | 489 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__caption_minimal_error.snap
2021/10/10 | 488 | support/texlab/src/range.rs
-2021/10/10 | 483088 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
-2021/10/10 | 48237 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
2021/10/10 | 4814 | support/texlab/src/features/completion/tikz_library.rs
2021/10/10 | 480 | support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__preamble_complete.snap
2021/10/10 | 480 | support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__preamble_casing.snap
2021/10/10 | 479 | support/texlab/src/features/highlight.rs
2021/10/10 | 4769 | support/texlab/src/features/completion/component_environment.rs
-2021/10/10 | 476952 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
2021/10/10 | 4751 | support/texlab/src/citation.rs
2021/10/10 | 4736 | support/texlab/src/features/rename/label.rs
2021/10/10 | 472 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__math_operator_simple.snap
2021/10/10 | 4729 | support/texlab/src/citation/bibutils.rs
2021/10/10 | 4712 | support/texlab/src/diagnostics/bibtex.rs
2021/10/10 | 470 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_range_simple.snap
-2021/10/10 | 46900 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
2021/10/10 | 468 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_range_error.snap
2021/10/10 | 464 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__command_definition_no_argc.snap
2021/10/10 | 462 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_name_with_description.snap
-2021/10/10 | 462087 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
-2021/10/10 | 45961 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
-2021/10/10 | 45960 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
+2021/10/10 | 461269 | macros/latex/contrib/phfqit/phfqit.pdf
2021/10/10 | 45906 | support/texlab/src/syntax/latex/parser.rs
-2021/10/10 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2021/10/10 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2021/10/10 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2021/10/10 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
-2021/10/10 | 45305 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2021/10/10 | 4579 | graphics/mcf2graph/README
2021/10/10 | 450 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_multiple.snap
+2021/10/10 | 44742 | graphics/mcf2graph/mcf_man_soc.mf
2021/10/10 | 446 | support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__preamble_missing_end.snap
2021/10/10 | 4427 | support/texlab/README.md
2021/10/10 | 4407 | support/texlab/src/component_db.rs
+2021/10/10 | 43931 | macros/latex/contrib/phfextendedabstract/phfextendedabstract.dtx
2021/10/10 | 4380 | support/texlab/src/syntax/latex/kind.rs
-2021/10/10 | 43402 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
2021/10/10 | 4314 | support/texlab/src/diagnostics/latex.rs
-2021/10/10 | 43037 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
-2021/10/10 | 42992 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
2021/10/10 | 428 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__import_simple.snap
-2021/10/10 | 42866 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
2021/10/10 | 426 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_prenote.snap
-2021/10/10 | 42683 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
2021/10/10 | 425 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__generic_command_args.snap
2021/10/10 | 425 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__lexer__tests__comment.snap
-2021/10/10 | 42410 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
2021/10/10 | 4238 | support/texlab/src/features/completion/glossary_ref.rs
2021/10/10 | 4190 | support/texlab/tests/integration/snapshots/integration__completion__bibtex__field_incomplete_entry.snap
2021/10/10 | 4190 | support/texlab/tests/integration/snapshots/integration__completion__bibtex__field_complete_entry.snap
2021/10/10 | 416 | support/texlab/tests/integration/snapshots/integration__workspace_symbol__filter_type_figure.snap
2021/10/10 | 4165 | support/texlab/tests/integration/snapshots/integration__completion__bibtex__entry_type_empty_name.snap
2021/10/10 | 411 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_multiple.snap
-2021/10/10 | 41156 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
+2021/10/10 | 411573 | macros/latex/contrib/phfcc/phfcc.pdf
2021/10/10 | 40 | macros/latex/contrib/debate/DEPENDS.txt
2021/10/10 | 4091 | support/texlab/src/features/completion/theorem.rs
2021/10/10 | 4060 | support/texlab/src/features/hover/string_ref.rs
2021/10/10 | 4053 | support/texlab/tests/integration/snapshots/integration__completion__latex__package_import.snap
-2021/10/10 | 40226 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
2021/10/10 | 401 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_multiple_keys.snap
2021/10/10 | 4014 | support/texlab/src/features/hover/citation.rs
-2021/10/10 | 400472 | systems/texlive/tlnet/archive/texlive-scripts.doc.r60716.tar.xz
+2021/10/10 | 400744 | macros/latex/contrib/phfthm/phfthm.pdf
2021/10/10 | 3994 | support/texlab/src/workspace/storage.rs
2021/10/10 | 3993 | support/texlab/src/features/lsp_kinds.rs
2021/10/10 | 3982 | support/texlab/src/features/definition/command.rs
2021/10/10 | 3935 | support/texlab/docs/options.md
2021/10/10 | 3928 | support/texlab/src/features/definition/entry.rs
-2021/10/10 | 392720 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
-2021/10/10 | 39137 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
-2021/10/10 | 38164 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
+2021/10/10 | 382758 | graphics/mcf2graph/mcf_manual.pdf
2021/10/10 | 380190 | support/texlab/docs/demo.gif
2021/10/10 | 3797 | macros/luatex/generic/lua-widow-control/lwc-sample.tex
-2021/10/10 | 37799 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
-2021/10/10 | 37359 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
-2021/10/10 | 37249 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2021/10/10 | 37652 | macros/latex/contrib/phfnote/naturemagdoi.bst
2021/10/10 | 3707 | support/texlab/src/features/symbol/types.rs
2021/10/10 | 3693 | support/texlab/src/features/hover/field.rs
2021/10/10 | 3670 | support/texlab/src/features/hover/entry_type.rs
2021/10/10 | 366 | support/texlab/src/syntax/latex/analysis/environment.rs
-2021/10/10 | 36605 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
2021/10/10 | 364 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__math_operator_no_impl.snap
2021/10/10 | 361 | support/texlab/src/req_queue.rs
2021/10/10 | 3615 | support/texlab/src/features/definition/document.rs
@@ -266,7 +529,6 @@
2021/10/10 | 3596 | support/texlab/src/workspace/parent_expand.rs
2021/10/10 | 358 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_range_incomplete.snap
2021/10/10 | 357 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__graphics_include_simple.snap
-2021/10/10 | 35707 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
2021/10/10 | 356 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__command_definition_no_impl.snap
2021/10/10 | 355 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__biblatex_include_simple.snap
2021/10/10 | 3553 | support/texlab/src/features/symbol.rs
@@ -275,12 +537,9 @@
2021/10/10 | 354 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__command_definition_no_impl_error.snap
2021/10/10 | 353 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__verbatim_include_simple.snap
2021/10/10 | 35149 | support/texlab/LICENSE
-2021/10/10 | 35069 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
2021/10/10 | 347 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_redundant_comma.snap
-2021/10/10 | 34694 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
2021/10/10 | 3467 | support/texlab/src/features/completion/types.rs
2021/10/10 | 345 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__tikz_library_import_simple.snap
-2021/10/10 | 345971 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
2021/10/10 | 343 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__pgf_library_import_simple.snap
2021/10/10 | 342 | support/texlab/src/syntax.rs
2021/10/10 | 341 | support/texlab/src/syntax/latex/analysis/command.rs
@@ -291,48 +550,35 @@
2021/10/10 | 337 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__svg_include_simple.snap
2021/10/10 | 337 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_simple.snap
2021/10/10 | 3364 | support/texlab/src/features/symbol/bibtex.rs
-2021/10/10 | 33630 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
-2021/10/10 | 33477 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
2021/10/10 | 331 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_reference_simple.snap
2021/10/10 | 3317 | support/texlab/src/features/forward_search.rs
-2021/10/10 | 330542 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
2021/10/10 | 329 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__inkscape_include_simple.snap
2021/10/10 | 32725 | support/texlab/src/server.rs
2021/10/10 | 325 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__latex_input_simple.snap
-2021/10/10 | 32494 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
-2021/10/10 | 324938 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
2021/10/10 | 3243 | support/texlab/src/workspace/document.rs
2021/10/10 | 321 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__latex_include_simple.snap
2021/10/10 | 3181 | support/texlab/tests/integration/workspace_symbol.rs
+2021/10/10 | 317 | macros/latex/contrib/phfnote/Makefile
2021/10/10 | 3167 | support/texlab/src/diagnostics/chktex.rs
-2021/10/10 | 31609 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
-2021/10/10 | 31552 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
2021/10/10 | 314 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__import_incomplete.snap
2021/10/10 | 314 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__glossary_entry_reference_simple.snap
2021/10/10 | 313 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__equation_label_reference_simple.snap
-2021/10/10 | 31307 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
2021/10/10 | 312 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_reference_simple.snap
-2021/10/10 | 31232 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
+2021/10/10 | 312868 | graphics/mcf2graph/mcf_example.pdf
2021/10/10 | 3122 | support/texlab/src/features/completion/color.rs
-2021/10/10 | 311789 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
2021/10/10 | 310 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_definition_simple.snap
-2021/10/10 | 30806 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
2021/10/10 | 3072 | support/texlab/src/features/rename/command.rs
2021/10/10 | 3043 | support/texlab/src/features/hover/component.rs
2021/10/10 | 302 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_error4.snap
2021/10/10 | 301 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_simple.snap
2021/10/10 | 3017 | support/texlab/src/options.rs
-2021/10/10 | 30053 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
2021/10/10 | 299 | support/texlab/src/features/formatting/snapshots/texlab__features__formatting__bibtex_internal__tests__wrap_long_lines.snap
-2021/10/10 | 29852 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
2021/10/10 | 2984 | support/texlab/src/workspace/watch.rs
2021/10/10 | 297 | support/texlab/tests/integration/snapshots/integration__hover__label_theorem_child_file_mumber.snap
-2021/10/10 | 295332 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
2021/10/10 | 294 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_star.snap
2021/10/10 | 294 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_simple.snap
2021/10/10 | 2906 | support/texlab/tests/integration/snapshots/integration__completion__bibtex__command_incomplete_entry.snap
2021/10/10 | 2906 | support/texlab/tests/integration/snapshots/integration__completion__bibtex__command_complete_entry.snap
-2021/10/10 | 29059 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
2021/10/10 | 2903 | support/texlab/tests/integration/snapshots/integration__completion__latex__label.snap
2021/10/10 | 289 | support/texlab/tests/integration/snapshots/integration__hover__label_theorem_child_file.snap
2021/10/10 | 2897 | support/texlab/tests/integration/snapshots/integration__completion__latex__class_command.snap
@@ -342,60 +588,37 @@
2021/10/10 | 2873 | support/texlab/tests/integration/snapshots/integration__completion__latex__package_environment.snap
2021/10/10 | 2863 | support/texlab/tests/integration/snapshots/integration__completion__latex__preselect_environment.snap
2021/10/10 | 285 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__unmatched_brackets_with_group.snap
-2021/10/10 | 284704 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
-2021/10/10 | 28400 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
2021/10/10 | 283 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__brace_group_simple.snap
-2021/10/10 | 283991 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2021/10/10 | 283010 | macros/latex/contrib/phfextendedabstract/phfextendedabstract.pdf
2021/10/10 | 2825 | support/texlab/tests/integration/snapshots/integration__completion__latex__pgf_library.snap
2021/10/10 | 281 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__class_include_empty.snap
2021/10/10 | 281 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__brace_group_missing_end.snap
-2021/10/10 | 28189 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
2021/10/10 | 2801 | support/texlab/src/config.rs
2021/10/10 | 279 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_empty.snap
-2021/10/10 | 2797939 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
2021/10/10 | 277 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__lexer__tests__command_with_star.snap
2021/10/10 | 2773 | support/texlab/tests/integration/snapshots/integration__completion__latex__package_command.snap
-2021/10/10 | 27731 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
-2021/10/10 | 274920 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
-2021/10/10 | 27395 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2021/10/10 | 27363 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
2021/10/10 | 272679 | macros/luatex/generic/lua-widow-control/lua-widow-control.pdf
-2021/10/10 | 27187 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
2021/10/10 | 2717 | support/texlab/src/features/definition/label.rs
2021/10/10 | 269019 | install/macros/luatex/generic/lua-widow-control.tds.zip
-2021/10/10 | 2671403 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
2021/10/10 | 266055 | macros/luatex/generic/lua-widow-control.zip
2021/10/10 | 2658 | support/texlab/tests/integration/snapshots/integration__completion__latex__color_name.snap
2021/10/10 | 2657 | support/texlab/tests/integration/snapshots/integration__document_symbol__enumerate_nested.snap
2021/10/10 | 2620 | support/texlab/src/distro/miktex.rs
2021/10/10 | 26161 | support/texlab/texlab.pdf
2021/10/10 | 2614 | support/texlab/src/features/formatting/latexindent.rs
-2021/10/10 | 258860 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
2021/10/10 | 2586 | support/texlab/texlab.tex
2021/10/10 | 2564 | support/texlab/src/workspace/children_expand.rs
-2021/10/10 | 25629606 | systems/texlive/tlnet/install-tl.zip
-2021/10/10 | 254820 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
-2021/10/10 | 25236 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
-2021/10/10 | 250309 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
-2021/10/10 | 25023 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
-2021/10/10 | 24991 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
2021/10/10 | 247 | support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_no_fields.snap
2021/10/10 | 2478 | support/texlab/tests/integration/snapshots/integration__completion__latex__theorem_environment.snap
-2021/10/10 | 244817 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2021/10/10 | 244747 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
2021/10/10 | 243 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_empty.snap
2021/10/10 | 2439 | macros/latex/contrib/debate/debate.tex
-2021/10/10 | 243391 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
2021/10/10 | 23961 | support/texlab/src/features/completion.rs
-2021/10/10 | 23884 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
2021/10/10 | 237088 | macros/latex/contrib/debate.zip
2021/10/10 | 2361 | support/texlab/src/features/semantic/legend.rs
2021/10/10 | 235941 | macros/latex/contrib/debate/debate.pdf
2021/10/10 | 2353 | support/texlab/src/syntax/latex/analysis/explicit_link.rs
2021/10/10 | 234 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__lexer__tests__escape_sequence.snap
2021/10/10 | 2337 | support/texlab/src/features/completion/begin_command.rs
-2021/10/10 | 23345 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
-2021/10/10 | 2313656 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2021/10/10 | 22741 | support/texlab/tests/integration/completion.rs
2021/10/10 | 225 | support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_no_fields_missing_comma.snap
2021/10/10 | 2250 | support/texlab/docs/lsp_kinds.md
@@ -404,35 +627,26 @@
2021/10/10 | 2221 | support/texlab/tests/integration/snapshots/integration__completion__bibtex__entry_type_incomplete.snap
2021/10/10 | 2218 | support/texlab/tests/integration/hover.rs
2021/10/10 | 2209 | support/texlab/src/workspace/api.rs
-2021/10/10 | 22030 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
+2021/10/10 | 2203 | macros/latex/contrib/phfnote/phfnote.ins
2021/10/10 | 2171 | support/texlab/src/syntax/latex/analysis/distro_file.rs
-2021/10/10 | 215225 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
2021/10/10 | 2136 | systems/texlive/tlnet/archive/truthtable.r60717.tar.xz
-2021/10/10 | 21185 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
+2021/10/10 | 2117 | graphics/mcf2graph/mcf_exa_soc.mf
2021/10/10 | 2114 | support/texlab/Cargo.toml
2021/10/10 | 2108 | support/texlab/src/distro.rs
-2021/10/10 | 20874821 | systems/texlive/tlnet/install-tl-windows.exe
2021/10/10 | 2084 | support/texlab/src/dispatch.rs
-2021/10/10 | 207919 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
2021/10/10 | 2075 | macros/latex/contrib/easybook/easybook.ins
2021/10/10 | 2070 | support/texlab/src/diagnostics/build_log.rs
2021/10/10 | 206 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__unmatched_brackets.snap
2021/10/10 | 206 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__unmatched_braces.snap
-2021/10/10 | 206580 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
2021/10/10 | 205 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__hello_world.snap
-2021/10/10 | 202819 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
2021/10/10 | 2021 | support/texlab/docs/custom_messages.md
2021/10/10 | 2019 | support/texlab/src/distro/kpsewhich.rs
-2021/10/10 | 20128 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
-2021/10/10 | 2006280 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
2021/10/10 | 1998 | support/texlab/src/lang_data.rs
-2021/10/10 | 199527 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
+2021/10/10 | 1990 | macros/latex/contrib/phfextendedabstract/phfextendedabstract.ins
2021/10/10 | 1989 | macros/latex/contrib/debate/debate.sty
-2021/10/10 | 198387 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
-2021/10/10 | 196852 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
-2021/10/10 | 196427 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
-2021/10/10 | 195699 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
-2021/10/10 | 194112 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
+2021/10/10 | 1964 | macros/latex/contrib/phfthm/phfthm.ins
+2021/10/10 | 1964 | macros/latex/contrib/phfqit/phfqit.ins
+2021/10/10 | 1962 | macros/latex/contrib/phfcc/phfcc.ins
2021/10/10 | 1930 | support/texlab/src/syntax/latex/analysis/label_name.rs
2021/10/10 | 19208 | macros/luatex/generic/lua-widow-control/lwc-documentation.tex
2021/10/10 | 1917 | support/texlab/tests/integration/snapshots/integration__completion__latex__color_model_define_color.snap
@@ -440,35 +654,26 @@
2021/10/10 | 1886 | support/texlab/src/uri.rs
2021/10/10 | 1859 | support/texlab/src/syntax/latex/analysis/types.rs
2021/10/10 | 1854 | support/texlab/tests/integration/snapshots/integration__document_symbol__theorem_nested.snap
+2021/10/10 | 184025 | graphics/mcf2graph/mcf_mplib_exa.pdf
2021/10/10 | 183 | support/texlab/CONTRIBUTING.md
2021/10/10 | 181 | support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__junk.snap
-2021/10/10 | 18161 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
-2021/10/10 | 180230 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
-2021/10/10 | 179865 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
-2021/10/10 | 17966 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
2021/10/10 | 1791 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__structure_nested.snap
2021/10/10 | 1789 | support/texlab/src/features/completion/util.rs
-2021/10/10 | 178342 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
2021/10/10 | 1780 | support/texlab/src/diagnostics.rs
2021/10/10 | 17242 | support/texlab/src/syntax/latex/cst.rs
2021/10/10 | 170 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__generic_command_empty.snap
-2021/10/10 | 1708548 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
-2021/10/10 | 169342 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
-2021/10/10 | 16894302 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
2021/10/10 | 1687 | support/texlab/tests/integration/snapshots/integration__document_symbol__enumerate_flat.snap
2021/10/10 | 166 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__generic_command_escape.snap
2021/10/10 | 1662 | support/texlab/src/syntax/bibtex/lexer.rs
-2021/10/10 | 16436 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
+2021/10/10 | 163657 | support/TeX4ht/source/ChangeLog
2021/10/10 | 16361 | support/texlab/src/citation/ris.rs
-2021/10/10 | 16343 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
+2021/10/10 | 16122 | graphics/mcf2graph/mcf_mplib_exa.tex
2021/10/10 | 16053 | support/texlab/CHANGELOG.md
-2021/10/10 | 159524 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
2021/10/10 | 1593 | support/texlab/src/client.rs
+2021/10/10 | 15891 | graphics/mcf2graph/CHANGELOG
2021/10/10 | 1578 | support/texlab/src/syntax/latex/analysis/implicit_link.rs
-2021/10/10 | 154711 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
-2021/10/10 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2021/10/10 | 153921 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
-2021/10/10 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2021/10/10 | 157027 | macros/latex/contrib/phfnote/phfnote.dtx
+2021/10/10 | 1534858 | support/TeX4ht/source/tex4ht-fonts-noncjk.tex
2021/10/10 | 152 | support/texlab/tests/integration/snapshots/integration__completion__latex__citation_after.snap
2021/10/10 | 1494 | support/texlab/tests/integration/snapshots/integration__document_symbol__section_nested.snap
2021/10/10 | 1494 | macros/luatex/generic/lua-widow-control/lwc-documentation.bib
@@ -477,52 +682,32 @@
2021/10/10 | 148 | support/texlab/tests/integration/snapshots/integration__completion__bibtex__entry_type_empty_name_before.snap
2021/10/10 | 148 | support/texlab/tests/integration/snapshots/integration__completion__bibtex__empty_document.snap
2021/10/10 | 1475 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acronym_declaration.snap
-2021/10/10 | 147409 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
-2021/10/10 | 1466195 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2021/10/10 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2021/10/10 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
2021/10/10 | 144676 | systems/texlive/tlnet/archive/truthtable.doc.r60717.tar.xz
-2021/10/10 | 14335 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
2021/10/10 | 14223 | support/texlab/src/features/symbol/latex.rs
-2021/10/10 | 1415701 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
2021/10/10 | 1413 | support/texlab/tests/integration/snapshots/integration__document_symbol__float_nested.snap
2021/10/10 | 1405 | support/texlab/tests/integration/snapshots/integration__document_symbol__equation_nested.snap
2021/10/10 | 1403 | macros/luatex/generic/lua-widow-control/t-lua-widow-control.mkxl
+2021/10/10 | 139 | macros/latex/contrib/phfextendedabstract/Makefile
2021/10/10 | 1398 | support/texlab/tests/integration/snapshots/integration__document_symbol__theorem_flat.snap
2021/10/10 | 1374 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_definition_options.snap
2021/10/10 | 1365 | support/texlab/tests/integration/snapshots/integration__workspace_symbol__filter_type_section.snap
-2021/10/10 | 1365677 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
-2021/10/10 | 1364658 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2021/10/10 | 136385 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
-2021/10/10 | 136228 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
-2021/10/10 | 13459 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
-2021/10/10 | 1342958 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
-2021/10/10 | 133923 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
-2021/10/10 | 1301195 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
-2021/10/10 | 1287266 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
2021/10/10 | 1286 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_nested_missing_braces.snap
2021/10/10 | 1282 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__structure_enum_item.snap
2021/10/10 | 126 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__parameter.snap
2021/10/10 | 1269 | support/texlab/src/line_index_ext.rs
-2021/10/10 | 1267145 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
-2021/10/10 | 1266938 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
2021/10/10 | 1265 | support/texlab/src/features/hover.rs
2021/10/10 | 125 | support/texlab/tests/integration/main.rs
2021/10/10 | 124 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__parameter_error.snap
2021/10/10 | 124 | support/texlab/src/features/formatting/snapshots/texlab__features__formatting__bibtex_internal__tests__concatenation.snap
2021/10/10 | 12489 | support/texlab/src/features/formatting/bibtex_internal.rs
2021/10/10 | 1243 | support/texlab/tests/integration/issues.rs
-2021/10/10 | 124333 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
2021/10/10 | 123 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__lexer__tests__invalid_parameter.snap
2021/10/10 | 12386 | macros/luatex/generic/lua-widow-control/lua-widow-control.lua
2021/10/10 | 1212 | support/texlab/tests/integration/snapshots/integration__completion__latex__citation.snap
2021/10/10 | 1209 | support/texlab/tests/integration/snapshots/integration__completion__latex__color_model_define_color_set.snap
-2021/10/10 | 119659 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
2021/10/10 | 1185 | macros/latex/contrib/debate/README.md
2021/10/10 | 117 | support/texlab/src/features/formatting/snapshots/texlab__features__formatting__bibtex_internal__tests__command.snap
-2021/10/10 | 1169720 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
-2021/10/10 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
-2021/10/10 | 115328 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2021/10/10 | 116868 | graphics/mcf2graph/mcf2graph.mf
2021/10/10 | 11519 | support/texlab/tests/integration/document_symbol.rs
2021/10/10 | 114 | support/texlab/src/features/formatting/snapshots/texlab__features__formatting__bibtex_internal__tests__trailing_comma.snap
2021/10/10 | 114 | support/texlab/src/features/formatting/snapshots/texlab__features__formatting__bibtex_internal__tests__insert_braces.snap
@@ -530,40 +715,32 @@
2021/10/10 | 1141 | support/texlab/src/syntax/latex/analysis.rs
2021/10/10 | 1138 | support/texlab/src/features/rename.rs
2021/10/10 | 1136 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_nested.snap
-2021/10/10 | 112988 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2021/10/10 | 112274 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
2021/10/10 | 111 | support/texlab/src/features/formatting/snapshots/texlab__features__formatting__bibtex_internal__tests__preamble.snap
2021/10/10 | 1115 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_definition.snap
-2021/10/10 | 109026 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2021/10/10 | 111359 | macros/latex/contrib/phfthm/phfthm.dtx
+2021/10/10 | 110 | macros/latex/contrib/phfthm/Makefile
+2021/10/10 | 110 | macros/latex/contrib/phfqit/Makefile
+2021/10/10 | 109 | macros/latex/contrib/phfcc/Makefile
2021/10/10 | 1088 | macros/luatex/generic/lua-widow-control/lua-widow-control.sty
2021/10/10 | 1084 | support/texlab/src/features/definition.rs
-2021/10/10 | 108292 | systems/texlive/tlnet/archive/texlive-scripts.r60716.tar.xz
-2021/10/10 | 1081 | systems/win32/miktex/tm/packages/pr.ini
2021/10/10 | 1080 | support/texlab/tests/integration/snapshots/integration__completion__bibtex__entry_type_complete.snap
2021/10/10 | 107 | support/texlab/src/features/formatting/snapshots/texlab__features__formatting__bibtex_internal__tests__string.snap
2021/10/10 | 1078 | support/texlab/tests/integration/snapshots/integration__document_symbol__float_flat.snap
2021/10/10 | 1077 | support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_two_fields.snap
-2021/10/10 | 1076363 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
2021/10/10 | 1074 | support/texlab/tests/integration/snapshots/integration__document_symbol__equation_flat.snap
2021/10/10 | 1074 | support/texlab/src/distro/texlive.rs
2021/10/10 | 10656 | support/texlab/src/syntax/bibtex/parser.rs
2021/10/10 | 1051 | support/texlab/tests/integration/snapshots/integration__document_symbol__section_flat.snap
-2021/10/10 | 105117 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
2021/10/10 | 1050 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__class_include_options.snap
2021/10/10 | 1048 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_options.snap
2021/10/10 | 10438 | support/texlab/src/features/semantic/bibtex.rs
2021/10/10 | 1038 | support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__string_concatenation.snap
2021/10/10 | 1035 | support/texlab/tests/integration/snapshots/integration__workspace_symbol__filter_type_item.snap
-2021/10/10 | 103481 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2021/10/10 | 103442 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
2021/10/10 | 102 | support/texlab/src/features/formatting/snapshots/texlab__features__formatting__bibtex_internal__tests__parens.snap
2021/10/10 | 100 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__empty.snap
2021/10/10 | 1005 | support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_complete_parens.snap
-2021/10/10 | 100294 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
2021/10/09 | 8208 | systems/texlive/tlnet/archive/jlreq.source.r60713.tar.xz
-2021/10/09 | 6879 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2021/10/09 | 6729 | macros/latex/contrib/showlabels/style.css
-2021/10/09 | 597832 | systems/texlive/tlnet/archive/easybook.doc.r60714.tar.xz
2021/10/09 | 513780 | systems/texlive/tlnet/archive/jlreq.doc.r60713.tar.xz
2021/10/09 | 50146 | macros/latex/contrib/showlabels/showlabels.dtx
2021/10/09 | 4 | macros/latex/contrib/showlabels/VERSION
@@ -574,8 +751,6 @@
2021/10/09 | 19792 | macros/latex/contrib/showlabels/showlabels.html
2021/10/09 | 19106 | macros/latex/contrib/showlabels/lppl.txt
2021/10/09 | 1744 | macros/latex/contrib/showlabels/README
-2021/10/09 | 17268 | systems/texlive/tlnet/archive/easybook.source.r60714.tar.xz
-2021/10/09 | 17228 | systems/texlive/tlnet/archive/easybook.r60714.tar.xz
2021/10/09 | 146323 | macros/luatex/latex/truthtable.zip
2021/10/09 | 136856 | systems/texlive/tlnet/archive/jlreq.r60713.tar.xz
2021/10/08 | 9064 | systems/texlive/tlnet/archive/buctthesis.r60708.tar.xz
@@ -596,33 +771,33 @@
2021/10/08 | 358 | macros/luatex/latex/truthtable/res/exampletable.tex
2021/10/08 | 352 | macros/luatex/latex/truthtable/res/exampletableoutput.tex
2021/10/08 | 32276 | systems/texlive/tlnet/archive/luaxml.r60709.tar.xz
+2021/10/08 | 3221 | macros/latex/contrib/sttools/README.md
2021/10/08 | 280988 | language/japanese/jlreq/jlreq.cls
2021/10/08 | 25252 | systems/texlive/tlnet/archive/buctthesis.source.r60708.tar.xz
2021/10/08 | 2370443 | systems/win32/miktex/tm/packages/ptex-manual.tar.lzma
2021/10/08 | 210 | fonts/nahuatl/README.txt
+2021/10/08 | 2021 | macros/latex/contrib/sttools/sttools.ins
2021/10/08 | 19072007 | fonts/nahuatl/doc/nahuatl-es.pdf
2021/10/08 | 19070229 | fonts/nahuatl/doc/nahuatl-en.pdf
2021/10/08 | 1711 | systems/mac/mactex/Licenses.txt
2021/10/08 | 16728 | systems/texlive/tlnet/archive/hanzibox.source.r60710.tar.xz
2021/10/08 | 145325 | macros/luatex/latex/truthtable/truthtable.pdf
+2021/10/08 | 123989 | macros/latex/contrib/sttools/stfloats.pdf
2021/10/08 | 123428 | systems/texlive/tlnet/archive/luaxml.doc.r60709.tar.xz
+2021/10/08 | 122093 | macros/latex/contrib/sttools/midfloat.pdf
2021/10/08 | 11880 | macros/luatex/latex/truthtable/truthtable.tex
2021/10/08 | 118721 | language/japanese/jlreq/jlreq.pdf
2021/10/08 | 118643909 | macros/context/latest/cont-tmf.zip
2021/10/08 | 115310 | systems/win32/miktex/tm/packages/ptex-manual__source.tar.lzma
2021/10/08 | 1126 | macros/luatex/latex/truthtable/README.md
2021/10/08 | 10950170 | install/language/japanese/jlreq.tds.zip
+2021/10/08 | 106924 | macros/latex/contrib/sttools/stabular.pdf
2021/10/07 | 9854 | macros/luatex/generic/luaxml/luaxml-transform.lua
2021/10/07 | 932633 | macros/latex/contrib/buctthesis.zip
-2021/10/07 | 84591 | macros/xetex/latex/hanzibox/hanzibox.dtx
2021/10/07 | 61628 | fonts/nahuatl/font/pk/nahuatl.pk
-2021/10/07 | 516964 | macros/xetex/latex/hanzibox.zip
-2021/10/07 | 505041 | macros/xetex/latex/hanzibox/hanzibox.pdf
-2021/10/07 | 5049 | macros/xetex/latex/hanzibox/README.md
2021/10/07 | 41070 | macros/luatex/generic/luaxml/luaxml-namedentities.lua
2021/10/07 | 32630 | macros/luatex/generic/luaxml/luaxml.tex
2021/10/07 | 3239 | macros/luatex/generic/luaxml/luaxml-testxml.lua
-2021/10/07 | 242 | macros/xetex/latex/hanzibox/build.sh
2021/10/07 | 2265 | macros/luatex/generic/luaxml/luaxml-pretty.lua
2021/10/07 | 2168 | macros/luatex/generic/luaxml/luaxml-parse-query.lua
2021/10/07 | 2136 | fonts/nahuatl/latex/nahuatl.sty
@@ -637,6 +812,7 @@
2021/10/07 | 118191 | macros/luatex/generic/luaxml/luaxml.pdf
2021/10/07 | 1155 | macros/luatex/generic/luaxml/README
2021/10/07 | 11332 | macros/luatex/generic/luaxml/luaxml-mod-handler.lua
+2021/10/06 | 7912 | macros/latex/contrib/sttools/stabular.dtx
2021/10/06 | 3181483 | systems/win32/miktex/tm/packages/profcollege__doc.tar.lzma
2021/10/06 | 2105512 | systems/texlive/tlnet/archive/kpfonts-otf.doc.r60702.tar.xz
2021/10/06 | 2086687 | systems/win32/miktex/tm/packages/profcollege__source.tar.lzma
@@ -653,7 +829,6 @@
2021/10/05 | 95344 | systems/win32/miktex/tm/packages/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
2021/10/05 | 94754 | systems/win32/miktex/tm/packages/miktex-jpeg-bin-2.9.tar.lzma
2021/10/05 | 94352 | systems/win32/miktex/tm/packages/miktex-lua53-bin-2.9.tar.lzma
-2021/10/05 | 908556 | systems/texlive/tlnet/archive/tex4ht.r60699.tar.xz
2021/10/05 | 90154 | graphics/tpic2pdftex.zip
2021/10/05 | 87735 | systems/win32/miktex/tm/packages/miktex-png-bin-x64-2.9.tar.lzma
2021/10/05 | 8759 | systems/win32/miktex/tm/packages/miktex-md5-bin-x64-2.9.tar.lzma
@@ -756,6 +931,7 @@
2021/10/05 | 35074 | systems/win32/miktex/tm/packages/miktex-mspack-bin-x64-2.9.tar.lzma
2021/10/05 | 34620 | systems/win32/miktex/tm/packages/miktex-axohelp-bin-x64-2.9.tar.lzma
2021/10/05 | 345500 | systems/win32/miktex/tm/packages/miktex-xetex-bin-x64-2.9.tar.lzma
+2021/10/05 | 34213 | macros/latex/contrib/sttools/stfloats.dtx
2021/10/05 | 33611 | systems/win32/miktex/tm/packages/miktex-uriparser-bin-x64-2.9.tar.lzma
2021/10/05 | 33557 | systems/win32/miktex/tm/packages/miktex-upmendex-bin.tar.lzma
2021/10/05 | 330556 | systems/win32/miktex/tm/packages/miktex-cairo-bin-2.9.tar.lzma
@@ -823,6 +999,7 @@
2021/10/05 | 16324 | systems/win32/miktex/tm/packages/miktex-kpathsea-bin-2.9.tar.lzma
2021/10/05 | 159535 | systems/win32/miktex/tm/packages/miktex-hunspell-bin-x64-2.9.tar.lzma
2021/10/05 | 154787 | systems/win32/miktex/tm/packages/miktex-tex-bin-2.9.tar.lzma
+2021/10/05 | 15445 | macros/latex/contrib/sttools/texsort.dtx
2021/10/05 | 154197 | systems/win32/miktex/tm/packages/miktex-fontconfig-bin-x64-2.9.tar.lzma
2021/10/05 | 14951 | systems/win32/miktex/tm/packages/unifith.tar.lzma
2021/10/05 | 147381 | systems/win32/miktex/tm/packages/miktex-hunspell-bin-2.9.tar.lzma
@@ -830,7 +1007,6 @@
2021/10/05 | 1466134 | systems/win32/miktex/tm/packages/miktex-runtime-bin-x64-2.9.tar.lzma
2021/10/05 | 14320 | systems/win32/miktex/tm/packages/miktex-zzip-bin-x64-2.9.tar.lzma
2021/10/05 | 1420261 | systems/win32/miktex/tm/packages/miktex-dvisvgm-bin-x64-2.9.tar.lzma
-2021/10/05 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r60699.tar.xz
2021/10/05 | 136303 | systems/win32/miktex/tm/packages/miktex-mktex-bin-x64-2.9.tar.lzma
2021/10/05 | 136291 | systems/win32/miktex/tm/packages/miktex-fontconfig-bin-2.9.tar.lzma
2021/10/05 | 13448 | systems/win32/miktex/tm/packages/miktex-zzip-bin-2.9.tar.lzma
@@ -841,7 +1017,7 @@
2021/10/05 | 12975 | systems/win32/miktex/tm/packages/unifith__source.tar.lzma
2021/10/05 | 1287311 | systems/win32/miktex/tm/packages/miktex-dvisvgm-bin-2.9.tar.lzma
2021/10/05 | 124327 | systems/win32/miktex/tm/packages/miktex-mktex-bin-2.9.tar.lzma
-2021/10/05 | 1213096 | systems/texlive/tlnet/archive/tex4ht.source.r60699.tar.xz
+2021/10/05 | 12279 | macros/latex/contrib/sttools/midfloat.dtx
2021/10/05 | 119679 | systems/win32/miktex/tm/packages/miktex-dvips-bin-2.9.tar.lzma
2021/10/05 | 1169501 | systems/win32/miktex/tm/packages/miktex-poppler-bin-2.9.tar.lzma
2021/10/05 | 115214 | systems/win32/miktex/tm/packages/miktex-gregorio-bin-x64-2.9.tar.lzma
@@ -856,96 +1032,3 @@
2021/10/05 | 103716 | systems/win32/miktex/tm/packages/miktex-mfware-bin-x64-2.9.tar.lzma
2021/10/05 | 103346 | systems/win32/miktex/tm/packages/miktex-lua53-bin-x64-2.9.tar.lzma
2021/10/05 | 100335 | systems/win32/miktex/tm/packages/miktex-epstopdf-bin-2.9.tar.lzma
-2021/10/04 | 983380 | systems/texlive/tlnet/archive/wintools.win32.doc.r60685.tar.xz
-2021/10/04 | 949 | macros/latex/contrib/euclideangeometry/README.txt
-2021/10/04 | 8618 | macros/latex/contrib/unifith/examples/Dottorato.tex
-2021/10/04 | 844 | systems/texlive/tlnet/archive/collection-langenglish.r60687.tar.xz
-2021/10/04 | 816 | systems/texlive/tlnet/archive/pedigree-perl.source.r60686.tar.xz
-2021/10/04 | 78146 | macros/latex/contrib/uantwerpendocs/uantwerpencoursetext-example.pdf
-2021/10/04 | 7006 | fonts/kpfonts-otf/README.md
-2021/10/04 | 68216 | macros/latex/contrib/euclideangeometry/euclideangeometry.dtx
-2021/10/04 | 66440 | fonts/kpfonts-otf/fonts/KpMono-Italic.otf
-2021/10/04 | 656085 | macros/latex/contrib/euclideangeometry/euclideangeometry-man.pdf
-2021/10/04 | 65136 | fonts/kpfonts-otf/fonts/KpMono-BoldItalic.otf
-2021/10/04 | 6356 | systems/win32/miktex/tm/packages/multiaudience__source.tar.lzma
-2021/10/04 | 6040 | systems/texlive/tlnet/archive/multiaudience.source.r60688.tar.xz
-2021/10/04 | 59052 | fonts/kpfonts-otf/fonts/KpMono-Regular.otf
-2021/10/04 | 57916 | fonts/kpfonts-otf/fonts/KpMono-Bold.otf
-2021/10/04 | 557226 | systems/win32/miktex/tm/packages/multiaudience__doc.tar.lzma
-2021/10/04 | 556568 | systems/texlive/tlnet/archive/multiaudience.doc.r60688.tar.xz
-2021/10/04 | 52999 | dviware/dviljk/Makefile.in
-2021/10/04 | 52235 | fonts/utilities/ps2pk/Makefile.in
-2021/10/04 | 512 | systems/texlive/tlnet/archive/tex-vpat.r60687.tar.xz
-2021/10/04 | 5120404 | systems/texlive/tlnet/archive/wintools.win32.r60685.tar.xz
-2021/10/04 | 497301 | macros/latex/contrib/unifith/examples/Laurea.pdf
-2021/10/04 | 494976 | macros/latex/contrib/unifith/examples/Dottorato.pdf
-2021/10/04 | 49369 | macros/latex/contrib/uantwerpendocs/uantwerpenletter-example.pdf
-2021/10/04 | 480 | fonts/kpfonts-otf/tex/KpLight.fontspec
-2021/10/04 | 47656 | indexing/makeindexk/Makefile.in
-2021/10/04 | 469 | fonts/kpfonts-otf/tex/KpRoman.fontspec
-2021/10/04 | 463894 | macros/latex/contrib/euclideangeometry/euclideangeometry.pdf
-2021/10/04 | 458264 | fonts/kpfonts-otf/fonts/KpMath-Light.otf
-2021/10/04 | 45341 | dviware/dviljk/aclocal.m4
-2021/10/04 | 44310 | indexing/makeindexk/aclocal.m4
-2021/10/04 | 44310 | dviware/dvidvi/aclocal.m4
-2021/10/04 | 44273 | fonts/utilities/ps2pk/aclocal.m4
-2021/10/04 | 44086 | graphics/tpic2pdftex/aclocal.m4
-2021/10/04 | 44049 | support/lacheck/aclocal.m4
-2021/10/04 | 43852 | dviware/dvidvi/Makefile.in
-2021/10/04 | 431712 | fonts/kpfonts-otf/fonts/KpMath-Regular.otf
-2021/10/04 | 4305733 | fonts/kpfonts-otf.zip
-2021/10/04 | 41635 | support/lacheck/Makefile.in
-2021/10/04 | 3866830 | systems/win32/miktex/tm/packages/guide-latex-fr__source.tar.lzma
-2021/10/04 | 379446 | macros/latex/contrib/uantwerpendocs/uantwerpendocs.pdf
-2021/10/04 | 35900 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.ltx
-2021/10/04 | 35869 | graphics/tpic2pdftex/Makefile.in
-2021/10/04 | 349160 | systems/texlive/tlnet/archive/crossrefware.doc.r60689.tar.xz
-2021/10/04 | 3467958 | systems/win32/miktex/tm/packages/guide-latex-fr.tar.lzma
-2021/10/04 | 33293 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.ltx
-2021/10/04 | 3224605 | macros/latex/contrib/uantwerpendocs/beamerthemeuantwerpenuserguide.pdf
-2021/10/04 | 314474 | macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example2.pdf
-2021/10/04 | 2943952 | systems/texlive/tlnet/archive/circuit-macros.doc.r60690.tar.xz
-2021/10/04 | 287 | fonts/kpfonts-otf/tex/KpSans.fontspec
-2021/10/04 | 278724 | fonts/kpfonts-otf/fonts/KpMath-Sans.otf
-2021/10/04 | 266176 | systems/texlive/tlnet/archive/pedigree-perl.doc.r60686.tar.xz
-2021/10/04 | 220978 | macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example1.pdf
-2021/10/04 | 21057 | fonts/kpfonts-otf/tex/kpfonts-otf.sty
-2021/10/04 | 207823 | macros/latex/contrib/uantwerpendocs/uantwerpendocs.dtx
-2021/10/04 | 207522 | macros/latex/contrib/uantwerpendocs/uantwerpenreport-example.pdf
-2021/10/04 | 20650 | dviware/dviljk/win32/Makefile.in
-2021/10/04 | 198620 | fonts/kpfonts-otf/fonts/KpMath-Semibold.otf
-2021/10/04 | 196892 | fonts/kpfonts-otf/fonts/KpMath-Bold.otf
-2021/10/04 | 194582 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.pdf
-2021/10/04 | 191666 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.pdf
-2021/10/04 | 185 | fonts/kpfonts-otf/tex/KpMono.fontspec
-2021/10/04 | 184800 | systems/texlive/tlnet/archive/tex-vpat.doc.r60687.tar.xz
-2021/10/04 | 1814310 | fonts/kpfonts-otf/doc/unimath-kpfonts.pdf
-2021/10/04 | 1760 | systems/win32/miktex/tm/packages/multiaudience.tar.lzma
-2021/10/04 | 17236 | systems/texlive/tlnet/archive/pedigree-perl.r60686.tar.xz
-2021/10/04 | 16827 | fonts/kpfonts-otf/doc/unimath-kpfonts.ltx
-2021/10/04 | 163335 | support/TeX4ht/source/ChangeLog
-2021/10/04 | 15748 | systems/texlive/tlnet/archive/crossrefware.r60689.tar.xz
-2021/10/04 | 1516 | systems/texlive/tlnet/archive/multiaudience.r60688.tar.xz
-2021/10/04 | 1496 | systems/texlive/tlnet/archive/circuit-macros.r60690.tar.xz
-2021/10/04 | 149252 | systems/texlive/tlnet/tlpkg/TeXLive/TLUtils.pm
-2021/10/04 | 142856 | fonts/kpfonts-otf/fonts/KpRoman-BoldItalic.otf
-2021/10/04 | 140444 | fonts/kpfonts-otf/fonts/KpRoman-SemiboldItalic.otf
-2021/10/04 | 135332 | fonts/kpfonts-otf/fonts/KpRoman-LightItalic.otf
-2021/10/04 | 13433231 | install/macros/latex/contrib/uantwerpendocs.tds.zip
-2021/10/04 | 13345636 | macros/latex/contrib/uantwerpendocs.zip
-2021/10/04 | 132992 | fonts/kpfonts-otf/fonts/KpRoman-Italic.otf
-2021/10/04 | 132232 | fonts/kpfonts-otf/fonts/KpRoman-Bold.otf
-2021/10/04 | 131128 | fonts/kpfonts-otf/fonts/KpRoman-Regular.otf
-2021/10/04 | 130476 | fonts/kpfonts-otf/fonts/KpRoman-Light.otf
-2021/10/04 | 129480 | fonts/kpfonts-otf/fonts/KpRoman-Semibold.otf
-2021/10/04 | 1252520 | macros/latex/contrib/unifith.zip
-2021/10/04 | 123184 | macros/latex/contrib/uantwerpendocs/uantwerpenbamathesis-example.pdf
-2021/10/04 | 1146453 | macros/latex/contrib/euclideangeometry.zip
-2021/10/04 | 114136 | macros/latex/contrib/uantwerpendocs/uantwerpenexam-example2.pdf
-2021/10/04 | 112665 | macros/latex/contrib/uantwerpendocs/uantwerpenexam-example1.pdf
-2021/10/04 | 111128 | fonts/kpfonts-otf/fonts/KpSans-BoldItalic.otf
-2021/10/04 | 111088 | fonts/kpfonts-otf/fonts/KpSans-Italic.otf
-2021/10/04 | 1095341 | support/TeX4ht/source/tex4ht-4ht.tex
-2021/10/04 | 105991 | macros/latex/contrib/euclideangeometry/euclideangeometry-man.tex
-2021/10/04 | 103124 | fonts/kpfonts-otf/fonts/KpSans-Bold.otf
-2021/10/04 | 102540 | fonts/kpfonts-otf/fonts/KpSans-Regular.otf
diff --git a/graphics/mcf2graph/CHANGELOG b/graphics/mcf2graph/CHANGELOG
index 4ed3c84848..79b7e2d68c 100644
--- a/graphics/mcf2graph/CHANGELOG
+++ b/graphics/mcf2graph/CHANGELOG
@@ -1,6 +1,10 @@
*******************************************************************************
- Changelog of mcf2graph software package by Akira Yamaji 2021-09-20
+ Changelog of mcf2graph software package by Akira Yamaji 2021-10-10
*******************************************************************************
+[ver. 4.73 / 2021-10-10]
+ -update mcf_data_base.mcf
+ -update MCF manual,example
+
[ver. 4.72 / 2021-09-20]
-change syntax of beginfont()
keep file open 'f+' => 'v+'
diff --git a/graphics/mcf2graph/README b/graphics/mcf2graph/README
index aa2aee88f5..bf39e90947 100644
--- a/graphics/mcf2graph/README
+++ b/graphics/mcf2graph/README
@@ -1,7 +1,7 @@
********************************************************************************
mcf2graph : Convert Molecular Coding Format to graphics with METAFONT/METAPOST
Author : Akira Yamaji
- version : 4.72 2021-09-20
+ version : 4.73 2021-10-10
E-mail : mcf2graph@gmail.com
Located at : http://www.ctan.org/pkg/mcf2graph
********************************************************************************
diff --git a/graphics/mcf2graph/mcf2graph.mf b/graphics/mcf2graph/mcf2graph.mf
index 2dfefbba64..c6cedf1637 100644
--- a/graphics/mcf2graph/mcf2graph.mf
+++ b/graphics/mcf2graph/mcf2graph.mf
@@ -38,7 +38,7 @@
% Set to use plain.mp (label,arrow,atom) : mpost -s labeloffset=2 FILENAME
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
tracingstats:=1;
-message "* This is mcf2graph ver 4.72 2021.09.20";
+message "* This is mcf2graph ver 4.73 2021.10.10";
%-------------------------------------------------------------------------------------------------
newinternal cntA,cntB,cntM,minX,minY,maxX,maxY,sftX,sftY,com,par,envT,envB,lenT,lineT,angT,rotT,
crR,nA,nB,nC,nD,nE,nF,nS,nL,nR,nU,nP,xpos,ypos,markA,markB,saveA,saveB,bondL;
@@ -64,11 +64,11 @@ Atom:=8; Bond:=16; Brock:=32; Inverse:=64; Group:=32; Mol:=64;
Outside:=1; Inside:=2; Bothside:=Outside+Inside;
%-------------------------------------------------------------------------------------------------
a_prn_s:=ASCII("("); a_prn_e:=ASCII(")"); a_brc_s:=ASCII("{"); a_brc_e:=ASCII("}");
-a_brk_s:=ASCII("["); a_brk_e:=ASCII("]"); a_cmm:=ASCII(","); a_equ:=ASCII("=");
-a_ast:=ASCII("*"); a_sls:=ASCII("/"); a_gtn:=ASCII("<"); a_ltn:=ASCII(">"); a_and:=ASCII("&");
-a_dol:=ASCII("$"); a_hsh:=ASCII("#"); a_hat:=ASCII("^"); a_tld:=ASCII("~"); a_bqt:=ASCII("`");
+a_brk_s:=ASCII("["); a_brk_e:=ASCII("]"); a_cmm:=ASCII(","); a_equ:=ASCII("=");
+a_ast:=ASCII("*"); a_sls:=ASCII("/"); a_gtn:=ASCII("<"); a_ltn:=ASCII(">"); a_and:=ASCII("&");
+a_dol:=ASCII("$"); a_hsh:=ASCII("#"); a_hat:=ASCII("^"); a_tld:=ASCII("~"); a_bqt:=ASCII("`");
a_cln:=ASCII(":"); a_amk:=ASCII("@"); a_zero:=ASCII("0"); a_nine:=ASCII("9"); a_qut:=ASCII("'");
-a_bar:=ASCII("|");
+a_bar:=ASCII("|"); a_plus:=ASCII("+"); a_minus:=ASCII("-");
%--------------------------------------------------------------------------------------------------
let DIV= /; let MUL= *; let LT= <; let GT= >; let AND= &; let :: = : ; let == = =; let ef=elseif;
def ]]]=] ] ] enddef;
@@ -258,7 +258,7 @@ enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def beginfont(text s)=
begingroup
- save ',f_beginchar,f_ext,blen,ext,add,ang_br,fw_n,bw_n,at_colon,temp_tag,
+ save ',f_beginchar,f_ext,blen,ext,add,ang_br,fw_n,bw_n,at_colon,temp_tag,info_cnt,
mc,info,file_name_input,bond_cnt,warning_cnt,hideH_cnt,bondC,filter_s;
string info[],mc[],mc,file_name_input,temp_tag,filter_s;
%------------------------------------------------------------------------------------------------
@@ -275,7 +275,7 @@ def beginfont(text s)=
%------------------------------------------------------------------------------------------------
char_num:=char_num+1;
store_par(parameter_list);
- f_ext:=cntM:=mc_row:=inf_num:=f_EOF:=0;
+ f_ext:=cntM:=mc_row:=info_cnt:=f_EOF:=0;
%------------------------------------------------------------------------------------------------
for list=s:
at_colon:=scan_char(":",list,0,1);
@@ -287,6 +287,7 @@ def beginfont(text s)=
mc[mc_row]:=substring (fw_n-1,bw_n) of list;
mc:=mc&mc[mc_row];
ef at_colon>=1:
+ info_cnt:=info_cnt+1; info[info_cnt]:=list;
tag_s:=substring (0,at_colon-1) of list;
var_s:=substring (at_colon,length(list)) of list;
if tag_s="f":
@@ -386,7 +387,7 @@ enddef;
%-------------------------------------------------------------------------------------------------
def pickup_data_unit(expr t,v,f)=
begingroup
- save unit_cnt,f_end,semicol_cnt,f_match,var_n,info_s,tag_a,var_a;
+ save unit_cnt,f_end,semicol_cnt,f_match,var_n,tag_a,var_a,info_s;
string tag_a[],var_a[],info_s;
f_end:=unit_cnt:=semicol_cnt:=f_match:=inf_num:=0;
if t="n": var_n:=scantokens(v); fi
@@ -456,7 +457,7 @@ vardef scan_char(expr c,s,d,n)=
fi
n_s
enddef;
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def set_def_MC=
save /,//,/*,*/,**,*/*,~,^,',`,<,>,:,=,\,\\,*\,\*,*\*,@,@$,$,&,&$,#,##,{,},|,||,_,inside_def_MC;
inside_def_MC:=1;
@@ -577,7 +578,7 @@ def fuse_ring_size(expr a,b,c) =
elseif b==8:: CP(_mk_bond,45-(c-8)) for i==1 upto 5:: CP(_mk_bond,45+((c-8) DIV 3)) endfor fi
CP(_com,_len_e) if a<=0:: CP(_cyc_eB,a-b+2) else:: CP(_cyc_eB,a) fi
enddef;
-%==================================================================================================
+%=================================================================================================
vardef change_bond(expr a,b) =
save nCP;
if known b::
@@ -623,8 +624,8 @@ vardef change_atom(expr a,b)=
CP(_tmp_line,dm) CP(_tmp_rot,-35) CPx(a)(_group_si,O) CP(_com,_group_e)
ef b==SO:: CPe(a)(_chg_atom,S) CP(_com,_group_s) CP(_tmp_line,dm)
CPx(a)(_group_si,O) CP(_com,_group_e)
- ef b==n_:: CP(_com,_group_s) CP(_set_add,ASCII("-")) CP(_chg_add,a) CP(_com,_group_e)
- ef b==p_:: CP(_com,_group_s) CP(_set_add,ASCII("+")) CP(_chg_add,a) CP(_com,_group_e)
+ ef b==n_:: CP(_com,_group_s) CP(_set_add,a_minus) CP(_chg_add,a) CP(_com,_group_e)
+ ef b==p_:: CP(_com,_group_s) CP(_set_add,a_plus) CP(_chg_add,a) CP(_com,_group_e)
fi
ef pair b:: CP(_com,_group_s) CPx(a)(xpart(b),ypart(b)) CP(_com,_group_e)
ef color b:: color_list[incr cntC]:=b; CPe(a)(_set_colorA,cntC)
@@ -645,7 +646,7 @@ def com_par_ex(expr f)(expr c)(expr a,b)=
else:: com_par(_set_adr,c) com_par(a,b)
fi
enddef;
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def puts(expr POS)(expr STR)=
begingroup
save temp_c,temp_p;
@@ -669,7 +670,7 @@ def puts(expr POS)(expr STR)=
fi
endgroup
enddef;
-%==================================================================================================
+%=================================================================================================
def ext_setup=
pickup pencircle scaled ext_defaultline;
dotlabeldiam:=3bp;
@@ -689,7 +690,7 @@ def ext_setup=
def drawdblarrow = drawdblarrow_emu enddef;
fi
enddef;
-%--------------------------------------------------------------------------------------------------
+%-------------------------------------------------------------------------------------------------
def add_to_molecule(text TXT)=
begingroup
save w,h,n,l,p,am,aw,A,B,plus,minus,lonepair,__,**,=>,<<,/*;
@@ -726,7 +727,7 @@ def add_to_molecule(text TXT)=
TXT addto mol_stru[cntM] also currentpicture; clearit;
endgroup;
enddef;
-%--------------------------------------------------------------------------------------------------
+%-------------------------------------------------------------------------------------------------
def ext_to_font(text TXT)=
begingroup
save w,h,An,Bn,wd,ht,n,p,am,aw,__,**,<<,=>,/*;
@@ -751,14 +752,14 @@ def ext_to_font(text TXT)=
TXT addto mol_stru[0] also currentpicture; clearit; f_ext:=1;
endgroup;
enddef;
-%--------------------------------------------------------------------------------------------------
+%-------------------------------------------------------------------------------------------------
vardef image_emu(text TXT) =
save_picture:=currentpicture; currentpicture:=nullpicture;
TXT;
temp_picture:=currentpicture; currentpicture:=save_picture;
temp_picture
enddef;
-%--------------------------------------------------------------------------------------------------
+%-------------------------------------------------------------------------------------------------
vardef scan_picture(expr PIC,SD)=
save iw,erase_h,erase_v;
path erase_h,erase_v;
@@ -789,12 +790,12 @@ vardef scan_picture(expr PIC,SD)=
currentpicture:=temp_picture;
nA
enddef;
-%--------------------------------------------------------------------------------------------------
+%-------------------------------------------------------------------------------------------------
vardef llcorner_emu(expr b)= (scan_picture(b,3),scan_picture(b,1)) enddef;
vardef lrcorner_emu(expr b)= (scan_picture(b,4),scan_picture(b,1)) enddef;
vardef urcorner_emu(expr b)= (scan_picture(b,4),scan_picture(b,2)) enddef;
vardef ulcorner_emu(expr b)= (scan_picture(b,3),scan_picture(b,2)) enddef;
-%--------------------------------------------------------------------------------------------------
+%-------------------------------------------------------------------------------------------------
vardef circled_plus_add=
nA:=circlediam; nB:=circlepen;
image(draw fullcircle scaled nA wpcs nB;
@@ -809,7 +810,7 @@ enddef;
vardef lone_pair_add expr ANG=
image(draw (0,0) wpcs lonepairdiam; draw ((0,lonepairspace) rotated ANG) wpcs lonepairdiam;)
enddef;
-%--------------------------------------------------------------------------------------------------
+%-------------------------------------------------------------------------------------------------
vardef label_emu@#(expr OBJ,POS) = %% modified 'thelabel@#(expr s,z)' of plain.mp
save oft,fx,fy,wd_s,wd_c,pA,pB,pC,pD,sC;
pair oft,oft.lft,oft.rt,oft.top,oft.bot,oft.ulft,oft.llft,oft.urt,oft.lrt,pA,pB,pC,pD;
@@ -849,7 +850,7 @@ vardef label_emu@#(expr OBJ,POS) = %% modified 'thelabel@#(expr s,z)' of plain.m
enddef;
%-------------------------------------------------------------------------------------------------
vardef dotlabel_emu@#(expr OBJ,POS)= label_emu@#(OBJ,POS); draw POS wpcs dotlabeldiam; enddef;
-%==================================================================================================
+%=================================================================================================
def drawarrow_emu expr PATH = arrow_path:=PATH; draw_arrow enddef;
%-------------------------------------------------------------------------------------------------
def draw_arrow text t = %% modified 'drawarrow' of plain.mp
@@ -866,7 +867,7 @@ def draw_dblarrow text t =
shifted point infinity of arrow_path t;
draw arrow_path t
enddef;
-%==================================================================================================
+%=================================================================================================
arrow_head:=(0,0)--(ahlength,-(sind 0.5ahangle)*ahlength)--
(ahlength, (sind 0.5ahangle)*ahlength)--cycle;
%-------------------------------------------------------------------------------------------------
@@ -1167,12 +1168,12 @@ def add_atom(expr n)=
else: f_bra:=0; fi
if n=0: eB[cntB]:=cntA+1; f_term:=0; else: eB[cntB]:=n; f_term:=1; fi
enddef;
-%--------------------------------------------------------------------------------------------------
+%-------------------------------------------------------------------------------------------------
def check_adrA(expr n)=
if (n>iif(f_term=0,cntA+1,cntA))or(n<=0): errmessage("cntA=[ "&decimal(n)&" ]"); fi
enddef;
def check_adrB(expr n)= if (n>cntB)or(n<=0): errmessage("cntB=[ "&decimal(n)&" ]"); fi enddef;
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def proc_skeleton(expr a)=
markA:=markB:=cntA:=cntB:=f_bra:=rotT:=f_term:=0;
envT:=envB:=f_lineT:=f_rotT:=f_lenT:=f_envT:=0; lineT:=si; angT:=mangle;
@@ -1841,7 +1842,7 @@ enddef;
def proc_mf_out(expr f)=
message "["&decimal(char_num)&"]:"&inf_EN;
file_name_output:=jobname&"-mf.aux";
- printf "beginfont()";
+ printf "beginfont("&ditto&"NO:"&decimal(char_num)&ditto&","&ditto&"EN:"&inf_EN&ditto&")";
printf "MC(";
for i=1 upto mc_row: printf mc[i]; endfor
printf ")";
@@ -1935,7 +1936,7 @@ for i==2 upto 20:
![i]:='((_com,_len_ss),(_get_len,_tmp_len),! for j==2 upto i::,! endfor ,(_com,_len_ee));
endfor
Me:='(); Et:='(!); iPr:=?!:='(/_,!); tBu:=??!:='(/_,/_^60,60); !?!:='(!,?!); !??!:='(!,??!);
-n_:='((_set_add,ASCII("-"))); p_:='((_set_add,ASCII("+")));
+n_:='((_set_add,a_minus)); p_:='((_set_add,a_plus));
zero_wf:='(0~wf); zero_zf:='(0~zf); zero_dm:='(0~dm); zero_wv:='(0~wv);
%-------------------------------------------------------------------------------------------------
NH:='(N,/H~nl); N!:='(N,/_); N!2:='(N,/!); SO:='(S,//O); SOO:='(S,//O^-35,//O^35);
@@ -2106,10 +2107,10 @@ def query(text s)=
numeric unit_row_cnt[],order[],order_tbl[],filter_sign[],filter_p[];
unit_row:=f_mcf:=mc_row:=line_cnt:=info_cnt:=par_cnt:=key_cnt:=filter_cnt:=0;
unit_cnt:=1;
- %------------------------------------------------------------------------------------------------
+ %-----------------------------------------------------------------------------------------------
file_name_input:=default_data_file;
file_name_output:=default_temp_file;
- %------------------------------------------------------------------------------------------------
+ %-----------------------------------------------------------------------------------------------
for list=s:
at_colon:=scan_char(":",list,0,1);
at_equal:=scan_char("=",list,0,1);
@@ -2267,7 +2268,7 @@ vardef is_num(expr s)=
endfor
numeric_n
enddef;
-%--------------------------------------------------------------------------------------------------
+%-------------------------------------------------------------------------------------------------
vardef count_semicol(expr s)=
save nS;
nS:=at_semicol[0]:=0;
diff --git a/graphics/mcf2graph/mcf_data_base.mcf b/graphics/mcf2graph/mcf_data_base.mcf
index 8d41567570..7e088381ab 100644
--- a/graphics/mcf2graph/mcf_data_base.mcf
+++ b/graphics/mcf2graph/mcf_data_base.mcf
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% molecular data base file mcf_data_base.mcf by Akira Yamaji 2021.09.20
+% molecular data base file mcf_data_base.mcf by Akira Yamaji 2021.10.10
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% tag1:var1;tag2:var2;tag3:var3 .....
% first character of line "%" comment out
@@ -1977,13 +1977,14 @@ Cat:antibacterial;EN:Sulfamerazine;MW:264.303;EXA:1
+
<30,Ph,1:/NH2,@4,\,SOO,!,NH,!,|,Ph,{2,6}:N,3:/_
+------------------------------------------------------------------------------
-Cat:antibacterial;EN:Trimetoprim;MW:290.323;EXA:1
+Cat:antibacterial;EN:Trimethoprim;MW:290.323;EXA:1
+
-<30,Ph,{1,5}:N,6:/NH2,@3,\,!,|,Ph,{3,4,5}:/O!
+<30,Ph,{1,5}:N,{2,6}:/NH2,@3,\,!,|,Ph,{3,4,5}:/O!
+------------------------------------------------------------------------------
Cat:antibacterial;EN:Ofloxacin;MW:361.373;EXA:1
+
-<30,Ph,3=?6,(2,7)=?6[4],7:N,11:O,9:/COOH,10://O,13:/_,@1,\,|,?6,{1,4}:N,4:/!
+<30,Ph,3=?6,(2,7)=?6[4],9=dl,7:N,11:O,
+ 6:/F,9:/COOH,10://O,13:/_,@1,\,|,?6,{1,4}:N,4:/_
+------------------------------------------------------------------------------
Cat:antibacterial;EN:Ciprofloxacin;MW:331.347;EXA:1
+
@@ -2042,7 +2043,7 @@ Cat:antibacterial;EN:Sulfamethoxazole;MW:253.276;EXA:1
+------------------------------------------------------------------------------
Cat:antibacterial;EN:Pirimethamin;MW:248.714;EXA:1
+
-<30,?6,{1,4}=dl,{1,5}:N,4:/!,6://NH,@3,\,Ph,-3:/Cl
+<30,Ph,6:/Cl,@3,\,Ph,{-2,-4}:N,-1:/!,{-3,-5}:/NH2
+------------------------------------------------------------------------------
Cat:antibacterial;EN:Oxibendazole;MW:249.27;EXA:-
+
diff --git a/graphics/mcf2graph/mcf_exa_soc.mf b/graphics/mcf2graph/mcf_exa_soc.mf
index b5513ffbf0..65fc98818c 100644
--- a/graphics/mcf2graph/mcf_exa_soc.mf
+++ b/graphics/mcf2graph/mcf_exa_soc.mf
@@ -1,8 +1,8 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2021.09.20
+% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2021.10.10
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-input mcf2graph.mf; %%% it must be version 4.72
-message "* mcf_exa_soc 2021.09.20";
+input mcf2graph.mf; %%% it must be version 4.73
+message "* mcf_exa_soc 2021.10.10";
message "";
%------------------------------------------------------------------------------
fsize:=(35mm,24mm);
@@ -23,7 +23,7 @@ else: % mpost -s ahlength=7 mcf_exa_soc.mf
%------------------------------------------------------------------------------
%%%%query("Cat=biological","MW<200","s:MW");
%%%%query("Cat=biological","MW<150.0","s:EN");
-%%%%query("MW>=150","MW<=200","s:MW");
+%%%%query("MW>=150","MW<=250","s:MW");
%******************************************************************************
%%%% beginfont("t:EN","v:Caffeine") % select EN=Caffeine
forever:
diff --git a/graphics/mcf2graph/mcf_example.pdf b/graphics/mcf2graph/mcf_example.pdf
index 6d2b88c7e0..1cadd2296b 100644
--- a/graphics/mcf2graph/mcf_example.pdf
+++ b/graphics/mcf2graph/mcf_example.pdf
Binary files differ
diff --git a/graphics/mcf2graph/mcf_example.tex b/graphics/mcf2graph/mcf_example.tex
index a61439d39b..bf10feb5b3 100644
--- a/graphics/mcf2graph/mcf_example.tex
+++ b/graphics/mcf2graph/mcf_example.tex
@@ -10,7 +10,7 @@
%--------------------------------
%%%%\pdfpkresolution=1200
%--------------------------------
-%%%%%\edef\f@ext{pk}%
+%%%%\edef\f@ext{pk}%
\edef\f@ext{mps}%
%--------------------------------
\pagestyle{empty}
diff --git a/graphics/mcf2graph/mcf_man_soc.mf b/graphics/mcf2graph/mcf_man_soc.mf
index 3b5e2ce307..e585c60853 100644
--- a/graphics/mcf2graph/mcf_man_soc.mf
+++ b/graphics/mcf2graph/mcf_man_soc.mf
@@ -1,9 +1,9 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2021.09.20
+% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2021.10.10
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-input mcf2graph.mf; %% it must be version 4.72
+input mcf2graph.mf; %% it must be version 4.73
% ** use data base file 'mcf_data_base.mcf'
-message "mcf_man_soc 2021.09.20"; message "";
+message "mcf_man_soc 2021.10.10"; message "";
%------------------------------------------------------------------------
sw_mframe:=0;
sw_expand:=0;
diff --git a/graphics/mcf2graph/mcf_manual.pdf b/graphics/mcf2graph/mcf_manual.pdf
index 070738c234..d5b5234c71 100644
--- a/graphics/mcf2graph/mcf_manual.pdf
+++ b/graphics/mcf2graph/mcf_manual.pdf
Binary files differ
diff --git a/graphics/mcf2graph/mcf_manual.tex b/graphics/mcf2graph/mcf_manual.tex
index 59745ac19a..c83840b2a3 100644
--- a/graphics/mcf2graph/mcf_manual.tex
+++ b/graphics/mcf2graph/mcf_manual.tex
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Molecular Coding Format manual by Akira Yamaji 2021.09.20
+% Molecular Coding Format manual by Akira Yamaji 2021.10.10
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[a4paper]{article}
\usepackage[pdftex]{graphicx}
@@ -667,8 +667,8 @@ MC(<30,?6,{4,6}:/iBuOH)
\subsubsection{Move position}
\index{"@()}%
\begin{verbatim}
-@(x,y) : Move (l*x,l*y) from current position
-@$(x,y): Move (l*x,l*y) from origin(@1)
+@(x,y) : Move l*(x,y) from current position
+@$(x,y): Move l*(x,y) from origin(@1)
** l=bond length of ring
<30,?6,@3,!4,//O,!,O,n_^60,@$(6,1),H,p_^15
@@ -1563,7 +1563,7 @@ forever:
beginfont("f:mcf_data_base","t:EXA","v+:1") > 'v+:1'= select EXA=1
if f_EOF=0: if check(mc)=0: MC(scantokens(mc)) fi fi > keep file open
endfont >
- exitif (f_EOF=1)or(f_close=1); > exit if file end
+ exitif f_EOF=1; > exit if file end
endfor
%------------------------------------------------------------------------------
bye
diff --git a/graphics/mcf2graph/mcf_mplib_exa.pdf b/graphics/mcf2graph/mcf_mplib_exa.pdf
index cb28688db6..2b4318347e 100644
--- a/graphics/mcf2graph/mcf_mplib_exa.pdf
+++ b/graphics/mcf2graph/mcf_mplib_exa.pdf
Binary files differ
diff --git a/graphics/mcf2graph/mcf_mplib_exa.tex b/graphics/mcf2graph/mcf_mplib_exa.tex
index b204383651..b19328888b 100644
--- a/graphics/mcf2graph/mcf_mplib_exa.tex
+++ b/graphics/mcf2graph/mcf_mplib_exa.tex
@@ -1,7 +1,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2021.09.20
+% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2021.10.10
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% ** mcf2graph.mf must be version 4.72
+% ** mcf2graph.mf must be version 4.73
% ** use mcf_data_base.mcf
\documentclass{article}
%------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/esami/README b/macros/latex/contrib/esami/README
index ccb8c24163..0703530247 100644
--- a/macros/latex/contrib/esami/README
+++ b/macros/latex/contrib/esami/README
@@ -1,6 +1,6 @@
-The esami package v. 2.5
+The esami package v. 2.6
For generation of texts and solutions of exams in LaTeX
-2018/05/06
+2021/10/11
File: README
Author: Grazia Messineo and Salvatore Vassallo
@@ -14,7 +14,7 @@ varying in random order, with closed or open answer, matching, problems, and so
of each group are randomly scrambled across the exam and variants of each exercise are chosen
randomly from a file which contains them all and.
-Copyright: (C) 2008--2018 Grazia Messineo & Salvatore Vassallo
+Copyright: (C) 2008--2021 Grazia Messineo & Salvatore Vassallo
Licence: LPPL
FILES IN DISTRIBUTION
@@ -25,7 +25,7 @@ FILES IN DISTRIBUTION
VERSION
README This file.
esami.sty The main file
- xyz.cfg A template of configuration file
+ esami-xyz.cfg A template of configuration file
es-*.lng Localisation files
DOCUMENTATION:
@@ -50,7 +50,7 @@ FILES IN DISTRIBUTION
test4.tex
test5-fillin.tex
test9.tex
- test11.tex
+ test11.tex
test12.tex
test13.tex
test14.tex
@@ -63,8 +63,8 @@ FILES IN DISTRIBUTION
problem4-fillin.tex
Examples of an exam (and solutions) built using above exercises using pdflatex, xelatex and lualatex
- testA.pdf
- testA.tex
+ testA.pdf
+ testA.tex
testA-luatex-sol.pdf
testA-luatex.pdf
testA-sol.pdf
@@ -85,7 +85,7 @@ File sty and files cfg and lng must be copied in a folder where LATEX can find t
<texmf>/tex/latex/esami/
esami.sty The main file
- xyz.cfg A template of configuration file
+ esami-xyz.cfg A template of configuration file
es-*.lng Localisation files
@@ -93,4 +93,4 @@ File sty and files cfg and lng must be copied in a folder where LATEX can find t
README
doc-esami-en.pdf User manual in English
doc-esami-it.pdf User manual in Italian
- doc-esami-*.tex Sources for documentation \ No newline at end of file
+ doc-esami-*.tex Sources for documentation
diff --git a/macros/latex/contrib/esami/VERSION b/macros/latex/contrib/esami/VERSION
index d7a901e88e..655ad0fa4f 100644
--- a/macros/latex/contrib/esami/VERSION
+++ b/macros/latex/contrib/esami/VERSION
@@ -1 +1 @@
-VERSION 2.5 DATE=May 06, 2018
+VERSION 2.6 DATE=October 11, 2021
diff --git a/macros/latex/contrib/esami/doc/esami-doc-en.pdf b/macros/latex/contrib/esami/doc/esami-doc-en.pdf
index 8c00ce718d..017a1b28d8 100644
--- a/macros/latex/contrib/esami/doc/esami-doc-en.pdf
+++ b/macros/latex/contrib/esami/doc/esami-doc-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/esami/doc/esami-doc-en.tex b/macros/latex/contrib/esami/doc/esami-doc-en.tex
index bb1f7f319b..33e51db7cd 100644
--- a/macros/latex/contrib/esami/doc/esami-doc-en.tex
+++ b/macros/latex/contrib/esami/doc/esami-doc-en.tex
@@ -77,6 +77,7 @@
\changes{Version 2.3}{2017/09/18}{Corrected a misprint in the code.}
\changes{Version 2.4}{2018/02/10}{Documentation corrected. }
\changes{Version 2.5}{2018/05/06}{Corrected a misprint in the code. Improved the selection of random exercises.}
+\changes{Version 2.6}{2021/10/11}{Improved the spacing in \cmd{\FPsignpol}. Corrected the code to avoid some spourios spaces. }
%\IndexPrologue{\section*{Index} Numbers written in italic refer to the page where the item is described; underlined numebers refer to the line of code in which the item is described; other references are to the line of code where the item is used.}
\GlossaryPrologue{\section*{Changelog}}
@@ -86,8 +87,8 @@
\fontshape\updefault
\footnotesize}
\GetFileInfo{esami.sty}
-\def\fileversion{version 2.5}
-\def\filedate{2018/05/06}
+\def\fileversion{versione 2.6}
+\def\filedate{2021/10/11}
\title{Package esami\thanks{This document
@@ -599,6 +600,8 @@ It's possible to exclude one or more values from the choice (parameter \oarg{exc
except 6 and the value assigned to \cmd{\a}).
\end{esempio}
+\textbf{N.B. It is better to define the parameters inside the environments \envname{problem}, \envname{problem*}, etc, to avoid spurious spaces between the name of the exercise and its body text. Anyway, the authors suggest to begin the text on a new line.}
+
You can work on the parameters defined with this command as on numbers and we have defined commands which allow to work on them showing both the numerical result and the operations in a parametric form.
\begin{itemize}
@@ -789,7 +792,7 @@ Inside this file you should use only one command, \cmd{\def \textbackslash eserc
\item[Version 2.3 (2017/09/18)] Corrected a misprint in the code.
\item[Version 2.4 (2018/02/10)] Documentation corrected.
\item[Version 2.5 (2018/05/06)] Corrected a misprint in the code. Improved the selection of random exercises.
-
+ \item[Version 2.6 (2021/10/11)] Improved the spacing in \cmd{\FPsignpol}. Corrected the code to avoid some spourios spaces.
\end{description}
\bibliographystyle{plain}
diff --git a/macros/latex/contrib/esami/doc/esami-doc-it.pdf b/macros/latex/contrib/esami/doc/esami-doc-it.pdf
index 1233910008..8b32737ca2 100644
--- a/macros/latex/contrib/esami/doc/esami-doc-it.pdf
+++ b/macros/latex/contrib/esami/doc/esami-doc-it.pdf
Binary files differ
diff --git a/macros/latex/contrib/esami/doc/esami-doc-it.tex b/macros/latex/contrib/esami/doc/esami-doc-it.tex
index f44d3a9d5d..d8e8363ee8 100644
--- a/macros/latex/contrib/esami/doc/esami-doc-it.tex
+++ b/macros/latex/contrib/esami/doc/esami-doc-it.tex
@@ -1,4 +1,3 @@
-%\documentclass[10pt]{article}
%\iffalse This is a METACOMMENT
%
@@ -77,6 +76,7 @@
\changes{Versione 2.3}{2017/09/18}{Corretto un errore di battitura nel codice.}
\changes{Versione 2.4}{2018/02/10}{Corretta la documentazione .}
\changes{Versione 2.5}{2018/05/06}{Corretto un errore di battitura nel codice. Migliorata la scelta aleatoria degli esercizi.}
+\changes{Versione 2.6}{2021/10/11}{Migliorata la spaziatura in \cmd{\FPsignpol}. Corretto il codice per eliminare alcuni spazi spuri.}
%\IndexPrologue{\section*{Indice} I numeri scritti in italico rimandano alla pagina dove è descritto l'item; i numeri sottolineati rimandano alla riga di codice in cui l'item è descritto; le altre referenze sono alla riga di codice dove l'item è usato.}
\GlossaryPrologue{\section*{Changelog}}
@@ -86,8 +86,8 @@
\fontshape\updefault
\footnotesize}
\GetFileInfo{esami.sty}
-\def\fileversion{versione 2.5}
-\def\filedate{2018/05/06}
+\def\fileversion{versione 2.6}
+\def\filedate{2021/10/11}
\title{Il pacchetto esami\thanks{Questo documento
@@ -607,6 +607,8 @@ Il parametro opzionale \oarg{seme}, serve a imporre un seme diverso per la gener
escluso 6 e il valore già assegnato ad \cmd{\a}).
\end{esempio}
+\textbf{N.B. È utile dare i comandi di definizione dei parametri all'interno dell'ambiente \envname{problem}, \envname{problem*}, ecc. per evitare la creazione di spazi spuri tra il nome dell'esercizio e il testo dello stesso. Gli autori consigliano comunque di iniziare il testo dell'esercizio su una nuova riga.}
+
Sui parametri definiti è possibile operare come su numeri e sono stati definiti comandi che permettono di operare su tali parametri mostrando il risultato numerico o le operazioni in forma parametrica.
\begin{itemize}
@@ -792,6 +794,7 @@ Al suo interno si deve usare un solo comando, \cmd{\def \textbackslash esercizio
\item[Versione 2.3 (2017/09/18)] Corretto un errore di battitura nel codice.
\item[Versione 2.4 (2018/02/10)] Corretta la documentazione .
\item[Versione 2.5 (2018/05/06)] Corretto un errore di battitura nel codice. Migliorata la scelta aleatoria degli esercizi.
+ \item[Versione 2.6 (2021/10/11)] Migliorata la spaziatura in \cmd{\FPsignpol}. Corretto il codice per eliminare alcuni spazi spuri.
\end{description}
diff --git a/macros/latex/contrib/esami/doc/esami.bib b/macros/latex/contrib/esami/doc/esami.bib
index 4380dffa62..5ca60ecc07 100644
--- a/macros/latex/contrib/esami/doc/esami.bib
+++ b/macros/latex/contrib/esami/doc/esami.bib
@@ -1,5 +1,4 @@
-% This file was created with JabRef 2.9.2.
-% Encoding: Cp1252
+% Encoding: UTF-8
@MISC{examdesign,
author = {Jason Alexander},
@@ -62,3 +61,5 @@
pages = {40-46},
number = {1}
}
+
+@Comment{jabref-meta: databaseType:bibtex;}
diff --git a/macros/latex/contrib/esami/doc/examples/test14.tex b/macros/latex/contrib/esami/doc/examples/test14.tex
index da8e182851..b544ebc859 100644
--- a/macros/latex/contrib/esami/doc/examples/test14.tex
+++ b/macros/latex/contrib/esami/doc/examples/test14.tex
@@ -2,25 +2,8 @@
\FPsetpar{a}{2}{5}
\FPsetpar{b}{2}{5}
\FPsetpar{c}{2}{8}
-
-\item \PTs{1} exercise 14a $a=\a$, $b=\b$, $c=\c$
- \begin{answers}{1}\bChoices[random]
- \Ans1 answer 1 correct\eAns
- \Ans0 answer 2 wrong\eAns
- \Ans0 answer 3 wrong\eAns
- \Ans0 answer 4 wrong\eAns
- \Ans0 answer 5 wrong \eAns
- \eChoices\end{answers}
- \begin{solution}
- This is the solution $a=\a$, $b=\b$, $c=\c$
- \end{solution}}
-
-\newproblem{
-\FPsetpar{a}{2}{5}
-\FPsetpar{b}{2}{5}
-\FPsetpar{c}{2}{8}
-
-\item \PTs{1} exercise 14b $a=\a$, $b=\b$, $c=\c$
+\estrai{3,5,7,11}{alpha}
+\item \PTs{1} exercise 14a $a=\a$, $b=\b$, $c=\c$ $alphai=\alphai$\ $alphaii=\alphaii$\
\begin{answers}{1}\bChoices[random]
\Ans1 answer 1 correct\eAns
\Ans0 answer 2 wrong\eAns
@@ -33,227 +16,227 @@
-\newproblem{
-\FPsetpar{a}{2}{5}
-\FPsetpar{b}{2}{5}
-\FPsetpar{c}{2}{8}
-
-\item \PTs{1} exercise 14c $a=\a$, $b=\b$, $c=\c$
- \begin{answers}{1}\bChoices[random]
- \Ans1 answer 1 correct\eAns
- \Ans0 answer 2 wrong\eAns
- \Ans0 answer 3 wrong\eAns
- \Ans0 answer 4 wrong\eAns
- \Ans0 answer 5 wrong \eAns
- \eChoices\end{answers}\begin{solution}
- This is the solution $a=\a$, $b=\b$, $c=\c$
- \end{solution}}
-
-
-
-\newproblem{
-\FPsetpar{a}{2}{5}
-\FPsetpar{b}{2}{5}
-\FPsetpar{c}{2}{8}
-
-\item \PTs{1} exercise 14d $a=\a$, $b=\b$, $c=\c$
- \begin{answers}{1}\bChoices[random]
- \Ans1 answer 1 correct\eAns
- \Ans0 answer 2 wrong\eAns
- \Ans0 answer 3 wrong\eAns
- \Ans0 answer 4 wrong\eAns
- \Ans0 answer 5 wrong \eAns
- \eChoices\end{answers}\begin{solution}
- This is the solution $a=\a$, $b=\b$, $c=\c$
- \end{solution}}
-
-
-\newproblem{
-\FPsetpar{a}{2}{5}
-\FPsetpar{b}{2}{5}
-\FPsetpar{c}{2}{8}
-
-\item \PTs{1} exercise 14e $a=\a$, $b=\b$, $c=\c$
- \begin{answers}{1}\bChoices[random]
- \Ans1 answer 1 correct\eAns
- \Ans0 answer 2 wrong\eAns
- \Ans0 answer 3 wrong\eAns
- \Ans0 answer 4 wrong\eAns
- \Ans0 answer 5 wrong \eAns
- \eChoices\end{answers}\begin{solution}
- This is the solution $a=\a$, $b=\b$, $c=\c$
- \end{solution}}
+%\newproblem{
+%\FPsetpar{a}{2}{5}
+%\FPsetpar{b}{2}{5}
+%\FPsetpar{c}{2}{8}
+
+%\item \PTs{1} exercise 14c $a=\a$, $b=\b$, $c=\c$ \alphai\ \alphaii\
+ %\begin{answers}{1}\bChoices[random]
+ %\Ans1 answer 1 correct\eAns
+ %\Ans0 answer 2 wrong\eAns
+ %\Ans0 answer 3 wrong\eAns
+ %\Ans0 answer 4 wrong\eAns
+ %\Ans0 answer 5 wrong \eAns
+ %\eChoices\end{answers}\begin{solution}
+ %This is the solution $a=\a$, $b=\b$, $c=\c$
+ %\end{solution}}
+
+
+
+%\newproblem{
+%\FPsetpar{a}{2}{5}
+%\FPsetpar{b}{2}{5}
+%\FPsetpar{c}{2}{8}
+
+%\item \PTs{1} exercise 14d $a=\a$, $b=\b$, $c=\c$ \alphai\ \alphaii\
+ %\begin{answers}{1}\bChoices[random]
+ %\Ans1 answer 1 correct\eAns
+ %\Ans0 answer 2 wrong\eAns
+ %\Ans0 answer 3 wrong\eAns
+ %\Ans0 answer 4 wrong\eAns
+ %\Ans0 answer 5 wrong \eAns
+ %\eChoices\end{answers}\begin{solution}
+ %This is the solution $a=\a$, $b=\b$, $c=\c$
+ %\end{solution}}
+
+
+%\newproblem{
+%\FPsetpar{a}{2}{5}
+%\FPsetpar{b}{2}{5}
+%\FPsetpar{c}{2}{8}
+
+%\item \PTs{1} exercise 14e $a=\a$, $b=\b$, $c=\c$ \alphai\ \alphaii\
+ %\begin{answers}{1}\bChoices[random]
+ %\Ans1 answer 1 correct\eAns
+ %\Ans0 answer 2 wrong\eAns
+ %\Ans0 answer 3 wrong\eAns
+ %\Ans0 answer 4 wrong\eAns
+ %\Ans0 answer 5 wrong \eAns
+ %\eChoices\end{answers}\begin{solution}
+ %This is the solution $a=\a$, $b=\b$, $c=\c$
+ %\end{solution}}
- \newproblem{
-\FPsetpar{a}{2}{5}
-\FPsetpar{b}{2}{5}
-\FPsetpar{c}{2}{8}
-
-\item \PTs{1} exercise 14f $a=\a$, $b=\b$, $c=\c$
- \begin{answers}{1}\bChoices[random]
- \Ans1 answer 1 correct\eAns
- \Ans0 answer 2 wrong\eAns
- \Ans0 answer 3 wrong\eAns
- \Ans0 answer 4 wrong\eAns
- \Ans0 answer 5 wrong \eAns
- \eChoices\end{answers}
- \begin{solution}
- This is the solution $a=\a$, $b=\b$, $c=\c$
- \end{solution}}
-
-\newproblem{
-\FPsetpar{a}{2}{5}
-\FPsetpar{b}{2}{5}
-\FPsetpar{c}{2}{8}
-
-\item \PTs{1} exercise 14g $a=\a$, $b=\b$, $c=\c$
- \begin{answers}{1}\bChoices[random]
- \Ans1 answer 1 correct\eAns
- \Ans0 answer 2 wrong\eAns
- \Ans0 answer 3 wrong\eAns
- \Ans0 answer 4 wrong\eAns
- \Ans0 answer 5 wrong \eAns
- \eChoices\end{answers}\begin{solution}
- This is the solution $a=\a$, $b=\b$, $c=\c$
- \end{solution}}
-
-
-
-\newproblem{
-\FPsetpar{a}{2}{5}
-\FPsetpar{b}{2}{5}
-\FPsetpar{c}{2}{8}
-
-\item \PTs{1} exercise 14h $a=\a$, $b=\b$, $c=\c$
- \begin{answers}{1}\bChoices[random]
- \Ans1 answer 1 correct\eAns
- \Ans0 answer 2 wrong\eAns
- \Ans0 answer 3 wrong\eAns
- \Ans0 answer 4 wrong\eAns
- \Ans0 answer 5 wrong \eAns
- \eChoices\end{answers}\begin{solution}
- This is the solution $a=\a$, $b=\b$, $c=\c$
- \end{solution}}
-
-
-
-\newproblem{
-\FPsetpar{a}{2}{5}
-\FPsetpar{b}{2}{5}
-\FPsetpar{c}{2}{8}
-
-\item \PTs{1} exercise 14k $a=\a$, $b=\b$, $c=\c$
- \begin{answers}{1}\bChoices[random]
- \Ans1 answer 1 correct\eAns
- \Ans0 answer 2 wrong\eAns
- \Ans0 answer 3 wrong\eAns
- \Ans0 answer 4 wrong\eAns
- \Ans0 answer 5 wrong \eAns
- \eChoices\end{answers}\begin{solution}
- This is the solution $a=\a$, $b=\b$, $c=\c$
- \end{solution}}
-
-
-\newproblem{
-\FPsetpar{a}{2}{5}
-\FPsetpar{b}{2}{5}
-\FPsetpar{c}{2}{8}
-
-\item \PTs{1} exercise 14i $a=\a$, $b=\b$, $c=\c$
- \begin{answers}{1}\bChoices[random]
- \Ans1 answer 1 correct\eAns
- \Ans0 answer 2 wrong\eAns
- \Ans0 answer 3 wrong\eAns
- \Ans0 answer 4 wrong\eAns
- \Ans0 answer 5 wrong \eAns
- \eChoices\end{answers}\begin{solution}
- This is the solution $a=\a$, $b=\b$, $c=\c$
- \end{solution}}
-
-
-\newproblem{
-\FPsetpar{a}{2}{5}
-\FPsetpar{b}{2}{5}
-\FPsetpar{c}{2}{8}
-
-\item \PTs{1} exercise 14j $a=\a$, $b=\b$, $c=\c$
- \begin{answers}{1}\bChoices[random]
- \Ans1 answer 1 correct\eAns
- \Ans0 answer 2 wrong\eAns
- \Ans0 answer 3 wrong\eAns
- \Ans0 answer 4 wrong\eAns
- \Ans0 answer 5 wrong \eAns
- \eChoices\end{answers}
- \begin{solution}
- This is the solution $a=\a$, $b=\b$, $c=\c$
- \end{solution}}
-
-\newproblem{
-\FPsetpar{a}{2}{5}
-\FPsetpar{b}{2}{5}
-\FPsetpar{c}{2}{8}
-
-\item \PTs{1} exercise 14l $a=\a$, $b=\b$, $c=\c$
- \begin{answers}{1}\bChoices[random]
- \Ans1 answer 1 correct\eAns
- \Ans0 answer 2 wrong\eAns
- \Ans0 answer 3 wrong\eAns
- \Ans0 answer 4 wrong\eAns
- \Ans0 answer 5 wrong \eAns
- \eChoices\end{answers}\begin{solution}
- This is the solution $a=\a$, $b=\b$, $c=\c$
- \end{solution}}
-
-
-
-\newproblem{
-\FPsetpar{a}{2}{5}
-\FPsetpar{b}{2}{5}
-\FPsetpar{c}{2}{8}
-
-\item \PTs{1} exercise 14m $a=\a$, $b=\b$, $c=\c$
- \begin{answers}{1}\bChoices[random]
- \Ans1 answer 1 correct\eAns
- \Ans0 answer 2 wrong\eAns
- \Ans0 answer 3 wrong\eAns
- \Ans0 answer 4 wrong\eAns
- \Ans0 answer 5 wrong \eAns
- \eChoices\end{answers}\begin{solution}
- This is the solution $a=\a$, $b=\b$, $c=\c$
- \end{solution}}
-
-
-
-\newproblem{
-\FPsetpar{a}{2}{5}
-\FPsetpar{b}{2}{5}
-\FPsetpar{c}{2}{8}
-
-\item \PTs{1} exercise 14n $a=\a$, $b=\b$, $c=\c$
- \begin{answers}{1}\bChoices[random]
- \Ans1 answer 1 correct\eAns
- \Ans0 answer 2 wrong\eAns
- \Ans0 answer 3 wrong\eAns
- \Ans0 answer 4 wrong\eAns
- \Ans0 answer 5 wrong \eAns
- \eChoices\end{answers}\begin{solution}
- This is the solution $a=\a$, $b=\b$, $c=\c$
- \end{solution}}
-
-
-\newproblem{
-\FPsetpar{a}{2}{5}
-\FPsetpar{b}{2}{5}
-\FPsetpar{c}{2}{8}
-
-\item \PTs{1} exercise 14o $a=\a$, $b=\b$, $c=\c$
- \begin{answers}{1}\bChoices[random]
- \Ans1 answer 1 correct\eAns
- \Ans0 answer 2 wrong\eAns
- \Ans0 answer 3 wrong\eAns
- \Ans0 answer 4 wrong\eAns
- \Ans0 answer 5 wrong \eAns
- \eChoices\end{answers}\begin{solution}
- This is the solution $a=\a$, $b=\b$, $c=\c$
- \end{solution}}
+ %\newproblem{
+%\FPsetpar{a}{2}{5}
+%\FPsetpar{b}{2}{5}
+%\FPsetpar{c}{2}{8}
+
+%\item \PTs{1} exercise 14f $a=\a$, $b=\b$, $c=\c$ \alphai\ \alphaii\
+ %\begin{answers}{1}\bChoices[random]
+ %\Ans1 answer 1 correct\eAns
+ %\Ans0 answer 2 wrong\eAns
+ %\Ans0 answer 3 wrong\eAns
+ %\Ans0 answer 4 wrong\eAns
+ %\Ans0 answer 5 wrong \eAns
+ %\eChoices\end{answers}
+ %\begin{solution}
+ %This is the solution $a=\a$, $b=\b$, $c=\c$
+ %\end{solution}}
+
+%\newproblem{
+%\FPsetpar{a}{2}{5}
+%\FPsetpar{b}{2}{5}
+%\FPsetpar{c}{2}{8}
+
+%\item \PTs{1} exercise 14g $a=\a$, $b=\b$, $c=\c$ \alphai\ \alphaii\
+ %\begin{answers}{1}\bChoices[random]
+ %\Ans1 answer 1 correct\eAns
+ %\Ans0 answer 2 wrong\eAns
+ %\Ans0 answer 3 wrong\eAns
+ %\Ans0 answer 4 wrong\eAns
+ %\Ans0 answer 5 wrong \eAns
+ %\eChoices\end{answers}\begin{solution}
+ %This is the solution $a=\a$, $b=\b$, $c=\c$
+ %\end{solution}}
+
+
+
+%\newproblem{
+%\FPsetpar{a}{2}{5}
+%\FPsetpar{b}{2}{5}
+%\FPsetpar{c}{2}{8}
+
+%\item \PTs{1} exercise 14h $a=\a$, $b=\b$, $c=\c$
+ %\begin{answers}{1}\bChoices[random]
+ %\Ans1 answer 1 correct\eAns
+ %\Ans0 answer 2 wrong\eAns
+ %\Ans0 answer 3 wrong\eAns
+ %\Ans0 answer 4 wrong\eAns
+ %\Ans0 answer 5 wrong \eAns
+ %\eChoices\end{answers}\begin{solution}
+ %This is the solution $a=\a$, $b=\b$, $c=\c$
+ %\end{solution}}
+
+
+
+%\newproblem{
+%\FPsetpar{a}{2}{5}
+%\FPsetpar{b}{2}{5}
+%\FPsetpar{c}{2}{8}
+
+%\item \PTs{1} exercise 14k $a=\a$, $b=\b$, $c=\c$
+ %\begin{answers}{1}\bChoices[random]
+ %\Ans1 answer 1 correct\eAns
+ %\Ans0 answer 2 wrong\eAns
+ %\Ans0 answer 3 wrong\eAns
+ %\Ans0 answer 4 wrong\eAns
+ %\Ans0 answer 5 wrong \eAns
+ %\eChoices\end{answers}\begin{solution}
+ %This is the solution $a=\a$, $b=\b$, $c=\c$
+ %\end{solution}}
+
+
+%\newproblem{
+%\FPsetpar{a}{2}{5}
+%\FPsetpar{b}{2}{5}
+%\FPsetpar{c}{2}{8}
+
+%\item \PTs{1} exercise 14i $a=\a$, $b=\b$, $c=\c$
+ %\begin{answers}{1}\bChoices[random]
+ %\Ans1 answer 1 correct\eAns
+ %\Ans0 answer 2 wrong\eAns
+ %\Ans0 answer 3 wrong\eAns
+ %\Ans0 answer 4 wrong\eAns
+ %\Ans0 answer 5 wrong \eAns
+ %\eChoices\end{answers}\begin{solution}
+ %This is the solution $a=\a$, $b=\b$, $c=\c$
+ %\end{solution}}
+
+
+%\newproblem{
+%\FPsetpar{a}{2}{5}
+%\FPsetpar{b}{2}{5}
+%\FPsetpar{c}{2}{8}
+
+%\item \PTs{1} exercise 14j $a=\a$, $b=\b$, $c=\c$
+ %\begin{answers}{1}\bChoices[random]
+ %\Ans1 answer 1 correct\eAns
+ %\Ans0 answer 2 wrong\eAns
+ %\Ans0 answer 3 wrong\eAns
+ %\Ans0 answer 4 wrong\eAns
+ %\Ans0 answer 5 wrong \eAns
+ %\eChoices\end{answers}
+ %\begin{solution}
+ %This is the solution $a=\a$, $b=\b$, $c=\c$
+ %\end{solution}}
+
+%\newproblem{
+%\FPsetpar{a}{2}{5}
+%\FPsetpar{b}{2}{5}
+%\FPsetpar{c}{2}{8}
+
+%\item \PTs{1} exercise 14l $a=\a$, $b=\b$, $c=\c$
+ %\begin{answers}{1}\bChoices[random]
+ %\Ans1 answer 1 correct\eAns
+ %\Ans0 answer 2 wrong\eAns
+ %\Ans0 answer 3 wrong\eAns
+ %\Ans0 answer 4 wrong\eAns
+ %\Ans0 answer 5 wrong \eAns
+ %\eChoices\end{answers}\begin{solution}
+ %This is the solution $a=\a$, $b=\b$, $c=\c$
+ %\end{solution}}
+
+
+
+%\newproblem{
+%\FPsetpar{a}{2}{5}
+%\FPsetpar{b}{2}{5}
+%\FPsetpar{c}{2}{8}
+
+%\item \PTs{1} exercise 14m $a=\a$, $b=\b$, $c=\c$
+ %\begin{answers}{1}\bChoices[random]
+ %\Ans1 answer 1 correct\eAns
+ %\Ans0 answer 2 wrong\eAns
+ %\Ans0 answer 3 wrong\eAns
+ %\Ans0 answer 4 wrong\eAns
+ %\Ans0 answer 5 wrong \eAns
+ %\eChoices\end{answers}\begin{solution}
+ %This is the solution $a=\a$, $b=\b$, $c=\c$
+ %\end{solution}}
+
+
+
+%\newproblem{
+%\FPsetpar{a}{2}{5}
+%\FPsetpar{b}{2}{5}
+%\FPsetpar{c}{2}{8}
+
+%\item \PTs{1} exercise 14n $a=\a$, $b=\b$, $c=\c$
+ %\begin{answers}{1}\bChoices[random]
+ %\Ans1 answer 1 correct\eAns
+ %\Ans0 answer 2 wrong\eAns
+ %\Ans0 answer 3 wrong\eAns
+ %\Ans0 answer 4 wrong\eAns
+ %\Ans0 answer 5 wrong \eAns
+ %\eChoices\end{answers}\begin{solution}
+ %This is the solution $a=\a$, $b=\b$, $c=\c$
+ %\end{solution}}
+
+
+%\newproblem{
+%\FPsetpar{a}{2}{5}
+%\FPsetpar{b}{2}{5}
+%\FPsetpar{c}{2}{8}
+
+%\item \PTs{1} exercise 14o $a=\a$, $b=\b$, $c=\c$
+ %\begin{answers}{1}\bChoices[random]
+ %\Ans1 answer 1 correct\eAns
+ %\Ans0 answer 2 wrong\eAns
+ %\Ans0 answer 3 wrong\eAns
+ %\Ans0 answer 4 wrong\eAns
+ %\Ans0 answer 5 wrong \eAns
+ %\eChoices\end{answers}\begin{solution}
+ %This is the solution $a=\a$, $b=\b$, $c=\c$
+ %\end{solution}}
diff --git a/macros/latex/contrib/esami/doc/examples/testA-sol.pdf b/macros/latex/contrib/esami/doc/examples/testA-sol.pdf
index 67ec2164f8..4970190095 100644
--- a/macros/latex/contrib/esami/doc/examples/testA-sol.pdf
+++ b/macros/latex/contrib/esami/doc/examples/testA-sol.pdf
Binary files differ
diff --git a/macros/latex/contrib/esami/doc/examples/testA.pdf b/macros/latex/contrib/esami/doc/examples/testA.pdf
index c29557ff0b..16f1ca17ab 100644
--- a/macros/latex/contrib/esami/doc/examples/testA.pdf
+++ b/macros/latex/contrib/esami/doc/examples/testA.pdf
Binary files differ
diff --git a/macros/latex/contrib/esami/es-italian.lng b/macros/latex/contrib/esami/es-italian.lng
index a8b2a626d4..1da7162ab2 100644
--- a/macros/latex/contrib/esami/es-italian.lng
+++ b/macros/latex/contrib/esami/es-italian.lng
@@ -7,7 +7,7 @@
%%% Labels (xyz.cfg)
-\def\profname{Prof.\ }
+\def\profname{Prof Duck }
\def\studsignname{Firma leggibile dello studente}
\def\studlastname{Cognome}
\def\studfirstname{Nome}
@@ -56,8 +56,7 @@
%%% Useful Language dependent packages
\AtEndOfPackage{
-\usepackage[italian]{babel}
-%\NoIntelligentComma
+
\usepackage{geometry}
\geometry{a4paper,lmargin=6mm,rmargin=22mm,tmargin=10mm,bmargin=18mm,marginparsep=2mm,footskip=1cm}
\usepackage{icomma}
diff --git a/macros/latex/contrib/esami/esami-xyz.cfg b/macros/latex/contrib/esami/esami-xyz.cfg
index eb17b9b96e..0d76641979 100644
--- a/macros/latex/contrib/esami/esami-xyz.cfg
+++ b/macros/latex/contrib/esami/esami-xyz.cfg
@@ -1,11 +1,11 @@
%% Package `esami' to use with LaTeX 2e
-%% Copyright (C) 2008-2018 G. Messineo e S. Vassallo
+%% Copyright (C) 2008-2021 G. Messineo e S. Vassallo
%%
%% This is file `esami-xyz.cfg',
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% esami-xyz.cfg, 2018-05-06 %%
-%% Copyright (C) 2008-2018 G. Messineo e S. Vassallo %%
+%% esami-xyz.cfg, 2021-10-11 %%
+%% Copyright (C) 2008-2021 G. Messineo e S. Vassallo %%
%% %%
%% This program can be redistributed and/or modified %%
%% under the terms of the LaTeX Project Public License %%
@@ -27,6 +27,7 @@
\DeclareMathOperator{\arctg}{arctg}
\providecommand*{\dif}{\mathop{}\!\mathrm{d}}
\providecommand{\dlim}{\displaystyle \lim}
+\providecommand{\dsum}{\displaystyle \sum}
\providecommand{\me}{\mathrm{e}}
\providecommand{\D}{\displaystyle}
@@ -127,8 +128,8 @@ n. \thevers} -- %%
\sffamily \textbf{INSTRUCTIONS}
\begin{itemize}
\item Write here your instructions
- \item two è con accento
- \item three è à é ò ù
+ \item two
+ \item three
\end{itemize}}}
\def\istruzioniii{\setlength{\fboxsep}{1.5ex}\setlength{\fboxrule}{1.2pt}{\sffamily
diff --git a/macros/latex/contrib/esami/esami.sty b/macros/latex/contrib/esami/esami.sty
index 8d1e7e445e..668bef7606 100644
--- a/macros/latex/contrib/esami/esami.sty
+++ b/macros/latex/contrib/esami/esami.sty
@@ -2,8 +2,8 @@
%% This is file `esami.sty',
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% esami.sty package, 2018-02-10 %%
-%% Copyright (C) 2008-2018 G. Messineo e S. Vassallo %%
+%% esami.sty package, 2021-10-11 %%
+%% Copyright (C) 2008-2021 G. Messineo e S. Vassallo %%
%% %%
%% This program can be redistributed and/or modified %%
%% under the terms of the LaTeX Project Public License %%
@@ -45,9 +45,12 @@
% Version 2.5
% 2018/05/06
%Corrected a misprint in the code. Improved the selection of random exercises.
+% Version 2.6
+% 2021/10/11
+%Corrected a misprint in the code. Improved the selection of random exercises.
\NeedsTeXFormat{LaTeX2e} \ProvidesPackage{esami}
- [2018/05/06 v2.5 An Exam Construction Package]
+ [2021/10/11 v2.6 An Exam Construction Package]
% +=============================+
% | THE OPTIONS |
@@ -130,9 +133,7 @@
%========================================================%
\newwrite\parametri
-
\DeclareOption{param}{\es@paramtrue \AtBeginDocument{\newwrite\params}}
-
\ProcessOptions\relax
% +=============================+
@@ -141,7 +142,7 @@
\usepackage{graphicx}
\usepackage{enumerate}
-\usepackage{fp}
+\usepackage[nomessages]{fp}
\usepackage{currfile}
\usepackage{array}
\usepackage{environ}
@@ -152,37 +153,33 @@
\ifes@pst
-\usepackage{pstricks,pstricks-add}
-\ifes@autopst
-\usepackage[crop=off,dvips={}]{auto-pst-pdf}
+ \usepackage{pstricks,pstricks-add}
+ \ifes@autopst
+ \usepackage[crop=off,dvips={}]{auto-pst-pdf}
\else
-\usepackage[off]{auto-pst-pdf}
+ \usepackage[off]{auto-pst-pdf}
\fi
- \else
+\else
\@ifpackageloaded{xcolor}{}{\usepackage{xcolor}}
\fi
+
\input random
%========================================================%
% Error Messages %
%========================================================%
-\def\testversioni{\ifthenelse{\not\equal{\numcompiti}{} } {\relax} %
+\def\testversioni{\ifthenelse{\not\equal{\numcompiti}{}}{\relax} %
{ \immediate\write16{\es@numcompitierror}
{\endlinechar=-1 \global\read16 to\numcompiti}}}
- \ifthenelse{\equal{\jobname}{\detokenize{master}}}{%%
- {%
- \PackageError{esami} %
- {\es@mastererror}
- {}}}
- \ifthenelse{\equal{\jobname}{\detokenize{master-sol}}}{%%
- {%
- \PackageError{esami} %
- {\es@mastererror}
- {}}}
+ \ifthenelse{\equal{\jobname}{\detokenize{master}}} {{ \PackageError{esami} {\es@mastererror}{}}}%
+ \ifthenelse{\equal{\jobname}{\detokenize{master-sol}}}{{\PackageError{esami}{\es@mastererror}{}}}%
+
+\ifes@language
+\else
+ \InputIfFileExists{es-italian.lng}{ \typeout{esami: No language chosen: Italian language will be used.}}{NO LANGUAGE!!!}
+\fi
-\ifes@language \else \InputIfFileExists{es-italian.lng}%
- { \typeout{esami: No language chosen: Italian language will be used.}}{NO LANGUAGE!!!}\fi
%========================================================%
% DIMENSIONS %
%========================================================%
@@ -264,13 +261,14 @@
\newcounter{nomefile}%%% counter for year-month-day
\newcount\tmp@quest %%% the number of the exercise
\newcount\@probselN %%% in \selectrandomlyn
-\newcount\@shfctr \newcount\@shfA \newcount\@shfB %%% In "\shuffle"
+\newcount\@shfctr %%% In "\shuffle"
+\newcount\@shfA %%% In "\shuffle"
+\newcount\@shfB %%% In "\shuffle"
\newcount\icount %%% counter to shuffle exercises
\newcount\io
\newcount\inizio
\newcount\old@rando
\FPeval\seme{round(\thenomefile+1-trunc(\thenomefile/(2^31-1):0)*(2^31-1):0)}
-%\FPset\semeex\seme
\def\semeex{\seme}
\inizio=1
%%%%
@@ -281,7 +279,7 @@
\newcounter{fp@contatore}%%% used in \FPsetpar
\newcount\old@randomii%%% used to change seed shuffling exercise
\newcount\old@randomi%%% used to change seed in \FPsetpar
-\newcount\old@random%%% used to change seed in \selectrandomly %%%NUOVO
+\newcount\old@random%%% used to change seed in \selectrandomly
\newcount\sh@max%%% used to choose the exercises
\newcount\@probN%%% number of exercises in \selectrandomly
\newcount\j@m%%% temporary counter in \newproblem
@@ -290,7 +288,8 @@
\newcounter{shuf@lop}
\newcounter{temp@cnt}
\newcounter{questionno}%%% the number of the question in test
-\newcount\@esquestiondepth \@esquestiondepth=0
+\newcount\@esquestiondepth
+ \@esquestiondepth=0
\newcounter{esquestionnoi}
\renewcommand{\theesquestionnoi}{\arabic{esquestionnoi}}
\newcounter{esquestionnoii}
@@ -374,12 +373,15 @@
\newcommand\exlabelformatwp{{\scshape\exlabel\ \theex@no.}}
\newcommand{\exsolafter}{\es@exsolafterDefault}
\newcommand{\es@exsolafterDefault}{\textit{\es@solutionname}: }
-\newcommand{\esexlisttabheader}
-{(\hfil\theex@partno\hfil)%
-}
-\newcommand{\ex@header}
-{\hbox{\if\exerstar*\exlabelformatwp\else%
- \exlabelformat\fi}%
+\newcommand{\esexlisttabheader}{(\hfil\theex@partno\hfil)}
+\newcommand{\ex@header}{\hbox
+{%
+\if
+ \exerstar*\exlabelformatwp%
+\else
+ \exlabelformat
+ \fi
+ }%
}
% +=============================+
@@ -390,36 +392,54 @@
% Maths %
%========================================================%
-%\ifes@param
-%\newcommand{\FPsv}[2][0]{(#2)}%%% \FPsv shows oparations
-%\newcommandx{\FPval}[3][2=0]{\expandafter\def\csname#1\endcsname{(#1)}
-%\immediate\write\params{%%% writes on a file
-% \string\textbf\string{\string\noindent\space \es@parametermessagea{#1}{#3}
-% \string}\string\newline}}
-%\else
-\newcommand{\FPsv}[2][0]{\FPeval{\fp@tmpa}{clip(round(#2:#1))}\numprint{\fp@tmpa}}%%% It does operations with #1 decimals and with the "param" option it shows operations
-\newcommandx{\FPval}[3][2=0]{\FPeval{#1}{clip(round(#3:#2))}}%% it works like \FPsv with the option param, like \FPeval otherwise
-%\fi
+
+\newcommand{\FPsv}[2][0]
+{%%%% It does operations with #1 decimals and with the "param" option it shows operations
+ \FPeval{\fp@tmpa}{clip(round(#2:#1))}\numprint{\fp@tmpa}\relax
+ }
+\newcommandx{\FPval}[3][2=0]{%% it works like \FPsv with the option param, like \FPeval otherwise
+ \FPeval{#1}{clip(round(#3:#2))%
+ }%
+ }
+
+
%========================================================%
% fractions %
%========================================================%
\newcommand{\@sempli}[2]{%%%% simplification (private command)
- \FPeval\segnofrac{round(#1:0)*round(#2:0)}
- \FPeval\fp@tmp{round(abs(#1):0)}\FPset\fp@n{\fp@tmp}%
+ \FPeval\segnofrac{round(#1:0)*round(#2:0)}%
+ \FPeval\fp@tmp{round(abs(#1):0)}%
+ \FPset\fp@n{\fp@tmp}%
\FPeval\fp@tmp{round(abs(#2):0)}%
- \FPifzero{\fp@tmp}\PackageError{esami}{\es@zerodenerror{#1}{#2}}\fi
+ \FPifzero{\fp@tmp}
+ \PackageError{esami}{\es@zerodenerror{#1}{#2}}%
+ \fi
\FPset\fp@d{\fp@tmp}%
- \FPeval\fp@num{max(\fp@n,\fp@d)}\FPeval\fp@den{min(\fp@n,\fp@d)}\FPset\fp@resto{\fp@den}\whiledo{\fp@resto>0}%
- {\FPset\fp@restoold{\fp@resto}\FPeval\fp@resto{round((\fp@num-trunc((\fp@num)/\fp@den:0)*(\fp@den)):0)}%
- \FPset\fp@num{\fp@den}\FPset\fp@den{\fp@resto}}\FPeval\fp@num{round((\fp@n/\fp@restoold):0)}\FPeval\fp@den{round((\fp@d/\fp@restoold):0)}%
- \FPifneg\segnofrac{-}\else{}\fi\ifthenelse{\fp@den=1}{\ifthenelse{\fp@num=1}{1}{\fp@num}}{\frac{\fp@num}{\fp@den}}%
+ \FPeval\fp@num{max(\fp@n,\fp@d)}%
+ \FPeval\fp@den{min(\fp@n,\fp@d)}%
+ \FPset\fp@resto{\fp@den}%
+ \whiledo{\fp@resto>0}%
+ {%
+ \FPset\fp@restoold{\fp@resto}%
+ \FPeval\fp@resto{round((\fp@num-trunc((\fp@num)/\fp@den:0)*(\fp@den)):0)}%
+ \FPset\fp@num{\fp@den}%
+ \FPset\fp@den{\fp@resto}%
+ }
+ \FPeval\fp@num{round((\fp@n/\fp@restoold):0)}%
+ \FPeval\fp@den{round((\fp@d/\fp@restoold):0)}%
+ \FPifneg\segnofrac{-}
+ \else{}
+ \fi
+ \ifthenelse{\fp@den=1}{%
+ \ifthenelse{\fp@num=1}{1}{\fp@num}
+ }
+ {\frac{\fp@num}{\fp@den}}%
}
\newcommand{\sempli}[2]{%%% simplification (user command)
\FPeval\fp@tmp{round(abs(#1):0)}%
- \FPifzero{\fp@tmp}\PackageError{esami}{\es@zeronumerrorshort{#1}{#2}}
- {\es@zeronumerrorlong{#1}{#2}}\fi
+ \FPifzero{\fp@tmp}\PackageError{esami}{\es@zeronumerrorshort{#1}{#2}}{\es@zeronumerrorlong{#1}{#2}}\fi
\FPeval\fp@temp{round(abs(#2):0)}%
\FPifeq{\fp@tmp}{\fp@temp}\PackageWarning{esami}{\es@fraconewarn{#1}{#2}}\fi
\@sempli{#1}{#2}%
@@ -427,37 +447,29 @@
\newcommand{\semplix}[2]{%%% simplification (coefficients)
\FPeval\fp@tmp{round(abs(#1):0)}%
- \FPifzero{\fp@tmp}\PackageError{esami}{\es@zeronumerrorshort{#1}{#2}}
- {\es@zeronumerrorlong{#1}{#2}}\fi
+ \FPifzero{\fp@tmp}\PackageError{esami}{\es@zeronumerrorshort{#1}{#2}}{\es@zeronumerrorlong{#1}{#2}}\fi
\FPeval\t@mpa{round(#1:0)}\FPeval\t@mpb{round(#2:0)}%
- \ifthenelse{\t@mpa=\t@mpb}{}%
- {\ifthenelse{\t@mpa=-\t@mpb}{-}%
- {\@sempli{#1}{#2}}%
- }
+ \ifthenelse{\t@mpa=\t@mpb}{}{\ifthenelse{\t@mpa=-\t@mpb}{-}{\@sempli{#1}{#2}}}
}
\newcommand{\sempliz}[2]{%%% simplifications (zero)
\FPeval\t@mpa{round(#1:0)}%
- \ifthenelse{\t@mpa=0}{0}%
- {\@sempli{#1}{#2}}%
+ \ifthenelse{\t@mpa=0}{0}{\@sempli{#1}{#2}}%
}
\newcommand{\esempli}[2]{%%% simplification (exponents)
\FPeval\fp@tmp{round(abs(#1):0)}%
- \FPifzero{\fp@tmp}\PackageError{esami}{\es@zeronumerrorshort{#1}{#2}}
- {\es@zeronumerrorlong{#1}{#2}}\fi
- \FPeval\t@mpa{round(#1:0)}\FPeval\t@mpb{round(#2:0)}%
- \ifthenelse{\t@mpa=\t@mpb}{}%
- {\ifthenelse{\t@mpa=-\t@mpb}{-1}%
- {\@sempli{#1}{#2}}%
- }
+ \FPifzero{\fp@tmp}\PackageError{esami}{\es@zeronumerrorshort{#1}{#2}}{\es@zeronumerrorlong{#1}{#2}}\fi
+ \FPeval\t@mpa{round(#1:0)}%
+ \FPeval\t@mpb{round(#2:0)}%
+ \ifthenelse{\t@mpa=\t@mpb}{}{\ifthenelse{\t@mpa=-\t@mpb}{-1}{\@sempli{#1}{#2}}}
}
%========================================================%
% Radicals (simplification) %
%========================================================%
-\newcommand\simpsqrt[2]{
+\newcommand\simpsqrt[2]{%
\FPset\tmp@sqi{2}%
\FPset\sq@factor{1}%
\FPset\tmp@factor{1}%
@@ -466,20 +478,69 @@
\FPeval\sq@ind{round(#1:0)}%
\FPeval\tmp@sqpw{round(\tmp@sqi^(\sq@ind):0)}%
\FPeval\tmp@sqj{round(\sq@rad+1:0)}%
- \ifthenelse{\equal\sq@rad{0}}{0}{%
- \whiledo{\tmp@sqpw<\tmp@sqj}{\FPeval\tmp@rad{\sq@rad/\tmp@sqpw}%
- \FPeval\sq@resto{round((\sq@rad-trunc((\sq@rad)/\tmp@sqpw:0)*(\tmp@sqpw)):0)}%
- \ifthenelse{\equal{\sq@resto}{0}}{\FPset\tmp@factor{\sq@factor}\FPeval\sq@factor{round(\tmp@factor*\tmp@sqi:0)}\FPeval\sq@rad{round(\tmp@rad:0)}%
- \FPset\tmp@sqi{1}}{}\FPset\tmp@sqii{\tmp@sqi}\FPeval\tmp@sqi{round(\tmp@sqii+1:0)}\FPeval\tmp@sqpw{round(\tmp@sqi^(\sq@ind):0)}}%
- \ifthenelse{\isodd{\sq@ind}}{%
- \ifthenelse{\equal{\sq@factor}{1}} {\ifthenelse{\equal{\sq@rad}{1}}{\ifthenelse{\sq@segno<0}{-1}{1}}
- {\ifthenelse{\sq@segno<0}{-\sqrt[\sq@ind]{\sq@rad}}{\sqrt[\sq@ind]{\sq@rad}}}}%
- {\ifthenelse{\equal{\sq@rad}{1}}{\ifthenelse{\sq@segno<0}{-\sq@factor}{\sq@factor} }
- {\ifthenelse{\sq@segno<0}{-\sq@factor\sqrt[\sq@ind]{\sq@rad}}{\sq@factor\sqrt[\sq@ind]{\sq@rad} }}}}%
- {\ifthenelse{\sq@segno<0}{\PackageError{esami}{\es@radicalerror}}{\ifthenelse{\equal{\sq@factor}{1}} {\ifthenelse{\equal{\sq@rad}{1}}{1}
- {\ifthenelse{\sq@ind=2}{\sqrt{\sq@rad}}{\sqrt[\sq@ind]{\sq@rad}}} }%
- {\ifthenelse{\equal{\sq@rad}{1}}{\sq@factor}{\ifthenelse{\sq@ind=2}{\sq@factor\sqrt{\sq@rad}}{\sq@factor\sqrt[\sq@ind]{\sq@rad}}} }}}}%
- }
+ \ifthenelse{\equal\sq@rad{0}}{0}
+ {%
+ \whiledo{\tmp@sqpw<\tmp@sqj}
+ {%
+ \FPeval\tmp@rad{\sq@rad/\tmp@sqpw}%
+ \FPeval\sq@resto{round((\sq@rad-trunc((\sq@rad)/\tmp@sqpw:0)*(\tmp@sqpw)):0)}%
+ \ifthenelse{\equal\sq@resto{0}}
+ {%
+ \FPset\tmp@factor{\sq@factor}%
+ \FPeval\sq@factor{round(\tmp@factor*\tmp@sqi:0)}%
+ \FPeval\sq@rad{round(\tmp@rad:0)}%
+ \FPset\tmp@sqi{1}
+ }{}
+ \FPset\tmp@sqii{\tmp@sqi}%
+ \FPeval\tmp@sqi{round(\tmp@sqii+1:0)}%
+ \FPeval\tmp@sqpw{round(\tmp@sqi^(\sq@ind):0)}
+ }%
+ \ifthenelse{\isodd{\sq@ind}}
+ {%
+ \ifthenelse{\equal{\sq@factor}{1}}
+ {%
+ \ifthenelse{\equal{\sq@rad}{1}}
+ {%
+ \ifthenelse{\sq@segno<0}{-1}{1}
+ }
+ {%
+ \ifthenelse{\sq@segno<0}{-\sqrt[\sq@ind]{\sq@rad}}
+ {\sqrt[\sq@ind]{\sq@rad}}
+ }
+ }
+ {%
+ \ifthenelse{\equal{\sq@rad}{1}}
+ {%
+ \ifthenelse{\sq@segno<0}{-\sq@factor}{\sq@factor}
+ }
+ {%
+ \ifthenelse{\sq@segno<0}{-\sq@factor\sqrt[\sq@ind]{\sq@rad}}{\sq@factor\sqrt[\sq@ind]{\sq@rad} }
+ }
+ }
+ }%
+ {%
+ \ifthenelse{\sq@segno<0}
+ {\PackageError{esami}{\es@radicalerror}}
+ {\ifthenelse{\equal{\sq@factor}{1}}
+ {%
+ \ifthenelse{\equal{\sq@rad}{1}}
+ {1}
+ {%
+ \ifthenelse{\sq@ind=2}{\sqrt{\sq@rad}}{\sqrt[\sq@ind]{\sq@rad}}
+ }
+ }%
+ {%
+ \ifthenelse{\equal{\sq@rad}{1}}
+ {\sq@factor}
+ {\ifthenelse{\sq@ind=2}
+ {\sq@factor\sqrt{\sq@rad}}
+ {\sq@factor\sqrt[\sq@ind]{\sq@rad}}
+ }
+ }
+ }
+ }
+ }
+ }
%========================================================%
% Coefficients of polynomial %
@@ -487,9 +548,24 @@
\newcommand{\FPsignpol}[2] %%% adapted from code contributed by Hjalmar Basile NEW 2016/04/11
{\FPval\tempsign{#1}
-\ifthenelse{\equal{#2}{}}{\ifnum \tempsign<0 {\sempli{\tempsign}{1}#2}\else \ifnum \tempsign>0{+\sempli{\tempsign}{1}#2}\else{}\fi\fi}
-{\ifnum \tempsign<0 {\semplix{\tempsign}{1}#2}\else \ifnum \tempsign>0{+\semplix{\tempsign}{1}#2}\else{}\fi\fi}
-} %%% nuovo 2016/12/11 per termine noto
+ \ifthenelse{\equal{#2}{}}
+ {%
+ \ifnum \tempsign<0 {\:\sempli{\tempsign}{1}#2}
+ \else
+ \ifnum \tempsign>0{\:+\:\sempli{\tempsign}{1}#2}
+ \else{}
+ \fi
+ \fi
+ }
+ {%
+ \ifnum \tempsign<0 {\:\semplix{\tempsign}{1}#2\:}
+ \else
+ \ifnum \tempsign>0{\:+\:\semplix{\tempsign}{1}#2}
+ \else{}
+ \fi
+ \fi
+ }
+} %% improved for spacing 2021/10/11
%========================================================%
@@ -501,8 +577,6 @@
\def\es@l@l{\normalsize\normalfont(d)}
\newcommand\PTs{\def\es@star{x}\@PTs}
\def\@PTs#1{%
-%\addtolength{\punteggio}{#1 pt} %% NEW 2016/04/11 to check the total score of exercises
-%\global\punteggio=\punteggio
\gdef\es@PTs{#1}\ifx\es@PTs\@empty\gdef\es@PTs{1}\fi
\global\let\esPTs=\es@PTs\global\let\es@PTs=\@empty
\if\es@star*\else\PTs@Hook\fi
@@ -512,34 +586,6 @@
\let\qMark@Hook\@empty
\newcommand{\post@questionsHook}{}
\newcommand{\punti}{}
-%%=========================================================================%
-%% Modified commands for parametric version in "totale-versioni" %
-%%=========================================================================%
-%%%%
-%\ifes@param
-%\renewcommand{\FPsv}[2][0]{(#2)}%%% \FPsv shows oparations
-%\renewcommandx{\FPval}[3][2=0]{\expandafter\def\csname#1\endcsname{(#1)}
-%\immediate\write\params{%%% writes on a file
-% \string\textbf\string{\string\noindent\space \es@parametermessagea{#1}{#3}
-% \string}\string\newline}}
-%\renewcommand{\FPsignpol}[2]{+(#1)#2} %%% adapted from code contributed by Hjalmar Basile NEW 2016/04/11
-%\renewcommand{\simpsqrt}[2]{\sqrt[#1]{(#2)}}%%% \simpsqrt shows operations
-%\renewcommand{\sempli}[2]{%%% all simplifications become \frac
-% \ifthenelse{\equal{#2}{1}}{(#1)}{\frac{#1}{#2}}}
-% \renewcommand{\semplix}[2]{%
-% \ifthenelse{\equal{#2}{1}}{(#1)}{\frac{#1}{#2}}}
-% \renewcommand{\sempliz}[2]{%
-% \ifthenelse{\equal{#2}{1}}{(#1)}{\frac{#1}{#2}}}
-% \renewcommand{\esempli}[2]{%
-% \ifthenelse{\equal{#2}{1}}{(#1)}{\frac{#1}{#2}}}
-% \PTsHook{\emph{(\esPTs\ \ifthenelse{\equal{\esPTs}{\detokenize{1}}}{\es@pointname}{\es@pointsname})} %
-% \ifes@test
-% \immediate\closeout\params
-% \fi
-% }
-%\fi
-
-
%========================================================%
% Commands adapted from eqexam %
@@ -595,45 +641,69 @@
%%%%%%% Fill in %%%%%%
\newcommand\fillinproblem{\es@fillintrue%
\ifes@solutions
-\immediate\openout\parametri=qf\nome q\romannumeral\tmp@quest e\thevers.parametri.tex
+ \immediate\openout\parametri=qf\nome q\romannumeral\tmp@quest e\thevers.parametri.tex
\fi
}
\ifes@solutions
-\def\fill@ans@color#1{\bfseries\color{red}{#1}}%%% with solutions answers are in red by default
- \else
+ \def\fill@ans@color#1{\bfseries\color{red}{#1}}%%% with solutions answers are in red by default
+ \else
\def\fill@ans@color#1{\phantom{#1}}%%% without solutions option -> no answers
- \fi
+ \fi
\newcommand{\fillin}[3][u]{%%% #1= the box (u=underlined, e=empty, b= boxed) #2= space for the answer, #3= the correct answer
\space
\ifx#1u\let\fillin@Fmt=\underbar%%% by default underlined space
- \else\ifx#1e\let\fillin@Fmt=\relax%%% empty space
- \else\ifx#1b\let\fillin@Fmt=\fbox%%% box
- \fi\fi\fi
- \fillin@Fmt{\parbox[b][.8\height][b]{#2}{%
- \strut\hfil\fill@ans@color{#3}\hfil}%
- \ifes@test
+ \else
+ \ifx#1e\let\fillin@Fmt=\relax%% empty space
+ \else
+ \ifx#1b\let\fillin@Fmt=\fbox%%% box
+ \fi
+ \fi
+ \fi
+\fillin@Fmt{\parbox[b][.8\height][b]{#2}{%
+ \strut\hfil\fill@ans@color{#3}\hfil}%
+ \ifes@test
\ifes@prova
\else
-\ifes@solutions%%% to write the string of solutions
-\immediate\write\sols{\string\item\space\string\makeatletter\space\string\input\string{qf\nome q\romannumeral\tmp@quest e\thevers.parametri\string}\string\makeatother}
-\immediate\write\sols{\unexpanded{#3}}
-\immediate\write\loe{\es@exercisename\space\theesquestionnoi:\space \probchosen}
-\fi
-\fi
-\fi
+ \ifes@solutions%%% to write the string of solutions
+ \immediate\write\sols{%
+ \string\item\space\string\makeatletter\space\string\input\string{qf\nome q\romannumeral\tmp@quest e\thevers.parametri\string}\string\makeatother}
+ \immediate\write\sols{\unexpanded{#3}}
+ \immediate\write\loe{\es@exercisename\space\theesquestionnoi:\space \probchosen}
+ \fi
+ \fi
+ \fi
}
}
%%%%% Other commands %%%%%%
-\newcommand\stepverssols{\immediate\write\sols{\string\begin{minipage}{.33\string\textwidth}{\string\large\string\textbf{\es@solutionname\ \versionname\ n. \thevers}}}}
-\newcommand\closeverssols{\immediate\write\sols{\string\end{minipage}}}
-
-\newcommand\stepvers{\stepcounter{vers}\ifes@solutions\stepverssols
-\immediate\write\loe{\versionname\space n. \thevers}\fi}
- \newcommand\closevers{\newpage\setcounter{page}{1}\setcounter{ex@no}{0}\ifes@solutions\closeverssols
- \immediate\write\loe{\space}
- \immediate\write\loe{\space}
- \fi}
+\newcommand\stepverssols%
+{%
+\immediate\write\sols
+ {%
+\string\begin{minipage}{.33\string\textwidth}{\string\large\string\textbf{\es@solutionname\ \versionname\ n. \thevers}}
+ }
+}
+\newcommand\closeverssols%
+{%
+\immediate\write\sols{\string\end{minipage}}
+}
+\newcommand\stepvers
+{%
+\stepcounter{vers}
+ \ifes@solutions\stepverssols
+ \immediate\write\loe{\versionname\space n. \thevers}
+ \fi
+}
+ \newcommand\closevers
+{%
+\newpage\setcounter{page}{1}
+\setcounter{ex@no}{0}
+ \ifes@solutions
+ \closeverssols
+ \immediate\write\loe{\space}
+ \immediate\write\loe{\space}
+ \fi
+}
\def\mydate#1/#2/#3\@empty{\setcounter{nomefile}{\two@digits{#1}\two@digits{#2}\two@digits{#3}}}%%% it gives to the counter "nomefile" a value determined by the date
\PTsHook{\emph{(\esPTs\ \ifthenelse{\equal{\esPTs}{\detokenize{1}}}{\es@pointname}{\es@pointsname})}}%%% The name of the points
@@ -641,24 +711,34 @@
\proofingsymbol{$\blacktriangleright$}%%% the proofing symbol that can be changed in document
\newenvironment{gobbleenv}{\Collect@Body \@gobble}{}%%% this environment eats its content
-\AtBeginDocument{%%% the date and the date component of the seed and some code for solutions
+\AtBeginDocument%% the date and the date component of the seed and some code for solutions
+{%
\def\longdate{\expandafter\es@longdate\@date\@empty}
\def\shortdate{\expandafter\es@shortdate\@date\@empty}
\expandafter\mydate\@date\@empty
- \ifes@prova
- \else
-\ifes@solutions
-\newwrite\sols
-\immediate\openout\sols=\jobname.sol.tex
-\newwrite\loe
-\immediate\openout\loe=\jobname.loe
- \fi
- \fi}
-\newcommand\es@segnala{%%% this command gives the reference of the exact answer in the string of solutions
- \if\es@listType1\addtocounter{sq@quizno}{-1}\refstepcounter{sq@quizno}\fi
-\ifes@prova \else \label{\probchosen} \immediate\write\sols{ \string\item\string\ref{\probchosen}}
-\immediate\write\loe{\es@exercisename\space\theesquestionnoi:\space \probchosen} \fi
- }
+ \ifes@prova
+ \else
+ \ifes@solutions
+ \newwrite\sols
+ \immediate\openout\sols=\jobname.sol.tex
+ \newwrite\loe
+ \immediate\openout\loe=\jobname.loe
+ \fi
+ \fi
+ }
+\newcommand\es@segnala%%% this command gives the reference of the exact answer in the string of solutions
+{%
+ \if\es@listType1
+ \addtocounter{sq@quizno}{-1}
+ \refstepcounter{sq@quizno}
+ \fi
+ \ifes@prova
+ \else
+ \label{\probchosen}
+ \immediate\write\sols{\string\item\string\ref{\probchosen}}
+ \immediate\write\loe{\es@exercisename\space\theesquestionnoi:\space \probchosen}
+ \fi
+ }
\newcommand{\prior@questionsHook}{}
%========================================================%
@@ -666,55 +746,61 @@
%========================================================%
\def\maxLoopLimit{10}%
\ifes@param
-\newcommandx{\FPsetpar}[5][1=\seme,5={}]{%%% the parameters are not assigned
+\newcommandx{\FPsetpar}[5][1=\seme,5={}]{% %% the parameters are not assigned
\expandafter\def\csname#2\endcsname{#2}%%% in the parametric version, the parameter appears with its name and not with its value
- \immediate\write\params{%%% writes on a file
+ \immediate\write\params{% %% writes on a file
\string\textbf\string{\string\noindent\space \es@parametermessage{#2}{#3}{#4}
\space \ifx#5\@empty\else $#2\neq #5$.\fi\space \es@seedmessage{#1}
- \string}\string\newline}}
+ \string}\string\newline}}%
\else
\newcommandx{\FPsetpar}[5][1=\seme,5={}]{%
-\ifnum#3>#4\PackageError{esami}{\es@fpsetparerrshort{#2}}{\es@fpsetparerrlong{#2}}\fi%% NEW 2015
-\@ifundefined{nome}{\setcounter{fp@contatore}{-2}}{
-\@ifundefined{base\nome}{\setcounter{fp@contatore}{-2}}{\setcounter{fp@contatore}{-\csname base\nome \endcsname}}}
-\FPval{randomico}{\thevers+\then@par+\thequestionno+#1}
-\old@randomi=\number\randomi%%% it saves the old seed
+\ifnum#3>#4
+ \PackageError{esami}{\es@fpsetparerrshort{#2}}{\es@fpsetparerrlong{#2}}%
+\fi%
+\@ifundefined{nome}{\setcounter{fp@contatore}{-2}}{%
+ \@ifundefined{base\nome}{\setcounter{fp@contatore}{-2}}{\setcounter{fp@contatore}{-\csname base\nome \endcsname}}}%
+\FPeval{randomico}{round(\thevers+\then@par+\thequestionno+#1:0)}%
+\old@randomi=\number\randomi\relax%%% it saves the old seed
\stepcounter{n@par}%
\setcounter{fp@contatore}{-\value{vers}}%
-\randomi=\randomico%
-\ifnum#3>0 \addtocounter{fp@contatore}{-#3} \else \addtocounter{fp@contatore}{#3}\fi
+\randomi=\randomico\relax
+\ifnum#3>0
+ \addtocounter{fp@contatore}{-#3}
+ \else
+ \addtocounter{fp@contatore}{#3}%
+\fi%
\whiledo{\value{fp@contatore}<\value{questionno}}{\nextrandom\stepcounter{fp@contatore}}%
\setrannum{\tmp@a}{#3}{#4}%
\def\rand@ne{#5}%%% checks the parameter (adapted from rangen)
-\ifx\rand@ne\@empty\else\loopCnt=0\relax%
-\@whilenum\loopCnt<\maxLoopLimit\do{%
-\rnd@cnt=1\relax%
-\@for\ne@@tmp:=\rand@ne\do{%
-\ifnum\tmp@a=\ne@@tmp\relax%
-\multiply\rnd@cnt0\relax%
-\else%
-\multiply\rnd@cnt1\relax%
-\fi%
-}%
-\ifnum\rnd@cnt=1\relax%%% all conditions are satisfied
-\loopCnt=\maxLoopLimit%
-\else%
-\advance\loopCnt1\relax%
-\ifnum\loopCnt=\maxLoopLimit%
-\PackageError{esami}{\es@fpsetparerrorshort}{\es@fpsetparerrorshort}%
-\else%
-\setrannum{\tmp@a}{#3}{#4}%
-\fi%
-\fi%
+\ifx\rand@ne\@empty\else\loopCnt=0\relax
+ \@whilenum\loopCnt<\maxLoopLimit\do{%
+ \rnd@cnt=1\relax
+ \@for\ne@@tmp:=\rand@ne\do{%
+ \ifnum\tmp@a=\ne@@tmp\relax
+ \multiply\rnd@cnt0\relax
+ \else%
+ \multiply\rnd@cnt1\relax
+ \fi%
+ }%
+ \ifnum\rnd@cnt=1\relax%% all conditions are satisfied
+ \loopCnt=\maxLoopLimit\relax
+ \else%
+ \advance\loopCnt1\relax
+ \ifnum\loopCnt=\maxLoopLimit
+ \PackageError{esami}{\es@fpsetparerrorshort}{\es@fpsetparerrorshort}%
+ \else%
+ \setrannum{\tmp@a}{#3}{#4}%
+ \fi%
+ \fi%
+ }%
+ \fi%
+ \FPeval{#2}{round(\number\tmp@a:0)}%
+ \ifes@fillin
+ \immediate\write\parametri{\string\FPeval\string{#2\string}\string{round(\number\tmp@a:0)\string}}%
+ \fi
+ \randomi=\number\old@randomi%%% restores the seed
}%
\fi%
-\FPeval{#2}{round(\number\tmp@a:0)}%
-\ifes@fillin%
-\immediate\write\parametri{\string\FPeval\string{#2\string}\string{round(\number\tmp@a:0)\string}}%
-\fi%
-\randomi=\number\old@randomi%%% restores the seed
-}%
-\fi
%%%% Command for random sign (taken from rangen) %%%%%
\newcommand{\RandS}{%
@@ -731,25 +817,26 @@
%%%
\ifes@param
\renewcommand{\FPsv}[2][0]{(#2)}%%% \FPsv shows oparations
-\renewcommandx{\FPval}[3][2=0]{\expandafter\def\csname#1\endcsname{(#1)}
+\renewcommandx{\FPval}[3][2=0]
+{%
+\expandafter\def\csname#1\endcsname{(#1)}
\immediate\write\params{%%% writes on a file
- \string\textbf\string{\string\noindent\space \es@parametermessagea{#1}{#3}
- \string}\string\newline}}
+\string\textbf\string{\string\noindent\space \es@parametermessagea{#1}{#3}\string}\string\newline
+}
+}
\renewcommand{\FPsignpol}[2]{+(#1)#2} %%% adapted from code contributed by Hjalmar Basile NEW 2016/04/11
\renewcommand{\simpsqrt}[2]{\sqrt[#1]{(#2)}}%%% \simpsqrt shows operations
\renewcommand{\sempli}[2]{%%% all simplifications become \frac
\ifthenelse{\equal{#2}{1}}{(#1)}{\frac{#1}{#2}}}
- \renewcommand{\semplix}[2]{%
- \ifthenelse{\equal{#2}{1}}{(#1)}{\frac{#1}{#2}}}
- \renewcommand{\sempliz}[2]{%
- \ifthenelse{\equal{#2}{1}}{(#1)}{\frac{#1}{#2}}}
- \renewcommand{\esempli}[2]{%
- \ifthenelse{\equal{#2}{1}}{(#1)}{\frac{#1}{#2}}}
- \PTsHook{\emph{(\esPTs\ \ifthenelse{\equal{\esPTs}{\detokenize{1}}}{\es@pointname}{\es@pointsname})} %
+ \renewcommand{\semplix}[2]{\ifthenelse{\equal{#2}{1}}{(#1)}{\frac{#1}{#2}}}
+ \renewcommand{\sempliz}[2]{\ifthenelse{\equal{#2}{1}}{(#1)}{\frac{#1}{#2}}}
+ \renewcommand{\esempli}[2]{\ifthenelse{\equal{#2}{1}}{(#1)}{\frac{#1}{#2}}}
+ \PTsHook{%
+ \emph{(\esPTs\ \ifthenelse{\equal{\esPTs}{\detokenize{1}}}{\es@pointname}{\es@pointsname})} %
\ifes@test
\immediate\closeout\params
- \fi
- }
+ \fi
+ }
\fi
% +===================================+
@@ -763,33 +850,39 @@
\newcolumntype{$}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}#1\ignorespaces}
-\ifes@solutions
-\colorlet{tab@ans@color}{red}
-\newcolumntype{C}[1]{>{\color{tab@ans@color}}#1}%%% the column of the solutions is red (option solution)
-\else
-\def\cancella#1\finqui{\phantom{#1}}
-\newcolumntype{C}[1]{>{\cancella}#1<{\finqui}}%%% the column of the solutions is empty (exam)
-\fi
+ \ifes@solutions
+ \colorlet{tab@ans@color}{red}
+ \newcolumntype{C}[1]{>{\color{tab@ans@color}}#1}%%% the column of the solutions is red (option solution)
+ \else
+ \def\cancella#1\finqui{\phantom{#1}}
+ \newcolumntype{C}[1]{>{\cancella}#1<{\finqui}}%%% the column of the solutions is empty (exam)
+ \fi
\newenvironment{tabella}[3][2]{\bigskip%%% open answers in columns #1=n. of visible columns (+1 invisible), #2={r,c,l} alignment of visible columns, #3={r,c,l} alignment of invisible column
\renewcommand\arraystretch{2}
-\begin{tabular}{$#2*{#1}{|^C#3}} }{
-\end{tabular} \renewcommand\arraystretch{1}}
+\begin{tabular}{$#2*{#1}{|^C#3}} }{\end{tabular} \renewcommand\arraystretch{1}}
%========================================================%
% Risposta %
%========================================================%
\ifes@solutions
-\newenvironment{risposta}[2][l]{\relax}{}
+ \newenvironment{risposta}[2][l]{\relax}{}
\else
-\newenvironment{risposta}[2][b]{% #1={b,l} box or lines, #2= heigth of box or number of lines
-\setlength{\es@rig}{#2cm minus 12pt}
- \ifx#1b \fbox{\parbox[b][\es@rig]{\textwidth}{\vfill\hfill }}
- \else
- \ifx#1l \setcounter{risp@righe}{-#2}\stepcounter{risp@righe}
-{\whiledo{\therisp@righe < #2}
-{ \par \vspace{.2cm} \dotfill \stepcounter{risp@righe}}}\else \fi\fi}
-{}
+ \newenvironment{risposta}[2][b]{% #1={b,l} box or lines, #2= heigth of box or number of lines
+ \setlength{\es@rig}{#2cm minus 12pt}
+ \ifx#1b
+ \fbox{\parbox[b][\es@rig]{\textwidth}{\vfill\hfill }}
+ \else
+ \ifx#1l
+ \setcounter{risp@righe}{-#2}\stepcounter{risp@righe}
+ {%
+ \whiledo{\therisp@righe < #2}
+ {\par \vspace{.2cm} \dotfill \stepcounter{risp@righe}}
+ }
+ \else
+ \fi
+ \fi}
+ {}
\fi
%========================================================%
@@ -803,44 +896,43 @@
\expandafter\edef\csname match@num\thematch@q\endcsname{\thematch@q}
}
\ifes@solutions
-\def\match@ans@color#1{\bfseries\color{red}{#1}}%%% visible solutions in red (solutions)
+ \def\match@ans@color#1{\bfseries\color{red}{#1}}%%% visible solutions in red (solutions)
\else
-\def\match@ans@color#1{\phantom{#1}}%%% invisible solutions (exam)
+ \def\match@ans@color#1{\phantom{#1}}%%% invisible solutions (exam)
\fi
\newcommand{\matching}{%%% it generates the 2 columns
\@getitemsr \@getitemsl
\vspace{5mm}
\setcounter{match@q}{0}
}
-\def\@getitemsl{%%% left column and shuffle of items
+\def\@getitemsl%%% left column and shuffle of items
+{%
\i@sh=\thematch@q
\loop
-\expandafter\let \csname flag\number\i@sh\endcsname a%
-\advance\i@sh by-1
-\ifnum\i@sh > 0 \repeat
+ \expandafter\let \csname flag\number\i@sh\endcsname a%
+ \advance\i@sh by-1
+ \ifnum\i@sh > 0 \repeat
\i@sh=\thematch@q
\loop
-\setrannum{\j@sh}{1}{\thematch@q}
-\expandafter\ifx \csname flag\number\j@sh\endcsname a%
-\expandafter\let \csname flag\number\j@sh\endcsname b%%% Sets the flag.
-\expandafter\edef\csname match@qsti\number\i@sh\endcsname{\noexpand\csname match@qstii\number\j@sh\endcsname}
-\setcounter{match@plu}{\thematch@q}
-\addtocounter{match@plu}{-\csname match@numii\number\j@sh\endcsname}
-\addtocounter{match@plu}{1}
-\setcounter{match@plo}{\thematch@q}
-\addtocounter{match@plo}{- \number\i@sh}
-\addtocounter{match@plo}{1}
-\expandafter\edef\csname match@numi\number\i@sh\endcsname{(\Alph{match@plu})}
-\vspace{2ex}
-
-\begin{tabular}{p{.05\textwidth}p{.40\textwidth}p{.01\textwidth}p{.40\textwidth}}
-\underbar{\makebox[.5cm]{\match@ans@color{\csname match@numi\number\i@sh\endcsname}}} & \csname match@qsti\number\i@sh\endcsname&&(\Alph{match@plo})\hspace{3mm}\csname match@ansi\number\i@sh\endcsname%\tabularnewline
-\end{tabular}
- \advance\i@sh by-1
- \ifnum\i@sh > 0 \fi
- \fi
- \ifnum\i@sh > 0
-\repeat
+ \setrannum{\j@sh}{1}{\thematch@q}
+ \expandafter\ifx \csname flag\number\j@sh\endcsname a%
+ \expandafter\let \csname flag\number\j@sh\endcsname b%%% Sets the flag.
+ \expandafter\edef\csname match@qsti\number\i@sh\endcsname{\noexpand\csname match@qstii\number\j@sh\endcsname}
+ \setcounter{match@plu}{\thematch@q}
+ \addtocounter{match@plu}{-\csname match@numii\number\j@sh\endcsname}
+ \addtocounter{match@plu}{1}
+ \setcounter{match@plo}{\thematch@q}
+ \addtocounter{match@plo}{- \number\i@sh}
+ \addtocounter{match@plo}{1}
+ \expandafter\edef\csname match@numi\number\i@sh\endcsname{(\Alph{match@plu})}
+ \vspace{2ex}
+ \begin{tabular}{p{.05\textwidth}p{.40\textwidth}p{.01\textwidth}p{.40\textwidth}}
+ \underbar{\makebox[.5cm]{\match@ans@color{\csname match@numi\number\i@sh\endcsname}}} & \csname match@qsti\number\i@sh\endcsname&&(\Alph{match@plo})\hspace{3mm}\csname match@ansi\number\i@sh\endcsname%\tabularnewline
+ \end{tabular}
+ \advance\i@sh by-1
+ \ifnum\i@sh > 0 \fi
+ \fi
+ \ifnum\i@sh > 0\repeat
}
\def\@getitemsr{%%% right column and shuffle of tems
\i@sh=\thematch@q
@@ -871,64 +963,67 @@
\newif\iffirstpass
\ifes@prova
-\newcommand{\newproblem}[1]{%%% \newproblem for the file "totale-versioni"
-\advance\tmp@quest by1
-\iffirstpass
-\global\advance\@probN by 1
-\else
-\let\nome\currfilebase
-\global\def\problabel{e:\thevers-file:\nome}
-\global\def\probnumber{q:\romannumeral\tmp@quest}
- \ifes@fillin
- \immediate\openout\parametri=qf\nome q\number\j@n e\thevers.parametri.tex
- \fi
-\expandafter\global\expandafter\newcommand\csname \probnumber \endcsname{#1}
- \fi
+ \newcommand{\newproblem}[1]%% \newproblem for the file "totale-versioni"
+{%
+ \advance\tmp@quest by1
+ \iffirstpass
+ \global\advance\@probN by 1
+ \else
+ \let\nome\currfilebase
+ \global\def\problabel{e:\thevers-file:\nome}
+ \global\def\probnumber{q:\romannumeral\tmp@quest}
+ \ifes@fillin
+ \immediate\openout\parametri=qf\nome q\number\j@n e\thevers.parametri.tex
+ \fi
+ \expandafter\global\expandafter\newcommand\csname \probnumber \endcsname{#1}
+ \fi
}
\else
\ifes@correzione
- \newcommand{\newproblem}[1]{%%% \newproblem for the "correzione" option
-\advance\tmp@quest by1
- \iffirstpass
- \global\advance\@probN by 1
- \else
- \let\nome\currfilebase
- \global\def\problabel{e:\thevers-file:\nome}
-\global\def\probnumber{q:\romannumeral\tmp@quest}
- \ifes@fillin
- \immediate\openout\parametri=qf\nome q\romannumeral\tmp@quest e\thevers.parametri.tex
- \fi
-\expandafter\global\expandafter\newcommand\csname @prob-\problabel-\probnumber \endcsname{\unexpanded{#1}}
- \expandafter\global\expandafter\newcommand\csname @probi-\problabel-\probnumber \endcsname{#1}
- \fi
- }
- \else
-\newcommand{\newproblem}[1]{%%% \newproblem for the exam
-\advance\tmp@quest by1
-\iffirstpass
-\global\advance\@probN by 1
-\else
-\let\nome\currfilebase
-\global\def\problabel{e:\thevers-file:\nome}
-\global\def\probnumber{q:\romannumeral\tmp@quest}
-\ifes@fillin
-\ifes@solutions%%% to write the string of solutions
-\immediate\openout\parametri=qf\nome q\romannumeral\tmp@quest e\thevers.parametri.tex
-\fi
-\fi
-
-\expandafter\global\expandafter\newcommand\csname @prob-\problabel-\probnumber \endcsname{\unexpanded{#1}}
-\expandafter\global\expandafter\newcommand\csname @probi-\problabel-\probnumber\endcsname{#1}%%% it assigns a unique name to exercise
-\fi
-}
-\fi
+ \newcommand{\newproblem}[1]%% \newproblem for the "correzione" option
+ {%
+ \advance\tmp@quest by1
+ \iffirstpass
+ \global\advance\@probN by 1
+ \else
+ \let\nome\currfilebase
+ \global\def\problabel{e:\thevers-file:\nome}
+ \global\def\probnumber{q:\romannumeral\tmp@quest}
+ \ifes@fillin
+ \immediate\openout\parametri=qf\nome q\romannumeral\tmp@quest e\thevers.parametri.tex
+ \fi
+ \expandafter\global\expandafter\newcommand\csname @prob-\problabel-\probnumber \endcsname{\unexpanded{#1}}
+ \expandafter\global\expandafter\newcommand\csname @probi-\problabel-\probnumber \endcsname{#1}
+ \fi
+}
+ \else
+ \newcommand{\newproblem}[1]%% \newproblem for the exam
+ {%
+ \advance\tmp@quest by1
+ \iffirstpass
+ \global\advance\@probN by 1
+ \else
+ \let\nome\currfilebase
+ \global\def\problabel{e:\thevers-file:\nome}
+ \global\def\probnumber{q:\romannumeral\tmp@quest}
+ \ifes@fillin
+ \ifes@solutions%%% to write the string of solutions
+ \immediate\openout\parametri=qf\nome q\romannumeral\tmp@quest e\thevers.parametri.tex
+ \fi
+ \fi
+ \expandafter\global\expandafter\newcommand\csname @prob-\problabel-\probnumber \endcsname{\unexpanded{#1}}
+ \expandafter\global\expandafter\newcommand\csname @probi-\problabel-\probnumber\endcsname{#1}%%% it assigns a unique name to exercise
+ \fi
+ }
+ \fi
\fi
\newcommand{\newfillinproblem}[1]{ \newproblem{\fillinproblem #1}}
%%%%%%%% \selectrandomly %%%%%%%
-\newcommand{\selectrandomly}[1]{%
+\newcommand{\selectrandomly}[1]
+{%
\global\@probN=0\relax
\firstpasstrue
\tmp@quest=0
@@ -936,7 +1031,7 @@
\firstpassfalse%%% now prints the question
\tmp@quest=0
\input{#1}
-\@ifundefined{base\nome}{\old@random=\number\randomi %%% 2015/01/16
+\@ifundefined{base\nome}{\old@random=\number\randomi
\randomi=\semeex
\setrannum{\rnd@cnta}{1}{\@probN}
\randomi=\number\old@random
@@ -944,10 +1039,9 @@
}{}
\old@rando=\number\randomi
\randomi=\semeex
-\ifthenelse{\number\semeex=\number\seme}{
-\FPeval\restotrentasei{round(\thevers+\thenomefile+1+base\nome-trunc((\thevers+\thenomefile+base\nome)/36:0)*36:0)}}{
-\FPeval\restotrentasei{round(1+\thenomefile+1+base\nome-trunc((1+\thenomefile+base\nome)/36:0)*36:0)}
-}
+\ifthenelse{\number\semeex=\number\seme}
+{\FPeval\restotrentasei{round(\thevers+\thenomefile+1+base\nome-trunc((\thevers+\thenomefile+base\nome)/36:0)*36:0)}}
+{\FPeval\restotrentasei{round(1+\thenomefile+1+base\nome-trunc((1+\thenomefile+base\nome)/36:0)*36:0)}}
\randomi=\number\old@rando %%% AGGIUNTO 2018/04/28 per giro sbagliato
\ifcase\@probN\or
\def\j@n{1}%%% just one variant
@@ -1015,6 +1109,7 @@
}{
\csname @probi-\problabel-q:\romannumeral\j@m \endcsname
}%
+ \Acapo
\fi
\par\vspace{2mm}
\ifes@param%
@@ -1862,7 +1957,7 @@
\immediate\write\params{\es@EstraiMessage{#2}{#3}}%%% writes to a file
\immediate\closeout\params
}
-\newcommand{\estraialfa}[3]{
+\newcommand{\estraialfa}[3]{%
\beg@al=#1
\loop
\expandafter\edef\csname #3\romannumeral\beg@al \endcsname{(#3\romannumeral\beg@al)}
diff --git a/macros/latex/contrib/phfcc/Makefile b/macros/latex/contrib/phfcc/Makefile
new file mode 100644
index 0000000000..9e513f0870
--- /dev/null
+++ b/macros/latex/contrib/phfcc/Makefile
@@ -0,0 +1,10 @@
+
+PKG = phfcc
+
+-include pkg.mk
+
+pkg.mk:
+ ln -sf ../mkcommon/pkg.mk pkg.mk
+
+install: install_sty install_doc
+
diff --git a/macros/latex/contrib/phfcc/README.md b/macros/latex/contrib/phfcc/README.md
new file mode 100644
index 0000000000..834c20118e
--- /dev/null
+++ b/macros/latex/contrib/phfcc/README.md
@@ -0,0 +1,19 @@
+# The phfcc package
+
+Utilities for inline commenting in collaborative documents.
+
+Easily define helper macros to insert comments in a LaTeX document. A convenient syntax enables you to mark text additions (e.g., "... \phf{I'm adding this text} ..." or "... \phf I'm adding this text\endphf ..."), an in-line comment (e.g., "... We're the best \phf[I'm not sure about this.] ..."), and text removals (e.g., "... \phf*{remove me} ..."). New colors are assigned automatically to each commenter by default, and the appearance of all comments is highly customizable.
+
+# Documentation
+
+Run `make sty` to generate the style file, `make pdf` to generate the package
+documentation, and `make install` to install the package in your local texmf
+tree. Run 'make' or 'make help' for more info.
+
+
+# Author and License
+
+(C) 2020 Philippe Faist, philippe.faist@bluewin.ch
+
+License: [LaTeX project public license](http://www.ctan.org/license/lppl1.3),
+version 1.3 or above
diff --git a/macros/latex/contrib/phfcc/phfcc.dtx b/macros/latex/contrib/phfcc/phfcc.dtx
new file mode 100644
index 0000000000..3f957cb9bb
--- /dev/null
+++ b/macros/latex/contrib/phfcc/phfcc.dtx
@@ -0,0 +1,1898 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2021 by Philippe Faist, philippe.faist@bluewin.ch
+% -------------------------------------------------------
+%
+% This file may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{phfcc.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
+%<package>\ProvidesPackage{phfcc}
+%<*package>
+ [2021/10/06 v2.0 phfcc package]
+%</package>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{xcolor}
+\usepackage{lipsum}
+\usepackage[preset=xpkgdoc]{phfnote}
+\usepackage{phfcc}
+
+\usepackage{needspace}
+
+\usepackage[normalem]{ulem}
+
+\def\eqsign@{=}
+\def\eqsign{\protect\eqsign@}
+\robustify\eqsign
+\makeatother
+
+\def\RevTeX{{\small R\raise-0.2ex\hbox{\textsc{ev}}}\TeX}
+
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+
+\begin{document}
+ \DocInput{phfcc.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{0}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%
+% \changes{v1.0}{2020/04/02}{Initial version}
+%
+% \GetFileInfo{phfcc.dtx}
+%
+% \iffalse Bypass indexing for following commands: \fi
+% \DoNotIndex{\newcommand,\newenvironment,\renewcommand,\long,\def,\edef,\gdef,\xdef,\if,\else,\fi,\par,\relax,\vspace,\vskip,\hspace,\hskip,\vbox,\hbox}
+%
+% \title{\phfqitltxPkgTitle{phfcc}}
+% \author{Philippe Faist\quad\email{philippe.faist@bluewin.ch}}
+% \date{\pkgfmtdate\filedate}
+% \maketitle
+%
+% \begin{abstract}
+% \pkgname{phfcc}---A handy \LaTeX{} package for inline commenting in
+% collaborative LaTeX documents.
+% \end{abstract}
+%
+% \phantomsection\label{sec:toc}
+% \inlinetoc
+%
+% \section{Introduction}
+%
+% When elaborating documents, especially collaborative documents with multiple
+% authors, it is useful to leave inline comments and be able to mark text
+% changes. Often, authors will choose a text color and define a simple macro,
+% like this:
+% \begin{verbatim}
+% \newcommand{\phf}[1]{{\color{blue}Ph.F.: #1}} % Philippe Faist's comments
+% \end{verbatim}
+%
+% This rudimentary approach has a few drawbacks. The main drawback is when
+% highlighting long blocks of text. First of all, it can be hard to visually
+% find the matching closing brace in your editor. Then, the synchronization
+% between your viewer and the TeX source (|synctex|) will no longer point to the
+% correct source line within the highlighted block of text; you will always be
+% pointed at the beginning or the end of the entire block. The reason for this
+% behavior is that the entire text is passed as a macro argument to |\phf|, so
+% |synctex| only sees a single macro call. The fact that a long block of text
+% is passed as a macro argument can also lead to other issues, such as errors
+% with |\verb+...+|-type constructs.
+%
+% Also, it is occasionally desirable to make the difference between sections of
+% text that were added by an author, and an inline off-hand remark, which is not
+% part of the text itself. For instance, with the above macro, we could enclose
+% remarks in ``|[|'' and ``|]|'': %
+% \newcommand{\phfold}[1]{{\color{blue}(Ph.F.:) #1}}
+% \newcommand{\phfoldb}[1]{{\color{blue}\relax #1}}
+% \begin{verbatim}
+% ... \phf{Observe that $A\geq 0$ by definition.}
+% \phf{[I added this sentence because I felt that it wasn't
+% clear from the context that $A\geq 0$]} ...
+% \end{verbatim}
+% to obtain:
+%
+% {\itshape%
+% ... \phfold{Observe that $A\geq 0$ by definition.}
+% \phfold{[I added this sentence because I felt that it wasn't
+% clear from the context that $A\geq 0$]} ...
+% }
+%
+% Observe how the off-hand remark blends with the text. Wouldn't it be nicer
+% if it stood out clearly, and if the initials were perhaps \emph{inside} the
+% brackets, like so?
+%
+% {\itshape%
+% ... \phfoldb{Ph.F.: Observe that $A\geq 0$ by definition.}
+% \phfoldb{\sffamily\bfseries [(Ph.F.:) I added this sentence because
+% I felt that it wasn't
+% clear from the context that $A\geq 0$]} ...
+% }
+%
+% \relax
+%
+% Of course, we could have defined a different macro for the off-hand remark,
+% say |\phfremark|. But typing a different macro name is not convenient,
+% Wouldn't it be nicer if the off-hand remark could be typed with the syntax
+% |\phf[...]|, using square brackets?
+%
+% Also the initials don't have to be repeated at every macro call, it suffice to
+% associate the color to the author perhaps once per page or so. They could
+% also be displayed in the margin, to avoid cluttering the text.
+%
+% Furthermore, to avoid the aforementioned issues with long blocks of text, we
+% could imagine marking text with the syntax |\begin{phf} ... \end{phf}| or even
+% |\phf ... \endphf|.
+%
+% And while we're at it, wouldn't it be cool to mark text removals, as well?
+% We could use the syntax |\phf*{text to be removed}|.
+%
+% And because I definitely didn't have time to spare but still got distracted
+% into programming \LaTeX{} macros to implement the above features, I have the
+% pleasure to present:
+%
+% \textit{\bfseries Introducing \ldots\ the \pkgname{phfcc} package.}\par
+%
+% With \pkgname{phfcc}, you simply define your multi-functional commenting
+% command using the |\phfMakeCommentingCommand| macro.
+%
+% \phfMakeCommentingCommand[initials={A.E.}]{AlE}%
+% \phfMakeCommentingCommand[initials={J.B.}]{JB}%
+% \phfMakeCommentingCommand[initials={PhF}]{phf}%
+% Let's start with a simple example. Suppose two authors, Albert Einstein and
+% John Bell, are commenting on the same document. They might define the
+% commenting commands |\AlE| and |\JB|:
+% \begin{verbatim}
+% \phfMakeCommentingCommand[initials={A.E.}]{AlE}
+% \phfMakeCommentingCommand[initials={J.B.}]{JB}
+% \end{verbatim}
+% Suppose they edit a paragraph of text, with multiple rounds of editing by both
+% authors; they mark their latest changes while leaving comments for the other
+% author as follows:
+% \begin{verbatim}
+% Quantum mechanics developed quickly in the 1920's thanks to the
+% works of Schr\"odinger, Heisenberg, and Dirac, who drew inspiration
+% from earlier ideas by Planck \AlE{and Einstein} \AlE[@JB, you forgot
+% about me!]. Quantum mechanics appears to allow spooky action at a
+% distance via some strange thing called ``entanglement,'' \JB*{but
+% this can be explained with hidden variables}\JB{which has
+% revolutionized our understanding of local realism.} \JB[@Albert,
+% we talked about this...]
+% \end{verbatim}
+% which gives:
+%
+% {\itshape%
+% Quantum mechanics developed quickly in the 1920's thanks to the
+% works of Schr\"odinger, Heisenberg, and Dirac, who drew inspiration
+% from earlier ideas by Planck \AlE{and Einstein} \AlE[@JB, you forgot
+% about me!]. Quantum mechanics appears to allow spooky action at a
+% distance via some strange thing called ``entanglement,'' \JB*{but
+% this can be explained with hidden variables}\JB{which has
+% revolutionized our understanding of local realism.} \JB[@Albert,
+% we talked about this...]%
+% }
+%
+% Read on to learn more about how these commands can be used, what their main
+% features are, how to customize them, and more.
+%
+% As an alternative to \pkgname{phfcc}, you can consider the package
+% \pkgname{todonotes}\footnote{\url{https://ctan.org/pkg/todonotes}}. The
+% commands defined in this package are designed for minimal effort by the
+% commenter (e.g., they only have to type |\phf{...}| or |\phf[...]|). On the
+% other hand \pkgname{todonotes} offers pretty boxes and more flexibility.
+%
+%
+% \section{Syntax of commenting commands}
+%
+% Here is the full syntax of the commenting commands generated with
+% |\phfMakeCommentingCommand|. Suppose the command |\AlE| was defined by
+% issuing |\phfMakeCommentingCommand[initials={A.E.}]{AlE}|. You can write:
+%
+%
+% |\AlE{some text here}| --- \AlE{some text here} --- typeset the given text in
+% color, perhaps to mark an addition by author |AlE| to the document. By
+% default, the initials associated with the command (here, ``A.E.'') will be
+% issued in the margin once per page.
+%
+% |\AlE[please revise this]| --- \AlE[please revise this] --- typeset an inline
+% comment in a different font. This is meant for comments that are not a
+% portion of document text itself but rather an inline remark that refers to the
+% text around it.
+%
+% You can use the |footcomments| style to have your comment typeset as a
+% footnote. (See also \autoref{sec:styles} below.)
+%
+% |\AlE*{text to be removed}| --- \AlE*{text to be removed} --- typeset the
+% given text in a way to indicate that the text should be suppressed.
+%
+% If you use Lua\LaTeX, you can get proper text strikethrough accross entire
+% chunks of text by using the argument |style={rmstrikethrough}| to
+% |\phfMakeCommentingCommand|. (See also \autoref{sec:styles} below.)
+%
+% |\AlE!{important piece of text}| --- \AlE!{important piece of text}
+% --- typeset the given text marking it as important.
+%
+% |\AlE![a really important comment]| --- \AlE![a really important comment] ---
+% typeset the given comment and mark it as important.
+%
+% In each of these cases (except for comments in square brackets),
+% you can use the syntax |\AlE .... \endAlE| instead of specifying the
+% argument using curly brackets:\\
+% |\AlE text here\endAlE| --- \AlE text here\endAlE \\
+% |\AlE! important\endAlE| --- \AlE! important\endAlE \\
+% |\AlE* remove\endAlE| --- \AlE* remove\endAlE
+%
+% For simple text, you can also use the |\begin|/|\end| syntax:\\
+% |\begin{AlE} text here\end{AlE}| --- \begin{AlE} text here\end{AlE}
+%
+% \begin{pkgtip}
+% Note that in contrast to optional arguments in many LaTeX macros, the
+% argument is allowed to contain matching square brackets, for instance
+% \relax%
+% |\AlE[inner brackets [like this] work as you'd expect]| \AlE[inner brackets
+% [like this] work as you'd expect]
+%
+% In any case you can protect the argument as usual with curly braces:
+% |\AlE[{this is [weird}]| \AlE[{this is [weird}]
+% \end{pkgtip}
+%
+% \section{Defining your commenting command}
+%
+% Now let's see exactly how to define your customized |\AlE| command.
+% \DescribeMacro{\phfMakeCommentingCommand} The command
+% |\phfMakeCommentingCommand| takes the following syntax:
+%
+% |\phfMakeCommentingCommand|\oarg{key=value,key2=value2,...}\marg{cmd name}
+%
+% The \marg{command name} should be given as a text name (e.g.,
+% |{AlE}|), and not as a macro. They key-value pairs may be one of the following:
+%
+%
+% \phfMakeCommentingCommand[color=phfcolor,initials={PhF},formatinitials=box]{phfbox}
+% \phfMakeCommentingCommand[color=phfcolor,initials={PhF},formatinitials=nobox]{phfnobox}
+% \phfMakeCommentingCommand[color=phfcolor,initials={PhF},formatinitials=hide]{phfhideinitials}
+% \phfMakeCommentingCommand[color=green!50!blue,initials={Philippe Faist},formatinitials=footnote]{phffootnote}
+%
+% \begin{cmdoptions}
+% \item[color=\marg{color specification}] The color of the comments generated by
+% the new commenting command. By default, a new suitable color is chosen for
+% each new commenting command defined.
+%
+% The color specification may be a name such as |red|, |green|, etc., but also
+% a mixture like |blue!40!green| (\textcolor{blue!40!green}{which stands for
+% 40\% of blue and 60\% of green}). You can specify any argument you could
+% specify to |\colorlet| from the \pkgname{xcolor} package. (The
+% \pkgname{xcolor} package is automatically loaded.)
+%
+% \item[initials=\marg{your initials}] Your name initials, which will by typeset
+% at the beginning of a comment (typically in a small box in the margin),
+% allowing to identify different comment colors with different people. By
+% default, the initials are set to the name of the command itself.
+%
+% \item[formatinitials=\meta{keyword or command}] The command that will be used
+% to format the initials. By default (|formatinitials=default| or
+% |formatinitials=margin|), the initials are displayed on the margin of the
+% paragraph the first time the change occurs on a given page \phf[like this
+% and like in the examples above]. You may also specify |formatinitials=box|
+% to typeset the initials inline immediately before your annotation
+% \phfbox[like this]. Specify |formatinitials=nobox| to remove the frame
+% \phfnobox[like this]. Or specify |formatinitials=hide| to hide the initials
+% altogether \phfhideinitials[like this]. You can also specify
+% |formatinitials=footnote| to hide the initials at the point of text but with
+% a footnote to associate colored comments with the name (for this to work
+% more nicely, specify your full name as argument to |initials={...}|)
+% \phffootnote[Here is an example]. [See
+% \autoref{sec:customize-initials-formatting} for customizing the formatting of
+% the margin initials for the |margin| style or for changing the text in the
+% footnote in the |footnote| style.]
+%
+% You may also specify as a value to the |formatinitials=| option any \LaTeX{}
+% command, which will then be used to format the initials. The macro should
+% accept a single argument, the initials.
+%
+% The default initials formatting style (|formatinitials=margin|) requires the
+% \pkgname{marginnote} package, which is loaded automatically. If you do not
+% want to load the \pkgname{marginnote} package, specify the package option
+% |usemarginnote=false| and set a different |formatinitials=...| style.
+%
+% \item[style=\marg{style name(s)}] Load one or more existing style(s) for the
+% commenting command. The styles must either be predefined, or must have been
+% defined using |\phfDefineCommentingStyle|. Separate style names with a
+% comma.
+%
+% \item[font=\marg{LaTeX commands}] The font commands to invoke when typesetting
+% annotations, regardless of type. By default, \phf{the font is unchanged
+% other than having the author-specific color set}. Also, the font is not
+% reset, so if you type an annotation somewhere where the font is large, the
+% annotation's font will match that font by default. (Different annotation
+% types may set their own font, see below.)
+% \item[spacing=\meta{length}] Spacing to add around normal annotations. This
+% amount of horizontal space is added before and after the annotation.
+% \item[begin=\marg{LaTeX text and/or commands}] Stuff to typeset at the
+% beginning of a general annotation. Nothing is typeset by default.
+% \item[end=\marg{LaTeX text and/or commands}] Stuff to typeset at the end of a
+% general annotation. Nothing is typeset by default.
+%
+% \item[cfont=\marg{LaTeX commands}] The font commands to invoke when
+% typesetting an in-line comment. By default, use \phf[the default sans serif
+% typeface, like this].
+% \item[cspacing=\meta{length}] Spacing to add around comments. This amount of
+% horizontal space is added before and after the comment.
+% \item[cbegin=\marg{LaTeX text and/or commands}] Stuff to typeset at
+% the beginning of a commment. By default, an opening square
+% bracket (with some spacing adjustments).
+% \item[cend=\marg{LaTeX text and/or commands}] Stuff to typeset at
+% the end of a commment. By default, a closing square bracket (with
+% some spacing adjustments).
+%
+% \item[rmfont=\marg{LaTeX commands}] The font commands to issue when
+% typesetting text that is to be removed. \phf*{By default, the text is in
+% italics like this} (If you're using Lua\LaTeX, it's recommended to use the
+% |rmstrikethrough| style for proper strikethrough text; see
+% \autoref{sec:styles}.)
+% \item[rmspacing=\meta{length}] Spacing to add around text that is marked to be
+% removed. This amount of horizontal space is added before and after.
+% \item[rmbegin=\marg{LaTeX text and/or commands}] Stuff to typeset at the
+% beginning of a piece of text to be removed. By default, a line overlapping
+% with the text, to suggest removal.
+% \item[rmend=\marg{LaTeX text and/or commands}] Stuff to typeset at the end of
+% a piece of text to be removed. By default, a line overlapping with the
+% text, to suggest removal.
+%
+% \item[ifont=\marg{LaTeX commands}] The font commands to issue when
+% typesetting important text. \phf!{By default, the text is in
+% larger boldface format like this}
+% \item[ispacing=\meta{length}] Spacing to add around important text. This
+% amount of horizontal space is added before and after.
+% \item[ibegin=\marg{LaTeX text and/or commands}] Stuff to typeset at
+% the beginning of a piece of important text. By default, three
+% exclamation marks.
+% \item[iend=\marg{LaTeX text and/or commands}] Stuff to typeset at
+% the end of a piece of important text. By default, three
+% exclamation marks.
+% \end{cmdoptions}
+%
+% After invoking |\phfMakeCommentingCommand|, the colors |xxxcolor|,
+% |xxxrmcolor| and |xxxrmcolorlink| are automatically defined (where |xxx| is to
+% be replaced by your commenting macro name). These are used respectively for
+% a usual comment color, text to be removed, and for links in text to be
+% removed. You may redefine these colors afterwards with |\colorlet| if you
+% wish:
+% \begin{verbatim}
+% \colorlet{AlErmcolor}{gray}
+% \end{verbatim}
+%
+% \DescribeMacro{\phfDisableCommentingCommands}
+% The command |\phfDisableCommentingCommands| disables all commenting commands,
+% and causes them to emit an error. Use this command when approaching the final
+% version of a long document to ensure that no commenting commands are left in
+% the document.
+%
+% \subsection{Commenting Styles}
+% \label{sec:styles}
+%
+% \emph{Styles} regroup a collection of definitions that alter the overall
+% behavior and appearance of commenting commands issued with
+% |\phfMakeCommentingCommand|. You can assign one or more styles to a
+% commenting command definition by using the |style=| keyword:
+% \begin{verbatim}
+% \phfMakeCommentingCommand[style={footcomments}]{JD} % \JD
+% \end{verbatim}
+%
+% You can combine style names with commas, for instance:
+%
+% \begin{verbatim}
+% \phfMakeCommentingCommand[style={rmstrikethrough,footcomments}]{JD} % \JD
+% \end{verbatim}
+%
+% \phfMakeCommentingCommand[rmbegin={},rmend={},rmspacing=2pt,initials={ZZ}]{dummycmd}
+% \phfMakeCommentingCommand[style={footcomments},initials={YY}]{dummyYY}
+% The following styles are predefined:
+% \begin{itemize}
+% \item \leavevmode\PrintMarginLabel{footcomments} The |footcomments| style
+% arranges for in-line comments to be typeset as footnotes.
+%
+% \begin{verbatim}
+% \phfMakeCommentingCommand[style={footcomments}]{YY}
+%
+% For instance, \YY[This would be an example of a comment
+% typeset as a footnote.] this text might be suitable to
+% comment on.
+% \end{verbatim}
+% gives:
+%
+% ``For instance, \dummyYY[This would be an example of a comment typeset as a
+% footnote.] this text might be suitable to comment on.''
+%
+% This style can be convenient to place comments without interrupting the
+% natural flow of the text.
+%
+% You can redefine |\phfccfootcommentwrapfnmark{..}| to customize the
+% appearance of the footnote mark, and |\phfccfootcommenttextstyle| to get
+% some handle on the commands issued within the footnote contents.
+% \begin{verbatim}
+% \renewcommand\phfccfootcommentwrapfnmark[1]{[[#1]]}
+% \renewcommand\phfccfootcommenttextstyle{\bfseries}
+% \end{verbatim}
+%
+% \item \leavevmode\PrintMarginLabel{rmstrikethrough} For Lua\LaTeX\ users, the
+% style |rmstrikethrough| is available to make text marked for removal drawn
+% in strikethrough font, \dummycmd*{\sout{kind of like this}}. You can cross
+% out entire paragraphs of text which include display equations. Simply use:
+% \begin{verbatim}
+% \phfMakeCommentingCommand[style=rmstrikethrough]{ZZ} % requires LuaLaTeX
+%
+% ... \ZZ*{text to be removed} ... or also ... \ZZ* more
+% text that I want to remove\endZZ ...
+% \end{verbatim}
+%
+% The implementation uses the |lua-ul| package, which requires Lua\LaTeX. To
+% apply this style to all definitions, use
+% |\phfSetDefaultCommentingStyle{style=rmstrikethrough}| (see below).
+%
+% (We do not support strikethrough for regular \LaTeX\ because we weren't able
+% to find an implementation that worked reliably even for large blocks of
+% text. For instance, using the |\sout| from the \pkgname{ulem} package, you
+% cannot strikethrough multiple paragraphs with displayed equations. Plus, to
+% support the extended syntax of |\phfcc|'s commenting commands, we need the
+% strikethrough to be implemented by a state change macro (like |\itshape|) or
+% an environment, and not by a macro that accepts an argument.)
+%
+% \item We'll probably add more predefined styles in the future.
+% \end{itemize}
+%
+% \DescribeMacro{\phfDefineCommentingStyle}
+% You can define a style using |\phfDefineCommentingStyle|:
+% \begin{verbatim}
+% \phfDefineCommentingStyle{mystyle}{
+% font={\fontfamily{phv}\selectfont}, % phv = Helvetica
+% cfont={\bfseries\large},
+% cbegin={{\ensuremath{\bigl\langle}}~},
+% cend={{~\ensuremath{\bigr\rangle}}}
+% }
+% \end{verbatim}
+% You can then define your commenting command invoking this style:
+% \begin{verbatim}
+% \phfMakeCommentingCommand[style=mystyle]{me}
+% \end{verbatim}
+%
+% \phfDefineCommentingStyle{mystyle}{
+% font={\fontfamily{phv}\selectfont},
+% cfont={\bfseries\large},
+% cbegin={{\ensuremath{\bigl\langle}}~},
+% cend={{~\ensuremath{\bigr\rangle}}}
+% }
+% \phfMakeCommentingCommand[style=mystyle]{me}
+%
+% Then \me{for example}, (which was typeset using |\me{for example}|,) the code
+% |\me[A comment]| becomes: \me[A comment].
+%
+% Styles are loaded in the order they are specified (separate style names with
+% commas). Style definitions may themselves contain |style=...| keys to load
+% other styles. Styles are always loaded before user keys, regardless of where
+% the `|style|' key appears in the definition. When styles are loaded, and when
+% the users' keys are set, later keys are overwrite earlier
+% ones.\footnote{Except for an as-of-yet undocumented \phfverb{startcmds} and
+% \phfverb{endcmds} keys which might be relevant if you'd like to develop a
+% style which requires you to issue definitions at the beginning of every
+% annotation.}
+%
+% \DescribeMacro{\phfSetDefaultCommentingStyle} Instead of defining named styles
+% which have to be invoked explicitly, you can also preset the style of all
+% future calls of |\phfMakeCommentingCommand|. You can achieve this result with
+% the |\phfSetDefaultCommentingStyle| command:
+% \begin{verbatim}
+% \phfSetDefaultCommentingStyle{
+% font={\large}
+% }
+% % all annotations defined from here on will appear larger
+% \phfMakeCommentingCommand{AB}
+% \end{verbatim}
+%
+% You can also use |\phfMakeCommentingCommand| to set one or more default
+% style(s) for all future commenting command definitions:
+% \begin{verbatim}
+% \phfSetDefaultCommentingStyle{
+% style={rmstrikethrough,footcomments}
+% }
+% % all annotations defined from here on will have these styles set
+% \phfMakeCommentingCommand{AB}
+% \end{verbatim}
+%
+% \subsection{Customizing the formatting of the initials label}
+% \label{sec:customize-initials-formatting}
+%
+% \paragraph{For the \phfverb{formatinitials=margin} style:}
+%
+% You can customize the appearance of the initials in the margin when using the
+% |formatinitials=margin| initials style by redefining the following macros.
+% Changes affect all margin labels (i.e., changes affect all commenting commands
+% using the |margin| initials formatting style).
+%
+% \DescribeMacro{\phfccformatmargininitials} The |\phfccformatmargininitials| is
+% used to format the initials in the margin. You can redefine it if you'd like
+% the initials to appear differently. Adapt the following, which contains the
+% default definition, to your liking:
+% \begin{verbatim}
+% \renewcommand{\phfccformatmargininitials}[1]{%
+% \fbox{\normalfont\sffamily\footnotesize #1}%
+% }
+% \end{verbatim}
+% (Technical note: the |\fboxsep| length has been set to |1pt| prior to calling
+% this macro.)
+%
+% \DescribeMacro{\phfccmargininitialssep} The |\phfccmargininitialssep| length
+% is the minimal vertical separation between two initials labels. This is a
+% length, so you should change it with |\setlength|:
+% \begin{verbatim}
+% \setlength{\phfccmargininitialssep}{2pt}
+% \end{verbatim}
+%
+% \paragraph{For the \phfverb{formatinitials=box} and
+% \phfverb{formatinitials=nobox} styles:}
+%
+% \DescribeMacro{\phfccformatboxinitials} For the |formatinitials=box| and
+% |formatinitials=nobox| initials style, you can redefine the command
+% |\phfccformatboxinitials| to typeset the initials, like so:
+% \begin{verbatim}
+% \renewcommand{\phfccformatboxinitials}[1]{%
+% \normalfont\sffamily\tiny#1%
+% }
+% \end{verbatim}
+%
+% \paragraph{For the \phfverb{formatinitials=footnote} style:}
+%
+% \DescribeMacro{\phfCCChangesBy} When using the |formatinitials=footnote|
+% initials formatting style, you may redefine |\phfCCChangesBy| to change the
+% text in the footnote:
+% \begin{verbatim}
+% \renewcommand{\phfCCChangesBy}[1]{Changes in this color are by #1}
+% \end{verbatim}
+%
+% \section{Package Options}
+%
+% This package requires the \pkgname{marginnote} package to generate initials
+% labels when using the |margin| initials style (the default style). If you do
+% not want to load the \pkgname{marginnote} package, you may use the package
+% option |usemarginnote=false| (but then you cannot use the |margin| initials
+% style):
+% \begin{verbatim}
+% \usepackage[usemarginnote=false]{phfcc}
+% \end{verbatim}
+%
+% \section{Known limitations}
+%
+% There are some cases where it's hard to get everything right. The
+% \pkgname{phfcc} commands do their best to get stuff right and to avoid
+% generating obscure \LaTeX{} errors, but there might be times where not
+% everything works as expected.
+%
+% \begin{itemize}
+% \item If you place a comment inside certain contructs that are processed twice
+% by \LaTeX{} (e.g., a figure caption when using e.g. the \pkgname{caption}
+% package, etc.) then the margin initials will not appear even if the comment
+% is the first of the page. This is because the margin label is produced the
+% first time they are typeset, per page; if that happened to be in a temporary
+% \TeX{} box that was then discarded, the margin note gets discarded along
+% with it.
+%
+% In the case of AMS equations, there's a hack that make the labels appear
+% right. Feel free to send pull requests to address other cases.
+%
+% \phf[FIXME: A better solution might be to write to the AUX file at each
+% comment, so that the information is written when the comment is actually
+% typeset, and then process where to put margin labels on the second run of
+% \LaTeX{}.
+%
+% As a bonus, this would enable stuff like ``list of comments'' like the
+% \pkgname{todonotes} package does. Even though I don't think it's necessary
+% for the standard use case of this package.]
+%
+% \item Initials in the margin might overlap in some edge cases. See my
+% comments and footnotes in the implementation documentation below.
+%
+% \item Initials in the margin might not appear if the comment immediately
+% follows a page break, because the comment might have been processed while
+% \LaTeX{} was on the previous page before deciding to start a new page. See
+% my comments and footnotes in the implementation doc below.
+% \end{itemize}
+%
+%
+%
+% \StopEventually{\PrintChangesAndIndex}
+%
+% \section{Implementation}
+%
+% Load these internally required packages.
+%
+% \begin{macrocode}
+\RequirePackage{xkeyval}
+\RequirePackage{kvoptions}
+\RequirePackage{etoolbox}
+\RequirePackage{xparse}
+% \end{macrocode}
+%
+% Ensure we have the \pkgname{xcolor} package to manage text colors. We need
+% \pkgname{xcolor} and not \pkgname{color} because we use |\colorlet|.
+% \begin{macrocode}
+\RequirePackage{xcolor}
+% \end{macrocode}
+%
+%
+% \subsection{Set up default settings}
+%
+% \begin{macro}{\phfCommentingDefault...}
+% Provide sensible defaults for commenting formatting.
+%
+% Bold or semibold CFont sounds like a good idea, but comments would seem more
+% aggressive like that, so keep them normal by default.
+% \begin{macrocode}
+\def\phfCommentingDefaultStartCmds{}
+\def\phfCommentingDefaultEndCmds{}
+\def\phfCommentingDefaultFont{}
+\def\phfCommentingDefaultSpacing{0pt}
+\def\phfCommentingDefaultBegin{}
+\def\phfCommentingDefaultEnd{}
+\def\phfCommentingDefaultCFont{\normalfont\sffamily}
+\def\phfCommentingDefaultCSpacing{0.2em}
+\def\phfCommentingDefaultCBegin{[\,}
+\def\phfCommentingDefaultCEnd{\,]}
+\def\phfCommentingDefaultRmFont{\small\itshape}%\itshape\notesmaller[0.9]}
+\def\phfCommentingDefaultRmSpacing{.3em}
+\def\phfCommentingDefaultRmBegin{%
+ \mbox{}\vrule height .55ex depth -.45ex width 1.4em\relax\hspace*{0.2em}%
+ \vrule height .55ex depth -.45ex width 0.6em\relax
+ \hspace*{-2em}}
+\def\phfCommentingDefaultRmEnd{%
+ \hspace*{-2em}%
+ \vrule height .55ex depth -.45ex width 0.6em\relax\hspace*{0.2em}%
+ \vrule height .55ex depth -.45ex width 1.4em\relax}
+\def\phfCommentingDefaultIFont{\large\bfseries}
+\def\phfCommentingDefaultISpacing{0.25em}
+\def\phfCommentingDefaultIBegin{!\hspace*{0.1em}!\hspace*{0.1em}!~}
+\def\phfCommentingDefaultIEnd{~!\hspace*{0.1em}!\hspace*{0.1em}!}
+% \end{macrocode}
+% \end{macro}
+%
+% A default list of colors for commenting, and a minimal tool to select the next
+% available color. The macro |\phf@cc@usedcolors| stores a
+% vertical-bar-separated list of color names that have been already used and
+% which should not be used again.
+% \begin{macrocode}
+\definecolor{phfcc0}{RGB}{0,148,240} % blue-y
+\definecolor{phfcc1}{RGB}{242,108,13} % orange-brown-y
+\definecolor{phfcc2}{RGB}{65,149,42} % green-y
+\definecolor{phfcc3}{RGB}{128,55,134} % purple-y
+\definecolor{phfcc4}{RGB}{0,129,129} % blue-green-y
+\definecolor{phfcc5}{RGB}{148,7,24} % dark red / burgundy
+\definecolor{phfcc6}{RGB}{160,120,0} % brownish
+\definecolor{phfcc7}{RGB}{35,195,155} % aqua-ish
+\csdef{phf@cc@presetcolor@0}{phfcc0}
+\csdef{phf@cc@presetcolor@1}{phfcc1}
+\csdef{phf@cc@presetcolor@2}{phfcc2}
+\csdef{phf@cc@presetcolor@3}{phfcc3}
+\csdef{phf@cc@presetcolor@4}{phfcc4}
+\csdef{phf@cc@presetcolor@5}{phfcc5}
+\csdef{phf@cc@presetcolor@6}{phfcc6}
+\csdef{phf@cc@presetcolor@7}{phfcc7}
+\def\phf@cc@usedcolors{|}
+\def\phf@cc@nextcolor@#1{%
+ \ifcsname phf@cc@presetcolor@#1\endcsname% try preset
+ \edef\phf@tmp@testxx{%
+ \noexpand\in@{|\csname phf@cc@presetcolor@#1\endcsname|}{\phf@cc@usedcolors}}%
+ \phf@tmp@testxx
+ \ifin@% color already used, try next
+ \expandafter\phf@cc@nextcolor@\expandafter{\the\numexpr#1+1\relax}%
+ \else
+ \def\phf@cc@thecolor{\csname phf@cc@presetcolor@#1\endcsname}% good, use
+ \fi
+ \else% out of colors, fallback to red
+ \def\phf@cc@thecolor{red}%
+ \fi
+}
+% \end{macrocode}
+% Read the argument. If non-empty, set |\phf@cc@thecolor| to the argument
+% value. If empty, choose the next available preset color and set
+% |\phf@cc@thecolor| to that.
+% \begin{macrocode}
+\def\phf@cc@getcolor#1{%
+ \edef\phf@tmp@xyz{#1}%
+ \if\relax\detokenize\expandafter{\phf@tmp@xyz}\relax
+ \phf@cc@nextcolor@{0}%
+ \else
+ \edef\phf@cc@thecolor{#1}%
+ \fi}
+% \end{macrocode}
+%
+%
+%
+% Define the keys for |\setkeys| with \pkgname{xkeyval} package, and set the
+% overall defaults.
+% \begin{macrocode}
+\def\phfcc@hook@phfmkccstyle@setstyle@noop#1{}
+\let\phfcc@hook@phfmkccstyle@setstyle\phfcc@hook@phfmkccstyle@setstyle@noop
+\define@cmdkey{phfmkccstyle}{style}{\phfcc@hook@phfmkccstyle@setstyle{#1}}
+
+\define@cmdkey{phfmkcc}{color}{}
+\define@cmdkey{phfmkcc}{initials}{}
+\define@cmdkey{phfmkcc}{formatinitials}{}
+\newtoks\cmdKV@phfmkcc@startcmds
+\newtoks\cmdKV@phfmkcc@endcmds
+\define@key{phfmkcc}{startcmds}{%
+ \cmdKV@phfmkcc@startcmds=\expandafter{\the\cmdKV@phfmkcc@startcmds#1}%
+}
+\define@key{phfmkcc}{endcmds}{%
+ \edef\x{\unexpanded{#1}\the\cmdKV@phfmkcc@endcmds}%
+ \cmdKV@phfmkcc@endcmds=\expandafter{\x}%
+}
+\define@cmdkey{phfmkcc}{font}{}
+\define@cmdkey{phfmkcc}{spacing}{}
+\define@cmdkey{phfmkcc}{begin}{}
+\define@cmdkey{phfmkcc}{end}{}
+\define@cmdkey{phfmkcc}{cfont}{}
+\define@cmdkey{phfmkcc}{cspacing}{}
+\define@cmdkey{phfmkcc}{cbegin}{}
+\define@cmdkey{phfmkcc}{cend}{}
+\define@cmdkey{phfmkcc}{rmfont}{}
+\define@cmdkey{phfmkcc}{rmspacing}{}
+\define@cmdkey{phfmkcc}{rmbegin}{}
+\define@cmdkey{phfmkcc}{rmend}{}
+\define@cmdkey{phfmkcc}{ifont}{}
+\define@cmdkey{phfmkcc}{ispacing}{}
+\define@cmdkey{phfmkcc}{ibegin}{}
+\define@cmdkey{phfmkcc}{iend}{}
+\define@cmdkey{phfmkcc}{groupcmd}{}
+% \end{macrocode}
+%
+% Factory defaults refer to the |\phfCommentingDefault***| commands.
+% \begin{macrocode}
+\presetkeys{phfmkcc}{%
+ color={},%
+ initials={},%
+ formatinitials={default},%
+ startcmds={\phfCommentingDefaultStartCmds},%
+ endcmds={\phfCommentingDefaultEndCmds},%
+ font={\phfCommentingDefaultFont},%
+ spacing={\phfCommentingDefaultSpacing},%
+ begin={\phfCommentingDefaultBegin},%
+ end={\phfCommentingDefaultEnd},%
+ cfont={\phfCommentingDefaultCFont},%
+ cspacing={\phfCommentingDefaultCSpacing},%
+ cbegin={\phfCommentingDefaultCBegin},%
+ cend={\phfCommentingDefaultCEnd},%
+ rmfont={\phfCommentingDefaultRmFont},%
+ rmspacing={\phfCommentingDefaultRmSpacing},%
+ rmbegin={\phfCommentingDefaultRmBegin},%
+ rmend={\phfCommentingDefaultRmEnd},%
+ ifont={\phfCommentingDefaultIFont},%
+ ispacing={\phfCommentingDefaultISpacing},%
+ ibegin={\phfCommentingDefaultIBegin},%
+ iend={\phfCommentingDefaultIEnd},%
+ groupcmd={\@firstofone}%
+}{}
+% \end{macrocode}
+%
+% \subsection{Helpers and handlers for styles}
+%
+% \begin{macro}{\phfDefineCommentingStyle}
+% User interface for defining custom comment styles.
+% \begin{macrocode}
+\newcommand\phfDefineCommentingStyle[2]{%
+ \csdef{phfcc@style@#1}{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\phfSetDefaultCommentingStyle}
+% User interface for defining the default settings for all commenting commands
+% declared from now on. Keep note of |style=| keywords separately (in
+% |\phfcc@default@style|), because we cannot place them as |\presetkeys| in
+% the main options family.
+% \begin{macrocode}
+\def\phfcc@default@style{}
+\def\phfcc@hook@phfmkccstyle@setstyle@savestyle#1{%
+ \xdef\phfcc@default@style{#1}%
+}
+\newcommand\phfSetDefaultCommentingStyle[1]{%
+ \let\phfcc@hook@phfmkccstyle@setstyle\phfcc@hook@phfmkccstyle@setstyle@savestyle
+ \setkeys*{phfmkccstyle}{#1}%
+ \let\phfcc@hook@phfmkccstyle@setstyle\phfcc@hook@phfmkccstyle@setstyle@noop
+ \edef\x{\noexpand\presetkeys{phfmkcc}{\expandonce\XKV@rm}{}}%
+ \x
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Internal helpers for loading styles}
+%
+% \begin{macro}{\phfcc@expandstylekeys}
+% Helpers to expand style= instructions in a set of key=vals.
+%
+% The helper macro |\phfcc@expandstylekeys| accepts two arguments. The
+% argument |#1| is a list of style names and |#2| is a collection of key=value
+% pairs. This macro computes all the key=value settings that should be
+% applied from the style definitions, plus all the remaining user key=value
+% settings. We will recursively look for style=... keywords so that styles
+% can load other styles.
+%
+% The final expanded key=value pairs is set in the token register
+% |\phfcc@val@expanded@keyval|.
+% \begin{macrocode}
+\newtoks\phfcc@val@expanded@keyval
+\def\phfcc@expandstylekeys#1#2{%
+ \def\phfcc@val@expanded@preexpandstyles{#1}%
+ \phfcc@val@expanded@keyval={#2}%
+ \loop
+ \phfcc@expandstylekeys@once
+ \def\phfcc@val@expanded@preexpandstyles{}%
+ \ifnum\phfcc@val@expanded@needmore=1\repeat
+}
+% \end{macrocode}
+%
+% The implementation of |\phfcc@expandstylekeys| proceeds by iterating single
+% expansions until there are no more |style={}| values left. A single iteration
+% is implemented here. The following macro reads its input from
+% |\phfcc@val@expanded@preexpandstyles| and |\phfcc@val@expanded@keyval|, and it
+% sets the macros |\phfcc@val@expanded@keyval| and
+% |\phfcc@val@expanded@needmore|.
+% \begin{macrocode}
+\def\phfcc@expandstylekeys@once{%
+ \def\cmdKV@phfmkccstyle@style{}
+ \edef\x{\noexpand\setkeys*{phfmkccstyle}{\the\phfcc@val@expanded@keyval}}%
+ \x
+% \end{macrocode}
+% The |style={...}| values is stored in the macro |\cmdKV@phfmkccstyle@style|.
+% If it is empty, there is no style to set and we're done.
+% \begin{macrocode}
+ \if\relax\detokenize\expandafter{\cmdKV@phfmkccstyle@style}\relax
+ \def\phfcc@val@expanded@needmore{0}%
+ \else
+ \def\phfcc@val@expanded@needmore{1}%
+ \fi
+% \end{macrocode}
+% We might have one or more styles to expand. Iterate over the comma-separated
+% list of styles and we'll append the collected style-specific key=value
+% definitions in the macro |\phfcc@val@fullstylekeyvals| for now. Include also
+% the predefined style names to expand before the user-specified styles.
+% \begin{macrocode}
+ \def\phfcc@val@fullstylekeyvals{}%
+ \edef\phfcc@tmp@thestylelist{%
+ \phfcc@val@expanded@preexpandstyles,\cmdKV@phfmkccstyle@style}%
+ \@for\phfcc@tmp@next:=\phfcc@tmp@thestylelist \do{%
+% \end{macrocode}
+% At this point we're requested to expand the style whose name is stored in
+% |\phfcc@tmp@next|. Collect the key=value definitions in the macro named
+% |\phfcc@style@STYLENAME| or produce an error if such macro does not exist.
+% Also, if the style provides a macro named |\phfcc@styleused@STYLENAME|, then
+% invoke it at this point, in case the style would like to load any additional
+% packages or execute any other preamble-time setup steps. In the following
+% |\phfcc@tmp@stylekeyvals| is defined so that its immediate expansion yields
+% the styles' key=value definitions.
+% \begin{macrocode}
+ \ifcsname phfcc@style@\phfcc@tmp@next \endcsname
+ \ifcsname phfcc@styleused@\phfcc@tmp@next \endcsname
+ \csname phfcc@styleused@\phfcc@tmp@next \endcsname
+ \fi
+ \edef\phfcc@tmp@stylekeyvals{%
+ \expandafter\expandonce\csname phfcc@style@\phfcc@tmp@next \endcsname}%
+ \edef\phfcc@val@fullstylekeyvals{%
+ \expandonce\phfcc@val@fullstylekeyvals,%
+ \expandonce\phfcc@tmp@stylekeyvals}%
+ \else
+ \if\relax\detokenize\expandafter{\phfcc@tmp@next}\relax
+ \else
+ \PackageError{phfcc}{Requested commenting style `\phfcc@tmp@next' %
+ is not defined}{}%
+ \fi
+ \fi
+ }%
+% \end{macrocode}
+% Now we can collect the definitions from the styles and merge them with the
+% remaining non-style-related user key/values. The macro |\XKV@rm| is set by
+% \pkgname{xkeyval} to those key/values not processed by |\setkeys*|.
+% \begin{macrocode}
+ \edef\x{\noexpand\phfcc@val@expanded@keyval={%
+ \expandonce\phfcc@val@fullstylekeyvals,%
+ \expandonce\XKV@rm}}%
+ \x
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{The \phfverb{rmstrikethrough} predefined style}
+%
+% \begin{macro}{\phfcc@style@rmstrikethrough}
+% The definition of the |rmstrikethrough| style is fairly straightforward.
+% \begin{macrocode}
+\gdef\phfcc@styleused@rmstrikethrough{%
+ \RequirePackage{lua-ul}
+ \newunderlinetype\beginPhfccStrikeThrough{%
+ \leaders\vrule height .55ex depth -.45ex}
+ \gdef\phfcc@styleused@rmstrikethrough{}% auto-destruct/only run once
+}
+\def\phfcc@style@rmstrikethrough{%
+ rmfont={\beginPhfccStrikeThrough},
+ rmbegin={},
+ rmend={},
+ rmspacing={2pt}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{The \phfverb{footcomments} predefined style}
+%
+% \begin{macro}{\phfcc@style@footcomments}
+% The |footcomments| style uses |startcmds| and |endcmds| to collect material
+% and then typeset it into a footnote.
+% \begin{macrocode}
+\def\phfcc@style@footcomments{%
+ startcmds={\phfcc@collectcommentfootnote},
+ endcmds={\phfcc@endcollectcommentfootnote},
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\phfccfootcommenttextstyle}
+% The macro |\phfccfootcommenttextstyle| can be redefined to customize the
+% footnote text appearance.
+% \begin{macrocode}
+\def\phfccfootcommenttextstyle{\footnotesize}
+% \end{macrocode}
+% \end{macro}
+%
+% Now we define helpers to collect the contents of the footnote, and then
+% typeset it.
+%
+% \begin{macro}{\phfcc@collectcommentfootnote}
+% \begin{macro}{\phfcc@endcollectcommentfootnote}
+% The entry point to these helpers are the macros
+% |\phfcc@collectcommentfootnote| and |\phfcc@endcollectcommentfootnote|: They
+% check whether this annotation is a comment and then call our main helpers if
+% that's the case.
+% \begin{macrocode}
+\def\phfcc@collectcommentfootnote{%
+ \if@phfcc@iscomment
+ \expandafter\phfcc@collectfootnote
+ \fi}
+\def\phfcc@endcollectcommentfootnote{%
+ \if@phfcc@iscomment
+ \expandafter\phfcc@endcollectfootnote
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\phfcc@collectfootnote}
+% \begin{macro}{\phfcc@endcollectfootnote}
+% \begin{macro}{\phfcc@startfootnote}
+% The helper |\phfcc@collectfootnote| collects the material and builds the
+% footnote. I had to copy some footnote-building code from |latex.ltx|
+% unfortunately: We can't call |\footnote{}| because it requires a macro
+% argument; we need begin/end macros to feed all the footnote contents and
+% material as \TeX\ parses it. Recall that \LaTeX's |\footnote| basically (1)
+% steps the footnote counter (the counter name is stored in |\@mpfn| and the
+% printable value is given by |\thempfn|) and prints the footnote mark
+% (|\@footnotemark|), and (2) collects material in the |\insert| called
+% |\footins|. The code relevant to (1) is collected in
+% |\phfcc@startfootnote|. The code relevant to (2) is collected and adapted
+% below between |\phfcc@collectfootnote| and |\phfcc@endcollectfootnote|.
+% \begin{macrocode}
+\def\phfcc@collectfootnote{%
+ \phfcc@startfootnote
+ \insert\footins\bgroup%
+ \reset@font\footnotesize
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+ \hsize\columnwidth \@parboxrestore
+ \protected@edef\@currentlabel{%
+ \csname p@footnote\endcsname\@thefnmark
+ }%
+ \color@begingroup
+ \@makefntext{%
+ \rule\z@\footnotesep\@finalstrut\strutbox\phfcc@hackrevtex@skippar}%
+ \ignorespaces
+ \footnotesize
+ \color{\phf@cc@val@cur color}%
+ \phfccfootcommenttextstyle
+}
+\def\phfcc@endcollectfootnote{%
+ \unskip
+ \color@endgroup
+ \egroup
+}
+\def\phfcc@startfootnote{%
+ \stepcounter\@mpfn
+ \protected@xdef\@thefnmark{\thempfn}%
+ \phfccfootcommentwrapfnmark{\@footnotemark}%
+}
+\def\phfccfootcommentwrapfnmark#1{%
+ [#1]%
+}
+% \end{macrocode}
+% Above, we used the class-provided |\@makefntext| macro to make comment
+% footnotes look like the other document-provided footnotes, but we invoke that
+% macro with dummy content because remember, we haven't collected the footnote
+% contents yet. But some latex classes, like Rev\TeX, this macro add a
+% paragraph; so we need to eliminate that paragraph break that would otherwise
+% appear at the beginning of the footnote:
+% \begin{macrocode}
+\def\phfcc@hackrevtex@skippar{%
+ \@ifnextchar\par\@gobble\relax
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Define styles for initials formatting}
+%
+% Define the implementations for the different initials formatting. These are
+% by default the small boxes that appear in the margin that match color to
+% comment owner.
+%
+% Define the |margin| initials style as the default:
+% \begin{macrocode}
+\def\phf@cc@formatinitialsstyle@default{\phf@cc@formatinitialsstyle@margin}
+% \end{macrocode}
+%
+% \subsubsection{Define styles \phfverb{hide}, \phfverb{box}, \phfverb{nobox}}
+%
+% \begin{macro}{\phf@cc@formatinitialsstyle@hide}
+% Define the no-op |hide| style first.
+% \begin{macrocode}
+\def\phf@cc@formatinitialsstyle@hide#1{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\phf@cc@formatinitialsstyle@box}
+% \begin{macro}{\phf@cc@formatinitialsstyle@nobox}
+% Define the |box|, and |nobox| styles. In either cases, the label can be
+% customized by redefining |\phfccformatboxinitials|.
+% \begin{macrocode}
+\def\phf@cc@formatinitialsstyle@box#1{%
+ \hspace{0.25em}\relax
+ \raisebox{1pt}{{\fboxsep=1pt\relax\fbox{\phfccformatboxinitials{#1}}}}%
+ \hspace{0.25em}}
+\def\phf@cc@formatinitialsstyle@nobox#1{%
+ \hspace{0.25em}\relax
+ {\phfccformatboxinitials{#1}}%
+ \hspace{0.25em}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\phfccformatboxinitials}
+% \begin{macrocode}
+\def\phfccformatboxinitials#1{%
+ \normalfont\sffamily\tiny#1%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Define the style \phfverb{footnote}}
+%
+% Define the |footnote| style. Note you can redefine |\phfCCChangesBy| to
+% whatever you please, and it can even take the name as |#1| argument.
+% \begin{macrocode}
+\def\phf@cc@formatinitialsstyle@footnote#1{%
+ \ifcsname phf@cc@valfmtinitialsfootnote@intlspage@\phf@cc@val@cur @\roman{page}\endcsname
+ % already displayed on this page, don't repeat
+ \else
+ \csgdef{phf@cc@valfmtinitialsfootnote@intlspage@\phf@cc@val@cur @\roman{page}}{1}%
+ \def\phf@cc@tmp@zz{\gdef\@thefnmark{}\@footnotetext}%
+ \expandafter\phf@cc@tmp@zz\expandafter{\expandafter{%
+ \expandafter\color\expandafter{\phf@cc@val@cur color}\phfCCChangesBy{#1}}}%
+ \fi
+}
+\robustify\phf@cc@formatinitialsstyle@footnote
+\def\phfCCChangesBy{Changes by\ }
+% \end{macrocode}
+%
+% \subsubsection{Define the style \phfverb{margin}}
+%
+% \begin{macro}{\phf@cc@formatinitialsstyle@margin}
+% Define the |margin| style now. This one is a little tricky.
+% \begin{macrocode}
+\def\phf@cc@formatinitialsstyle@margin#1{%
+% \end{macrocode}
+%
+% First thing, we define an auxiliary global macro to remember whenever we've
+% already displayed the margin note on a given page. If the label was already
+% displayed on this page (as witnessed by the following test macro being
+% defined), don't repeat the label display and skip altogether.\footnote{There
+% are some edge cases here I'm not sure I want to spend the effort to fix. For
+% instance, if the comment appears right after a page break, it might have been
+% processed by \TeX\space while on the previous page and this test might get the
+% page number wrong. Oh well, the label was on last page already so you should
+% know whose comment this is.}
+% \begin{macrocode}
+ \ifcsname phf@cc@valfmtinitialsmargin@intlspage@\phf@cc@val@cur
+ @\roman{page}\endcsname
+ \else
+% \end{macrocode}
+%
+% Check for any other reasons why we shouldn't emit a margin note (e.g. for some
+% known two-pass environments); this is done by |\phf@cc@margin@ifchecks|. Then
+% actually create the margin note with |\phf@cc@margin@emit|.
+% \begin{macrocode}
+ \phf@cc@margin@ifchecks{%
+ \phf@cc@margin@emit{#1}%
+ }%
+ \fi
+}
+\robustify\phf@cc@formatinitialsstyle@margin
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\phf@cc@margin@ifchecks}
+% Detects if we're in a first pass in an AMS equation, for instance, to only
+% emit the label in the second pass (actual typesetting).
+% \begin{macrocode}
+\def\phf@cc@margin@ifchecks#1{%
+ \phf@cc@ififexists{ifmeasuring@}{%
+ \message{Detected first pass in environment, not emitting margin
+ initials label this time.}%
+ }{%
+ \phf@cc@ififexists{if@inlabel}{%
+ \message{Detected comment in latex item label, not emitting margin
+ initials at this time to avoid messing up everything.}%
+ }{%
+ #1%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\phf@cc@ififexists}
+% A helper macro. The |\phf@cc@ififexists|\marg{if-cs-name}\marg{commands if
+% true}\marg{commands if false} macro checks if the command |\ifXXXX| exists,
+% where the name |ifXXXX| is the first argument of |\phf@cc@ififexists|. If it
+% exists, then it checks that ``if'' condition and executes \marg{commands if
+% true} or \marg{commands if false} as appropriate. If the ``if'' macro doesn't
+% exist, then executes \marg{commands if false}.
+% \begin{macrocode}
+\def\phf@cc@ififexists#1#2#3{%
+ \ifcsname #1\endcsname
+ \def\x{\phf@cc@ififexists@{#1}{#2}{#3}}%
+ \else
+ \def\x{#3}%
+ \fi
+ \x
+}
+\def\phf@cc@ififexists@#1#2#3{%
+ \csname #1\endcsname
+ #2%
+ \else
+ #3%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% At this point, we are all set to display the initials in the margin. It seems
+% like there should be nothing wrong with simply emitting a |\marginpar|, but
+% those don't work in footnotes and figure captions, where one would also like
+% to be able to introduce comments. One could use the \pkgname{marginnote}
+% package instead, which is more reliable, but then we can get overlapping
+% margin labels which are not very nice.
+%
+% {\itshape On the subject of |\marginnote| vs |\marginpar|:} The strategy here
+% is use |\marginnote| all the time. Originally I used |\marginpar|, but it
+% doesn't work in footnotes and figure captions, where one often wants to
+% comment things. It's really hard to detect all cases where |\marginpar| is
+% problematic. (|\ifinner| detects minipages/equations, value of |\@captype|
+% detects figure captions, but I didn't manage to detect footnotes reliably, and
+% I anticipate other problematic situations coming up). So I use
+% \pkgname{marginnote} instead, which is more reliable. We could have some
+% complex process to decide whether to use |\marginpar| or |\marginnote|, but
+% only if we can find a really reliable algorithm. When collaborators are
+% commenting on a document in the final hours before a deadline, we really don't
+% want to generate obscure LaTeX errors because they happened to hit an edge
+% case by placing a comment somewhere I hadn't anticipated. So for now,
+% universally use |\marginnote|. If you don't want to load the
+% \pkgname{marginnote} package for whatever reason, use a different initials
+% label style and specify the |usemarginnote=false| package option.
+%
+% To avoid margin notes overlapping with \pkgname{marginnote}, we use custom
+% code with a simple algorithm to shift the margin notes vertically so that they
+% don't overlap. The code is a bit ugly, but it seems to work and it doesn't
+% rely on too specific hacks, so it is hopefully not too prone to edge cases.
+%
+% \begin{macro}{\phf@cc@margin@emit}
+% This is the macro that actually creates the margin note. First we create a
+% |\hbox| with the label so that we can measure its height. Then we defer to
+% |\phf@cc@createmarginnote| to produce the margin note with the formatted
+% initials.
+% \begin{macrocode}
+\newbox\phf@cc@margin@labelbox
+\newdimen\phf@cc@margin@labelboxhgt
+\def\phf@cc@margin@emit#1{%
+ \setbox\phf@cc@margin@labelbox=\hbox{\strut
+ \expandafter\color\expandafter{\phf@cc@val@cur color}%
+ \fboxsep=1pt\relax
+ \phfccformatmargininitials{#1}}%
+ \phf@cc@margin@labelboxhgt=\ht\phf@cc@margin@labelbox
+ \phf@cc@createmarginnote
+ \csgdef{phf@cc@valfmtinitialsmargin@intlspage@\phf@cc@val@cur%
+ @\roman{page}}{1}%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\phfccformatmargininitials}
+% The |\phfccformatmargininitials|\marg{initials} can be redefined to change the
+% appearance of the margin intials box.
+% \begin{macrocode}
+\def\phfccformatmargininitials#1{%
+ \fbox{\normalfont\sffamily\footnotesize #1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\phf@cc@createmarginnote}
+% The tricky thing with \pkgname{marginnote} is that labels will overlap if
+% they are emitted on the same line. Here we use a workaround: We check
+% |\pdflastypos| and add some vertical spacing if we are too close to the last
+% note's y position on the same page. But the issue is that |\pdfsavepos| and
+% |\pdflatexypos| only work while shipping out, so basically all we can do is
+% write the values to the AUX file and use them next time latex is run. Here
+% we use the same mechanism as \pkgname{marginnote}: define a new \LaTeX\space
+% label printing a |\newphfccmarginnote| in the AUX file with the relevant
+% meta-info. We use the internal counters |\@mn@thispage| (current absolute
+% page number) and |\@mn@atthispage| (number of note on current page) because
+% we also need to track which notes are on which page, and there's no use
+% duplicating all that code (I do hope those counters don't change, though).
+% \begin{macrocode}
+\def\phf@cc@createmarginnote{%
+ \marginnote[{\copy\phf@cc@margin@labelbox}]{\copy\phf@cc@margin@labelbox}[%
+ \phf@cc@marginextractvshift]%
+ \phf@cc@savepos
+ \protected@write\@auxout{}{%
+ \string\newphfccmarginnote{%
+ {\@mn@thispage}%
+ {\@mn@atthispage}%
+ {\noexpand\number\phf@cc@lastypos sp}%
+ {\number\phf@cc@margin@labelboxhgt sp}%
+ }%
+ }%
+}
+\ifcsname pdfsavepos\endcsname
+ \let\phf@cc@savepos\pdfsavepos
+ \let\phf@cc@lastypos\pdflastypos
+\else
+ \ifcsname savepos\endcsname
+ \let\phf@cc@savepos\savepos
+ \let\phf@cc@lastypos\lastypos
+ \else
+ \PackageError{phfcc}{Cannot find appropriate \string\pdfsavepos\space
+ command, neither \string\pdfsavepos\space nor\string\savepos\space
+ are defined.}{}
+ \fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\phf@cc@marginextractvshift}
+% The macro |\phf@cc@marginextractvshift| is responsible for extracting the
+% required vertical shift from the corresponding label created from the
+% information saved in the AUX file. \emph{This macro is fully expandable,
+% and is meant to be used as the value of the optional vertical-shift argument
+% in \phfverb{\marginnote}.} The current note is identified by the internal
+% \pkgname{marginnote} counters |\@mn@thispage| (current absolute page number)
+% and |\@mn@atthispage| (current note number on this page).
+%
+% The label |\csname phfccmn@\@mn@thispage.\@mn@atthispage\endcsname|
+% generated by |\newphfccmarginnote| expands to |{|\marg{pdf y-pos of the
+% point in text}\marg{label box height}|}|\relax |{|\marg{requried vertical
+% shift to adjust this note}|}|. The first group of fields are the two last
+% arguments specified to |\newphfccmarginnote| written to the AUX file (the
+% two first are already in the label/macro name), and the second group
+% contains the values (only one currently) computed when calling
+% |\newphfccmarginnote|.
+%
+% Used as |\marginnote|'s vertical shift length. Expands to the vertical
+% shift needed to correct the current note. Remember: no assignments in here,
+% this command must be fully expandable.
+% \begin{macrocode}
+\def\phf@cc@marginextractvshift{%
+ \ifcsname phfccmn@\@mn@thispage.\@mn@atthispage\endcsname
+ \expandafter\expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\@firstofone
+ \expandafter\expandafter\expandafter\@secondoftwo
+ \csname phfccmn@\@mn@thispage.\@mn@atthispage\endcsname
+ \else
+ \z@
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newphfccmarginnote}
+% The |\newphfccmarginnote| command defines the margin label in the AUX file.
+% It's not meant as public API, it's only written in the AUX file to be
+% re-read on next run. Here is where all the calculations are done.
+%
+% In this macro we get the page number, y position, and box height of a margin
+% note written by the previous run of \LaTeX. We need to compute the vertical
+% shift to avoid overlapping with other boxes.
+%
+% The algorithm is pretty dumb. For each margin note, we loop over all
+% already-processed margin notes on the same page. If an overlap is detected,
+% we advance the y-position of the margin note according to the height of the
+% existing overlapping margin note, and re-start the loop.
+%
+% This is also the main entry point into our vertical shift calculating
+% algorithm. Set the |\phf@cc@marginvshift| to zero, this is where the
+% calculated total vertical shift will be stored. Then call our algorithm
+% main routine unless we're the first note on the page.\footnote{There's an
+% edge case here that I haven't dealt with: In the case of footnotes or figure
+% captions, the notes can appear out of order in the AUX file. Our algorithm
+% only checks for overlap with note numbers that are less than the current
+% note number. So if note 1.1 appears in the AUX file after note 1.2, then
+% first 1.2 is processed, no shift is added (it ignores the fact that 1.1
+% doesn't exist yet), then 1.1 is processed and thinks it's the first note so
+% doesn't add a shift either. If this ends up really being a problem there
+% are ways to fix this but now I don't feel it's worth the effort. So you
+% might have a note in a figure caption somehow overlapping with another note
+% if they happen to be in different environments and yet on the same line.}
+% \begin{macrocode}
+\def\phf@cc@marginlastmarginnoteypos{}
+\newdimen\phf@cc@marginvshift
+\def\newphfccmarginnote#1{\newphfccmarginnote@#1}
+\def\newphfccmarginnote@#1#2#3#4{%
+ \phf@cc@marginvshift=\z@
+ \ifnum#2>0\relax
+ \phf@cc@margin@calculatevshift{#1}{#2}{#3}{#4}%
+ \else\fi
+ \csxdef{phfccmn@#1.#2}{%
+ {{#3}{#4}}{\number\phf@cc@marginvshift sp}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\phfccmargininitialssep}
+% The dimension |\phfccmargininitialssep| is the minimum vertical separation
+% between two margin notes initials. Redefine this length to whatever you
+% like (e.g., |\phfccmargininitialssep=1mm\relax| or
+% |\setlength{\phfccmargininitialssep}{1mm}|).
+% \begin{macrocode}
+\newdimen\phfccmargininitialssep
+\phfccmargininitialssep=2\p@
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\phf@cc@margin@calculatevshift}
+% This is our note vertical-shifting algorithm. Compute the vertical shift by
+% looping through existing notes on the present page. The temporary counter
+% |\phf@cc@tmp@cntiter| is the iteration counter and iterates over the notes
+% on the present page up to the current note. (If a note with earlier note is
+% undefined, skip it, this can happen if the note is in a footnote or figure
+% caption; see earlier footnote.)
+%
+% The total vertical shift that needs to be applied to the present note
+% (positive shift = downwards shift) is stored in the dimen
+% |\phf@cc@marginvshift|, to be picked up by |\newphfccmarginnote|. Here
+% |#1|=absolute page no., |#2|=current note no., |#3|=current note y position,
+% |#4|=current note box height.
+% \begin{macrocode}
+\newcount\phf@cc@tmp@cntiter
+\def\phf@cc@margin@calculatevshift#1#2#3#4{%
+ \phf@cc@marginvshift=\z@
+ \phf@cc@tmp@cntiter=0
+ \phf@cc@margin@calculatevshift@{#1}{#2}{#3}{#4}%
+}
+\def\phf@cc@margin@calculatevshift@#1#2#3#4{%
+ \ifnum\phf@cc@tmp@cntiter<#2\relax
+ \ifcsname phfccmn@#1.\the\phf@cc@tmp@cntiter\endcsname
+ \expandafter\let\expandafter
+ \phf@cc@tmp\csname phfccmn@#1.\the\phf@cc@tmp@cntiter\endcsname
+ \edef\phf@cc@tmp@otherypos{%
+ \expandafter\expandafter\expandafter\@firstoftwo
+ \expandafter\@firstoftwo \phf@cc@tmp}%
+ \edef\phf@cc@tmp@otherhgt{%
+ \expandafter\expandafter\expandafter\@secondoftwo
+ \expandafter\@firstoftwo \phf@cc@tmp}%
+ \edef\phf@cc@tmp@othervshift{%
+ \expandafter\expandafter\expandafter\@firstofone
+ \expandafter\@secondoftwo \phf@cc@tmp}%
+ \ifdim\dimexpr\phf@cc@tmp@otherypos-\phf@cc@tmp@othervshift
+ >\dimexpr#3-#4-\phf@cc@marginvshift\relax
+ \ifdim\dimexpr\phf@cc@tmp@otherypos-\phf@cc@tmp@otherhgt-\phf@cc@tmp@othervshift
+ <\dimexpr#3-\phf@cc@marginvshift\relax
+% \end{macrocode}
+% At this point, an overlap is detected between the current note that we're
+% adjusting (note number |#2| on page |#1|) and an earlier processed note (note
+% number |\phf@cc@tmp@cntiter| on the same page). So we shift the current note
+% so that it appears below the other note. The vertical shift is accumulated in
+% the |\phf@cc@marginvshift| dimen, this will be stored into the label after
+% we're done computing. Note: the y-position reported by |\pdflastypos| is from
+% the \emph{bottom}, not the top, so ``higher on the page than'' is ``|>|''; but
+% a positive margin vertical shift in \pkgname{marginnote} shifts the margin
+% note \emph{downwards}.
+%
+% Then reset the iteration counter to zero, so that we re-loop over all existing
+% notes on the same page to re-check (with the new vertical shift) that we
+% didn't generate an overlap with any earlier note (e.g., could happen on a
+% two-column page with comments in both columns).
+% \begin{macrocode}
+ \@tempdima=\dimexpr
+ \phfccmargininitialssep
+ +(#3-\phf@cc@marginvshift)%
+ -(\phf@cc@tmp@otherypos-\phf@cc@tmp@otherhgt-\phf@cc@tmp@othervshift)%
+ \relax
+ %\message{*** phfcc DEBUG: overlap detected of note #1.#2 with
+ % note #1.\the\phf@cc@tmp@cntiter, increasing vshift of note
+ % number #2 on page #1 by \the\@tempdima \space ***}%
+ \advance\phf@cc@marginvshift \@tempdima
+ \phf@cc@tmp@cntiter=\z@\relax
+ \else\fi
+ \else\fi
+ \else\fi
+ \advance\phf@cc@tmp@cntiter 1\relax
+ \phf@cc@margin@calculatevshift@{#1}{#2}{#3}{#4}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{The main \phfverb{\phfMakeCommentingCommand} macro}
+%
+% \begin{macro}{\phfMakeCommentingCommand}
+% Implementation of |\phfMakeCommentingCommand|. See main package
+% documentation for usage details. The inner command definitions are kinda
+% tricky because of all the possible syntax options.
+% |\phfMakeCommentingCommand|\oarg{color=blue,...}\marg{cmdname}
+% \begin{macrocode}
+\newcommand\phfMakeCommentingCommand[2][]{%
+ \cmdKV@phfmkcc@startcmds={}%
+ \cmdKV@phfmkcc@endcmds={}%
+ \edef\x{\noexpand\phfcc@expandstylekeys{\phfcc@default@style}{\unexpanded{#1}}}%
+ \x
+ %\setrmkeys{phfmkcc}%
+ \edef\x{\noexpand\setkeys{phfmkcc}{\the\phfcc@val@expanded@keyval}}%
+ \x
+ \phf@cc@getcolor{\cmdKV@phfmkcc@color}%
+ \colorlet{#2color}{\phf@cc@thecolor}%
+ \edef\phf@tmp@xxappcmd{\noexpand\appto\noexpand\phf@cc@usedcolors{\phf@cc@thecolor|}}%
+ \phf@tmp@xxappcmd
+ \colorlet{#2rmcolor}{#2color!70!gray!55!white}%
+ \colorlet{#2rmcolorlink}{blue!40!#2rmcolor}%
+ \edef\phf@tmp@xxx{\cmdKV@phfmkcc@initials}%
+ \if\relax\detokenize\expandafter{\phf@tmp@xxx}\relax
+ \csedef{phf@cc@val@#2@initials}{#2}%
+ \else
+ \csedef{phf@cc@val@#2@initials}{\cmdKV@phfmkcc@initials}%
+ \fi
+ \ifcsname phf@cc@formatinitialsstyle@%
+ \detokenize\expandafter{\cmdKV@phfmkcc@formatinitials}\endcsname%
+ \expandafter\def\expandafter\phf@cc@tmp@xzx\expandafter{%
+ \csname phf@cc@formatinitialsstyle@%
+ \detokenize\expandafter{\cmdKV@phfmkcc@formatinitials}\endcsname}%
+ \csedef{phf@cc@val@#2@formatinitials}{\expandonce\phf@cc@tmp@xzx}%
+ \else
+ \csedef{phf@cc@val@#2@formatinitials}{\expandonce\cmdKV@phfmkcc@formatinitials}%
+ \fi
+ \csedef{phf@cc@val@#2@startcmds}{\the\cmdKV@phfmkcc@startcmds}%
+ \csedef{phf@cc@val@#2@endcmds}{\the\cmdKV@phfmkcc@endcmds}%
+ %\message{***** STARTCMDS ARE \detokenize\expandafter{\the\cmdKV@phfmkcc@startcmds} *****}%
+ %\message{***** ENDCMDS ARE \detokenize\expandafter{\the\cmdKV@phfmkcc@endcmds} *****}%
+ \csedef{phf@cc@val@#2@font}{\expandonce\cmdKV@phfmkcc@font}%
+ \csedef{phf@cc@val@#2@spacing}{\expandonce\cmdKV@phfmkcc@spacing}%
+ \csedef{phf@cc@val@#2@begin}{\expandonce\cmdKV@phfmkcc@begin}%
+ \csedef{phf@cc@val@#2@end}{\expandonce\cmdKV@phfmkcc@end}%
+ \csedef{phf@cc@val@#2@cfont}{\expandonce\cmdKV@phfmkcc@cfont}%
+ \csedef{phf@cc@val@#2@cspacing}{\expandonce\cmdKV@phfmkcc@cspacing}%
+ \csedef{phf@cc@val@#2@cbegin}{\expandonce\cmdKV@phfmkcc@cbegin}%
+ \csedef{phf@cc@val@#2@cend}{\expandonce\cmdKV@phfmkcc@cend}%
+ \csedef{phf@cc@val@#2@rmfont}{\expandonce\cmdKV@phfmkcc@rmfont}%
+ \csedef{phf@cc@val@#2@rmspacing}{\expandonce\cmdKV@phfmkcc@rmspacing}%
+ \csedef{phf@cc@val@#2@rmbegin}{\expandonce\cmdKV@phfmkcc@rmbegin}%
+ \csedef{phf@cc@val@#2@rmend}{\expandonce\cmdKV@phfmkcc@rmend}%
+ \csedef{phf@cc@val@#2@ifont}{\expandonce\cmdKV@phfmkcc@ifont}%
+ \csedef{phf@cc@val@#2@ispacing}{\expandonce\cmdKV@phfmkcc@ispacing}%
+ \csedef{phf@cc@val@#2@ibegin}{\expandonce\cmdKV@phfmkcc@ibegin}%
+ \csedef{phf@cc@val@#2@iend}{\expandonce\cmdKV@phfmkcc@iend}%
+ \csedef{phf@cc@val@#2@groupcmd}{\expandonce\cmdKV@phfmkcc@groupcmd}%
+% \end{macrocode}
+%
+% Once all the information was gathered and stored, define the commenting command
+% itself (as well as its |\end*| counterpart). Make them robust.
+% \begin{macrocode}
+ \csdef{#2}{\phf@cc@do{#2}}%
+ \expandafter\robustify\csname #2\endcsname%
+ \csdef{end#2}{\phf@cc@end}%
+ \expandafter\robustify\csname end#2\endcsname%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\phfDisableCommentingCommands}
+% This command causes any commenting command declared with
+% |\phfMakeCommentingCommand| to emit an error.
+% \begin{macrocode}
+\newif\ifphf@cc@disabled
+\phf@cc@disabledfalse
+\def\phfDisableCommentingCommands{%
+ \phf@cc@disabledtrue
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Implementation of the commenting commands}
+%
+% Overall, the implementation of a commenting command goes as follows. First,
+% gather all the info about the command invocation (e.g., important? starred?
+% comment?) and then ultimately call |\phf@cc@begin| and |\phf@cc@end| which
+% execute the formatting options.
+%
+% Within each comment, the following flags are set by the parsing mechanism.
+% \begin{macrocode}
+\newif\if@phfcc@iscomment
+\newif\if@phfcc@isremoved
+\newif\if@phfcc@isimportant
+% \end{macrocode}
+%
+% Everything happens within |\begingroup|\ldots|\endgroup|. The group is opened
+% at |\phf@cc@do| (the commenting command itself), and is closed by |\phf@cc@end|.
+%
+% \begin{macro}{\phf@cc@begin}
+% The helper macro |\phf@cc@begin| is responsible for issuing all the
+% necessary definitions for the comment to be typeset correctly, including
+% initials, depending on whether it is a regular text addition, a text removal
+% comment, an important comment, a commenting comment, etc. It inspects
+% |\if@phfcc@iscomment|, |\if@phfcc@isremoved|, and |\if@phfcc@isimportant| to
+% determine the comment type.
+%
+% This is not the main comment entry point, the main entropy point is
+% |\phf@cc@do| and |\phf@cc@begin| is called internally from there. {\itshape
+% Execution is already enclosed in a local \TeX\ group; a |\begingroup| has
+% already been issued by |\phf@cc@do|.}
+% \begin{macrocode}
+\def\phf@cc@begin{%
+% \end{macrocode}
+%
+% First, we set the author's color so that by default everything we do will use
+% that color.
+% \begin{macrocode}
+ \color{\phf@cc@val@cur color}%
+% \end{macrocode}
+%
+% Issuing \phfverb\leavevmode\ here is annoying because it adds vertical space
+% if the command is issued in vertical mode right before an equation or theorem;
+% but it is needed immediately after section and paragraph headings so that the
+% comment style (eg sans font along with color etc.) is not applied to the
+% section/paragraph heading itself.
+% \begin{macrocode}
+ \leavevmode% beurk, see above
+% \end{macrocode}
+%
+% The comment typesetting is constructed in layers, each time adding commands to
+% execute at the start and corresponding commmands to execute at the end. The
+% start commands are executed in the specified order, with the end commands in
+% the reverse order at the end. We use the |\phf@cc@helper@pushgrpcmds| helper
+% to this effect.
+%
+% Introducing the necessary spacing, and issuing the initials. The amount of
+% spacing will depend on the type of comment; |\phf@cc@val@spacing| will be set
+% appropriately below when setting comment-type specific settings.
+% \begin{macrocode}
+ \phf@cc@helper@pushgrpcmds{%
+ \csname phf@cc@val@\phf@cc@val@cur @startcmds\endcsname
+ \hspace{\phf@cc@val@spacing}%
+ \phf@cc@showinitials%
+ }{%
+ \hspace{\phf@cc@val@spacing}%
+ \csname phf@cc@val@\phf@cc@val@cur @endcmds\endcsname
+ }%
+% \end{macrocode}
+%
+% See what comment type we're dealing with, and set the appropriate settings.
+%
+% First, check if we have a commenting-comment. If so, see whether or not it is
+% additionally marked as important and issue the relevant commands. Also set
+% the relevant spacing.
+% \begin{macrocode}
+ \if@phfcc@iscomment
+ \if@phfcc@isimportant
+ \phf@cc@helper@pushgrpcmdsX{%
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @font\endcsname
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @cfont\endcsname
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @ifont\endcsname
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @cbegin\endcsname
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @ibegin\endcsname
+ }{%
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @iend\endcsname
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @cend\endcsname
+ }%
+ \edef\phf@cc@val@spacing{\csname phf@cc@val@\phf@cc@val@cur @ispacing\endcsname}%
+ \else
+ \phf@cc@helper@pushgrpcmdsX{%
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @font\endcsname
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @cfont\endcsname
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @cbegin\endcsname
+ }{%
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @cend\endcsname
+ }%
+ \edef\phf@cc@val@spacing{\csname phf@cc@val@\phf@cc@val@cur @cspacing\endcsname}%
+ \fi
+ \else
+% \end{macrocode}
+% Now check if we have an important comment (which is not a commenty-comment).
+% \begin{macrocode}
+ \if@phfcc@isimportant
+ \phf@cc@helper@pushgrpcmdsX{%
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @font\endcsname
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @ifont\endcsname
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @ibegin\endcsname
+ }{%
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @iend\endcsname
+ }%
+ \edef\phf@cc@val@spacing{%
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @ispacing\endcsname%
+ }%
+ \else
+% \end{macrocode}
+% Not a comment, not important. Could be a piece of text marked for removal.
+% \begin{macrocode}
+ \if@phfcc@isremoved
+ \phf@cc@helper@pushgrpcmdsX{%
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @font\endcsname
+ \noexpand\color{\phf@cc@val@cur rmcolor}%
+ \noexpand\colorlet{docnotelinkcolor}{\phf@cc@val@cur rmcolorlink}%
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @rmfont\endcsname
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @rmbegin\endcsname
+ }{%
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @rmend\endcsname
+ }%
+ \edef\phf@cc@val@spacing{\csname phf@cc@val@\phf@cc@val@cur @rmspacing\endcsname}%
+ \else
+% \end{macrocode}
+% We've got just a plain, old, inline marked text.
+% \begin{macrocode}
+ \phf@cc@helper@pushgrpcmdsX{%
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @font\endcsname
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @begin\endcsname
+ }{%
+ \expandafter\noexpand\csname phf@cc@val@\phf@cc@val@cur @end\endcsname
+ }%
+ \edef\phf@cc@val@spacing{\csname phf@cc@val@\phf@cc@val@cur @spacing\endcsname}%
+ \fi
+ \fi
+ \fi
+% \end{macrocode}
+%
+% Actually issue these commmands and kick off the typesetting of the comment.
+% \begin{macrocode}
+ \phf@cc@val@grpcmds
+}
+\def\phf@cc@helper@pushgrpcmds#1#2{%
+ \appto\phf@cc@val@grpcmds{#1}%
+ \preto\phf@cc@val@grpendcmds{#2}%
+}
+\def\phf@cc@helper@pushgrpcmdsX#1#2{% expands arguments with edef
+ \edef\phfcc@tmp@x{\noexpand\phf@cc@helper@pushgrpcmds{#1}{#2}}%
+ \phfcc@tmp@x
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\phf@cc@end}
+% Here we execute closing commands and close the group. |\phf@cc@end| is the
+% last macro executed when the user invokes a comment, in any case.
+% \begin{macrocode}
+\def\phf@cc@end{%
+ \phf@cc@val@grpendcmds
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\phf@cc@showinitials}
+% This helper macro prints out the initials, if any.
+% \begin{macrocode}
+\def\phf@cc@showinitials{%
+ \edef\phf@cc@tmpx{%
+ \expandafter\expandonce\csname phf@cc@val@\phf@cc@val@cur @initials\endcsname}%
+ \expandafter\notblank\expandafter{\phf@cc@tmpx}{%
+ \csname phf@cc@val@\phf@cc@val@cur @formatinitials%
+ \expandafter\endcsname\expandafter{\phf@cc@tmpx}}{}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\phf@cc@do}
+% {\bfseries The macro |\phf@cc@do| is the main entry point of a commenting
+% command.} Actually, the user-instantiated commenting commands are an alias
+% of this command, with the user macro name as first argument. So the |\AlE|
+% command defined in the main documentation of this package was in fact
+% defined as an alias to |\phf@cc@do{AlE}|. This is were everything starts.
+% \begin{macrocode}
+\def\phf@cc@do#1{%
+% \end{macrocode}
+% First, we need to check if commenting commands were disabled with
+% |\phfDisableCommentingCommands|. If this is the case, generate an error.
+% \begin{macrocode}
+ \ifphf@cc@disabled
+ \PackageError{phfcc}{Commenting commands have been disabled
+ with \string\phfDisableCommentingCommands.}{}%
+ \fi
+% \end{macrocode}
+% Now we start for real. First, we open the \TeX\ group. Then we start parsing
+% the invocation syntax.
+%
+% \begin{macrocode}
+ \begingroup
+ \@phfcc@iscommentfalse
+ \@phfcc@isremovedfalse
+ \@phfcc@isimportantfalse
+% \end{macrocode}
+%
+% The macros |\phf@cc@val@grp*cmds| store the commands to be executed in
+% |\phf@cc@begin| and |\phf@cc@end|. By default, they are empty. They are
+% filled by relevant code when parsing the command invocation.
+%
+% By default, there are no commands at group begin (|\phf@cc@val@grpcmds|), no
+% commands at group end (|\phf@cc@val@grpendcmds|), and no spacing on either
+% side of the typeset comment (|\phf@cc@val@spacing|).
+% \begin{macrocode}
+ \def\phf@cc@val@grpcmds{}%
+ \def\phf@cc@val@grpendcmds{}%
+ \def\phf@cc@val@spacing{0pt}%
+% \end{macrocode}
+%
+% Store the name of the commenting command so we can look up the relevant
+% comment settings. This is the name that was given to the commenting command
+% itself, e.g. |phf|.
+% \begin{macrocode}
+ \edef\phf@cc@val@cur{#1}%
+% \end{macrocode}
+%
+% Here we start the parsing of the type of comment. First, check for a star
+% (e.g., |\phf*{...}|) to see if we're dealing with a removed block of text.
+% \begin{macrocode}
+ \@ifstar\phf@cc@star\phf@cc@nostar%
+}
+% \end{macrocode}
+%
+% If we don't have a star, continue parsing to see if we have an important piece
+% of text or comment (|\phf!| sytnax).
+% \begin{macrocode}
+\def\phf@cc@nostar{\@ifnextchar!\phf@cc@important\phf@cc@grp}
+% \end{macrocode}
+%
+% At this point, we have determined whether the invocation is starred (removed
+% text) or important. The next execution points are |\phf@cc@star|,
+% |\phf@cc@important|, or |\phf@cc@grp|.
+% \end{macro}
+%
+% \begin{macro}{\phf@cc@star}
+% \begin{macro}{\phf@cc@important}
+% If starred or if important, set up the inner group execution commands to the
+% corresponding settings, and defer to |\phf@cc@grp|.
+% \begin{macrocode}
+\long\def\phf@cc@star{%
+ \@phfcc@isremovedtrue
+ \phf@cc@grp}
+\long\def\phf@cc@important!{%
+ \@phfcc@isimportanttrue
+ \phf@cc@grp}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\phf@cc@grp}
+% The command |\phf@cc@grp| parses how the argument content is given. Is it a
+% comment (``|[ ... ]|''), a single \LaTeX{} argument group (``|{ ... }|''),
+% or should we expect it to end with |\endXXX|?
+% \begin{macrocode}
+\def\phf@cc@grp{%
+ \@ifnextchar[\phf@cc@comment\phf@cc@grpnocomment%]
+}
+\def\phf@cc@grpnocomment{%
+ \@ifnextchar\bgroup{\phf@cc@grpwarg}{\phf@cc@begin}}
+% \end{macrocode}
+% \end{macro}
+%
+% The main commenting command has already defined the |\endXXX| command as an
+% alias of |\phf@cc@end|, so in the case of the syntax |\AlE ... \endAlE| we can
+% call |\phf@cc@begin| directly.
+%
+% Now at this point we have determined how the argument is given, and we are
+% calling one of |\phf@cc@comment|, |\phf@cc@grpwarg| (with argument), or
+% |\phf@cc@begin| directly.
+%
+% \begin{macro}{\phf@cc@grpwarg}
+% Format a simple comment specified as a normal \LaTeX{} block, i.e., provided
+% as an argument to the commenting command. (Like |\AlE{text here}| or
+% |\AlE!{important text}| or |\AlE*{some stuff to remove}|.)
+% \begin{macrocode}
+\long\def\phf@cc@grpwarg#1{%
+ \phf@cc@begin
+ \csname phf@cc@val@\phf@cc@val@cur @groupcmd\endcsname
+ {#1}%
+ \phf@cc@end
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\phf@cc@comment}
+% If the argument is a comment, set up the comment font, begin/end chars, and
+% go. Use |xparse| to get the argument in square brackets to ensure that the
+% argument itself can contain matched square brackets.
+% \begin{macrocode}
+\NewDocumentCommand\phf@cc@comment{+O{}}{%
+ \@phfcc@iscommenttrue
+ \phf@cc@begin%
+ #1%
+ \phf@cc@end%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Process package options}
+%
+% Initialization code for \pkgname{kvoptions} for our package options.
+% \begin{macrocode}
+\SetupKeyvalOptions{
+ family=phfcc,
+ prefix=phfcc@opt@
+}
+\DeclareBoolOption[true]{usemarginnote}
+% \end{macrocode}
+%
+% Process package options.
+% \begin{macrocode}
+\ProcessKeyvalOptions*
+% \end{macrocode}
+%
+% Load the \pkgname{marginnote} package unless requested not to. This package
+% is required for the |margin| initials style.
+% \begin{macrocode}
+\ifphfcc@opt@usemarginnote
+ \RequirePackage{marginnote}
+\fi
+% \end{macrocode}
+%
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/phfcc/phfcc.ins b/macros/latex/contrib/phfcc/phfcc.ins
new file mode 100644
index 0000000000..b9c785e1b1
--- /dev/null
+++ b/macros/latex/contrib/phfcc/phfcc.ins
@@ -0,0 +1,55 @@
+%%
+%% Copyright (C) 2016 by Philippe Faist, philippe.faist@bluewin.ch
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3 of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%%
+
+\input docstrip.tex
+\keepsilent
+
+\usedir{tex/latex/phfqitltx}
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2016 by Philippe Faist, philippe.faist@bluewin.ch
+
+This file may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, either version 1.3 of this license
+or (at your option) any later version. The latest version of this
+license is in:
+
+ http://www.latex-project.org/lppl.txt
+
+and version 1.3 or later is part of all distributions of LaTeX version
+2005/12/01 or later.
+
+\endpreamble
+
+\generate{\file{phfcc.sty}{\from{phfcc.dtx}{package}}}
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* phfcc.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation run the .dtx file through *}
+\Msg{* (PdF-)LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{*************************************************************}
+
+\endbatchfile
diff --git a/macros/latex/contrib/phfcc/phfcc.pdf b/macros/latex/contrib/phfcc/phfcc.pdf
new file mode 100644
index 0000000000..857065b828
--- /dev/null
+++ b/macros/latex/contrib/phfcc/phfcc.pdf
Binary files differ
diff --git a/macros/latex/contrib/phfcc/pkg.mk b/macros/latex/contrib/phfcc/pkg.mk
new file mode 100644
index 0000000000..328b5fc36d
--- /dev/null
+++ b/macros/latex/contrib/phfcc/pkg.mk
@@ -0,0 +1,188 @@
+
+#
+# Common useful definitions
+#
+LATEX = latex
+
+PDFLATEXNAME = pdflatex
+
+PDFLATEX = TEXINPUTS="$$TEXINPUTS:../phfnote" $(PDFLATEXNAME)
+PDFLATEXOPTS = -interaction=batchmode
+PDFLATEXOPTSLAST = -interaction=batchmode --synctex=1
+
+MAKEINDEX = makeindex
+
+
+#
+# Set default PREFIX. This can be overridden with 'make install PREFIX=/installation/directory'
+#
+DEFAULT_PREFIX := $(shell kpsewhich -var-value TEXMFHOME)
+PREFIX ?= $(DEFAULT_PREFIX)
+
+
+#
+# package should be set in variable PKG
+#
+PKGREADME = README.md
+
+#
+# packages may specify additional files in the distribution with this variable
+# (by default empty)
+#
+DIST_ADDITIONAL_FILES ?=
+
+#
+# Additional files automatically generated by the .ins file, such as .def files
+# (by default empty)
+#
+ADDITIONAL_GENERATED_FILES ?=
+
+
+# By default, the generated style file is a '.sty' latex package. If it's a
+# '.cls' class file instead, the local Makefile will redefine this to 'cls'.
+PKGSTYEXT ?= sty
+
+PKGDTX = $(PKG).dtx
+PKGSTY = $(PKG).$(PKGSTYEXT)
+PKGINS = $(PKG).ins
+PKGPDF = $(PKG).pdf
+PKGTDSZIP = $(PKG).tds.zip
+PKGZIP = $(PKG).zip
+
+
+.PHONY: help sty cls pdf install install_sty install_cls install_doc tdszip dist clean cleanall cleansty cleancls cleanaux cleanpdf cleantdszip cleandist
+
+
+help:
+ @echo "Targets for $(PKG):"
+ @echo "make $(PKGSTYEXT) -- generate LaTeX package file $(PKG).$(PKGSTYEXT)"
+ @echo "make pdf -- generate pdf documentation"
+ @echo "make install -- install style and documentation files to $(DEFAULT_PREFIX)"
+ @echo "make install PREFIX=[specify texmf directory destination]"
+ @echo "make $(PKG).tds.zip -- create TDS.ZIP package for distribution"
+ @echo "make dist -- create distribution ZIP, ready for upload to CTAN"
+ @echo "make clean -- remove LaTeX auxiliary files"
+ @echo "make clean$(PKGSTYEXT) -- remove generated style file"
+ @echo "make cleanpdf -- remove generated pdf documentation"
+ @echo "make cleanall -- remove all generated files, incl. distribution zip"
+
+
+clean: cleanaux
+
+cleanall: cleansty cleanaux cleanpdf cleantdszip cleandist
+
+# ------------------------------------------------
+# make sty
+# ------------------------------------------------
+
+sty: $(PKGSTY)
+
+# synonym of `sty` in case of LaTeX classes, we use same commands etc.
+cls: $(PKGSTY)
+
+$(PKGSTY): $(PKGINS) $(PKGDTX)
+ $(LATEX) $<
+
+cleansty:
+ @rm -f $(PKGSTY) $(ADDITIONAL_GENERATED_FILES)
+
+cleancls: cleansty
+
+
+# ------------------------------------------------
+# make pdf
+# ------------------------------------------------
+
+pdf: $(PKG).pdf
+
+#
+# fake index & glossary so they get a TOC entry from the beginning, and so the page
+# numbers in the index are correct.
+#
+$(PKG).aux $(PKG).idx $(PKG).glo: $(PKGDTX) $(PKGSTY)
+ DTX=$< ; echo '\\begin{theindex}\\item index here \\end{theindex}' >$${DTX%.dtx}.ind
+ DTX=$< ; echo '\\begin{theglossary}\\item changes here\\end{theglossary}' >$${DTX%.dtx}.gls
+ $(PDFLATEX) $(PDFLATEXOPTS) $<
+ $(PDFLATEX) $(PDFLATEXOPTS) $<
+ $(PDFLATEX) $(PDFLATEXOPTS) $<
+
+$(PKG).ind: $(PKG).idx
+ $(MAKEINDEX) -s gind.ist -o $@ $<
+
+$(PKG).gls: $(PKG).glo
+ $(MAKEINDEX) -s gglo.ist -o $@ $<
+
+# final steps of making the PKG.pdf doc file. At the end, touch the ind and gls files so
+# that they don't look out-of-date (because the idx and glo files were overwritten again)
+$(PKGPDF): $(PKGDTX) $(PKG).aux $(PKG).ind $(PKG).gls
+ $(PDFLATEX) $(PDFLATEXOPTS) $<
+ $(PDFLATEX) $(PDFLATEXOPTS) $<
+ $(PDFLATEX) $(PDFLATEXOPTSLAST) $<
+ touch $(PKG).ind $(PKG).gls $(PKG).pdf
+
+
+cleanaux:
+ @rm -f *.aux *.log *.toc *.glo *.gls *.ind *.idx *.ilg *.out *.bbl *.blg *.synctex.gz *.hd
+
+cleanpdf:
+ @rm -f $(PKGPDF)
+
+# ------------------------------------------------
+# 'make install' partial installation targets
+# ------------------------------------------------
+
+#
+# The install target itself is defined per-package, in case packages want to install more
+# files (such as bibtex styles)
+#
+
+install_sty: $(PKGSTY)
+ mkdir -p $(DESTDIR)$(PREFIX)/tex/latex/$(PKG)
+ cp $(PKGSTY) $(ADDITIONAL_GENERATED_FILES) $(DESTDIR)$(PREFIX)/tex/latex/$(PKG)
+
+install_cls: install_sty
+
+install_doc: $(PKGPDF)
+ mkdir -p $(DESTDIR)$(PREFIX)/doc/latex/$(PKG)
+ cp $(PKGPDF) $(PKGREADME) $(DESTDIR)$(PREFIX)/doc/latex/$(PKG)
+
+
+
+# ------------------------------------------------
+# make tdszip
+# ------------------------------------------------
+
+TDSTMPDIR = $(CURDIR)/_install_tds_zip.make.tmp
+
+tdszip: $(PKGTDSZIP)
+
+$(PKGTDSZIP): $(PKGSTY) $(PKGPDF)
+ mkdir $(TDSTMPDIR)
+ $(MAKE) install PREFIX=$(TDSTMPDIR)
+ cd $(TDSTMPDIR) && zip -r $(CURDIR)/$(PKGTDSZIP) *
+ rm -rf $(TDSTMPDIR)
+
+cleantdszip:
+ @rm -f $(PKGTDSZIP)
+
+
+# ------------------------------------------------
+# make dist
+# ------------------------------------------------
+
+DISTTMPDIR = $(CURDIR)/_install_dist_zip.make.tmp
+
+dist: $(PKGZIP)
+
+# feedback from CTAN upload manager: prefer not to provide tds.zip in CTAN upload
+$(PKGZIP): #$(PKGTDSZIP)
+ rm -rf $(DISTTMPDIR)
+ mkdir -p $(DISTTMPDIR)/$(PKG)
+# cp $(PKGTDSZIP) $(DISTTMPDIR)
+ cp $(PKGDTX) $(PKGINS) $(PKGPDF) $(PKGREADME) Makefile pkg.mk $(DIST_ADDITIONAL_FILES) $(DISTTMPDIR)/$(PKG)
+# cd $(DISTTMPDIR) && zip -r $(CURDIR)/$(PKGZIP) $(PKG) $(PKGTDSZIP)
+ cd $(DISTTMPDIR) && zip -r $(CURDIR)/$(PKGZIP) $(PKG)
+ rm -rf $(DISTTMPDIR)
+
+cleandist:
+ @rm -f $(PKGZIP)
diff --git a/macros/latex/contrib/phfextendedabstract/Makefile b/macros/latex/contrib/phfextendedabstract/Makefile
new file mode 100644
index 0000000000..e06e4eeeb1
--- /dev/null
+++ b/macros/latex/contrib/phfextendedabstract/Makefile
@@ -0,0 +1,11 @@
+
+PKG = phfextendedabstract
+PKGSTYEXT = cls
+
+-include pkg.mk
+
+pkg.mk:
+ ln -sf ../mkcommon/pkg.mk pkg.mk
+
+install: install_cls install_doc
+
diff --git a/macros/latex/contrib/phfextendedabstract/README.md b/macros/latex/contrib/phfextendedabstract/README.md
new file mode 100644
index 0000000000..264116c77f
--- /dev/null
+++ b/macros/latex/contrib/phfextendedabstract/README.md
@@ -0,0 +1,19 @@
+# The phfextendedabstract package
+
+Typeset extended abstracts for conferences, such as often encountered in quantum
+information theory.
+
+
+# Documentation
+
+Run `make sty` to generate the style file, `make pdf` to generate the package
+documentation, and `make install` to install the package in your local texmf
+tree. Run 'make' or 'make help' for more info.
+
+
+# Author and License
+
+(C) 2021 Philippe Faist, philippe.faist@bluewin.ch
+
+License: [LaTeX project public license](http://www.ctan.org/license/lppl1.3),
+version 1.3 or above
diff --git a/macros/latex/contrib/phfextendedabstract/phfextendedabstract.dtx b/macros/latex/contrib/phfextendedabstract/phfextendedabstract.dtx
new file mode 100644
index 0000000000..87cddfcee1
--- /dev/null
+++ b/macros/latex/contrib/phfextendedabstract/phfextendedabstract.dtx
@@ -0,0 +1,1138 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2021 by Philippe Faist <philippe.faist@bluewin.ch>
+% -------------------------------------------------------
+%
+% This file may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{phfextendedabstract.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
+%<package>\ProvidesClass{phfextendedabstract}
+%<*package>
+ [2021/09/08 v1.0 phfextendedabstract class]
+%</package>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{xcolor}
+\usepackage[preset=xpkgdoc]{phfnote}
+\usepackage{needspace}
+
+\makeatletter
+\newsavebox\phfeaDocVirtualPage@contents
+\newenvironment{phfeaDocVirtualPage}{%
+ \par%
+ \begingroup%
+ \makeatletter%
+ \begin{lrbox}{\phfeaDocVirtualPage@contents}%
+ \begin{minipage}{12cm}\relax%
+ \def\rmdefault{cmr}\def\sfdefault{cmbr}\normalfont%
+ \def\shortlipsum{Lorem ipsum dolor sit amet, consectetuer
+ adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,
+ adipiscing vitae, felis. Curabitur dictum gravida
+ mauris. Nam arcu libero, nonummy eget, consectetuer id,
+ vulputate a, magna.}%
+ \let\RequirePackage\@gobble%
+ \def\morepagecontents{\par\vspace{1em}\centering\ldots}%
+ \ignorespaces%
+ }%
+ {%
+ \end{minipage}%
+ \end{lrbox}%
+ %%\centering%
+ \begin{tcolorbox}[text width=6cm,sharp corners,%
+ before={\par\vspace{5pt}\centering\nopagebreak\parindent=0pt},after={\par\vspace{5pt}},%
+ leftrule=0.4pt,toprule=0.4pt,rightrule=0.6pt,bottomrule=0.6pt,%
+ colframe=black,colback=white]%
+ \scalebox{0.5}{\usebox{\phfeaDocVirtualPage@contents}}%
+ \end{tcolorbox}%
+ %%\par%
+ \endgroup%
+}
+\def\phfeaSectionDecoration{% only for doc purposes
+ \raisebox{0.2ex}{{%
+ \notesmaller[0.4]\phfeaSectionDecorationSymbol}}%
+ \hspace*{1.5ex}%
+}
+\def\phfeaSectionDecorationSymbol{\ensuremath{\blacksquare}}% only for doc purposes
+\def\phfeaParagraphDecoration{% only for doc purposes
+ \raisebox{0.2ex}{{%
+ \notesmaller[0.6]\phfeaParagraphDecorationSymbol}}%
+ \hspace*{1ex}%
+}
+\def\phfeaParagraphDecorationSymbol{\ensuremath{\triangleright}}% only for doc purposes
+
+\def\eqsign@{=}
+\def\eqsign{\protect\eqsign@}
+\robustify\eqsign
+\makeatother
+
+\def\RevTeX{{\small R\raise-0.2ex\hbox{\textsc{ev}}}\TeX}
+
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{phfextendedabstract.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{0}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%
+% \changes{v1.0}{2021/07/29}{Initial version}
+%
+% \GetFileInfo{phfextendedabstract.dtx}
+%
+% \DoNotIndex{\newcommand,\newenvironment,\def,\gdef,\edef,\xdef,\if,\else,\fi,\ifx}
+%
+% \title{\phfqitltxPkgTitle{phfextendedabstract}}
+% \author{Philippe Faist\quad\email{philippe.faist@bluewin.ch}}
+% \date{\pkgfmtdate\filedate}
+%
+% \maketitle
+%
+% \begin{abstract}
+% \pkgname{phfextendedabstract}---Typeset extended abstracts for conferences,
+% such as often encountered in quantum information theory.
+% \end{abstract}
+%
+% \inlinetoc
+%
+% \section{Introduction}
+%
+% Several conferences in Quantum Information Theory (and presumably in other
+% fields, too) require the submission of \emph{extended abstracts}. An extended
+% abstract is a summary of a scientific result, presented at a high level, and
+% consisting of at most a small handful of pages.
+%
+% I found myself repeatedly copying my \LaTeX\ preamble from one submission to
+% another with definitions for a format that I elaborated and liked. So at some
+% point I collected the main definitions into this class file.
+%
+% The \pkgname{phfextendedabstract} class sets up the document for an extended
+% abstract submission as a single-column document, typeset by default at 11
+% point size, with at most two sectioning levels (|\section|\,s and
+% |\paragraph|\,s). It is based on the \RevTeX\ class.
+%
+% The extended abstract style looks approximately like this:
+% \nopagebreak
+% \iffalse COMMENT: Spacings are copied/emulated ! They might appear wrong!! \fi
+% \begin{phfeaDocVirtualPage}
+% {\parskip=8pt\relax
+% {\sffamily\Large\centering Title of my extended abstract\par}
+% {\centering Author One,\ \ Author Two,\ \ and\ \ Author Three\par}
+% }\vspace{0.2cm}
+% \parskip=3pt\relax
+%
+% \noindent{\normalfont\normalsize\sffamily\fontseries{sb}\selectfont
+% \makebox[0pt][r]{\phfeaSectionDecoration}Introduction.}
+% \shortlipsum
+%
+% \noindent{\normalfont\normalsize\sffamily\fontseries{sb}\selectfont
+% \makebox[0pt][r]{\phfeaSectionDecoration}Results.}
+% \shortlipsum
+%
+% \noindent{\normalfont\normalsize\sffamily\small
+% \makebox[0pt][r]{\phfeaParagraphDecoration}First result.}
+% \ldots
+%
+% \noindent{\normalfont\normalsize\sffamily\small
+% \makebox[0pt][r]{\phfeaParagraphDecoration}Second result.}
+% \ldots
+%
+% \noindent{\normalfont\normalsize\sffamily\fontseries{sb}\selectfont
+% \makebox[0pt][r]{\phfeaSectionDecoration}Discussion.}
+% \shortlipsum
+% \hspace*{1.5ex}%
+%
+% \end{phfeaDocVirtualPage}
+%
+%
+% \section{Main features}
+%
+% Here are the main features of the \pkgname{phfextendedabstract} class:
+% \begin{itemize}
+% \item The class \pkgname{phfextendedabstract} loads the \pkgname{revtex4-2}
+% class, so you can directly use \RevTeX's features such as author
+% affiliations, etc.
+%
+% \item Only two sectioning commands are enabled: |\section| and |\paragraph|.
+% Both have run-in headings. If you find yourself needing additional
+% sectioning levels, it might be that your extended abstract is too detailed
+% and you might want to think about how to keep it at a higher level. It
+% might also be that \pkgname{phfextendedabstract} is too limited for your
+% needs.
+%
+% By default, section and paragraphs have ``decorations'' (by default a symbol
+% in the margin) to guide the reader through the overall high-level structure
+% of the document. (Disable them with the |noheadingdecorations| class
+% option.)
+%
+% \item You can easily scale all vertical spacing dimensions (section and
+% paragraph spacing, vertical space around theorems and list environments,
+% etc.) by a common factor with a class option. Do you have those extra two
+% lines that make you exceed your 3-page limit? Try squeezing everything
+% together with a class option like |compressverticalspacing=0.7|.
+%
+% \item The \pkgname{phfnote} package is loaded in order to provide a set of
+% default \LaTeX\ packages and set up hyperlinks. A generous default set of
+% standard LaTeX packages are loaded, including \pkgname{caption} and
+% \pkgname{enumitem}; see \pkgname{phfnote}'s documentation for the option
+% |pkgset=extended|.
+%
+% \textbf{You are expected to include
+% \phfverb{\usepackage}\phfverb{{hyperref}} somewhere in your preamble.} We
+% deliberately don't include \pkgname{hyperref} when loading the class in
+% order to give you greater control of package loading order (most packages
+% you might want to use must be loaded before \pkgname{hyperref}).
+%
+% \item The page margins are tweaked with the \pkgname{geometry} package.
+% (Simply call |\geometry{...}| if you'd like to further change them. Refer
+% to the \pkgname{geometry} package's documentation.)
+%
+% \item Lists, i.e.\@ the |itemize| and |enumerate| environments, are customized
+% using the \pkgname{enumitem} package so that they take up less space. You
+% also get a |enumerate*| environment that typesets its items in-line, in a
+% single paragraph.
+%
+% (Note that this customization won't work if you choose to load a package set
+% via a |pkgset=| option that doesn't include \pkgname{enumitem}.)
+%
+% \item By default we load the \pkgname{phfthm} package and set a customized
+% theorem style so that it stands out but also so that it contrasts well with
+% the section and paragraph headings.
+%
+% \end{itemize}
+%
+% Check out the class option documentation in \autoref{sec:class-options} to get
+% a better idea of how to customize \pkgname{phfextendedabstract}'s behavior!
+%
+%
+% \section{Example Usage}
+%
+% Here's a simple template:
+% \begin{verbatim}
+% \documentclass[papertype=a4paper]{phfextendedabstract}
+%
+% \usepackage{hyperref}
+%
+% \begin{document}
+% \title{Title goes here}
+% \author{Author 1}
+% \author{Author 2}
+% \maketitle
+%
+% \section{Introduction.}
+% Lorem ipsum ...
+%
+% \section{Results.}
+% We had some cool results about
+% \begin{enumerate*} % inline enumeration
+% \item a first result,
+% \item a second result, % and
+% \item a final result.
+% \end{enumerate*}
+%
+% \paragraph{First result.}
+% Here's a first result ...
+%
+% \paragraph{Second result.}
+% Here's another result ...
+%
+% ...
+%
+% \end{document}
+% \end{verbatim}
+%
+% (Try it out!)
+%
+%
+% \section{Class options}
+% \label{sec:class-options}
+%
+% Here is a summary of class options:
+% \begin{pkgoptions}
+% \item[papertype=a4paper,letterpaper,\meta{paper type},\meta{empty}] Specify
+% the paper type to use (A4 or letter). The argument given to this option is
+% directly specified as an option to the underlying \RevTeX\ class.
+% \item[ptsize=10pt,11pt,12pt] Default font size to use. Again the argument
+% given to this option is directly specified as an option to the underlying
+% \RevTeX\ class.
+% \item[sectiondecorations=\meta{true or false}] Whether or not to ``decorate''
+% section headings, by default with a small black square typeset in the margin
+% of the section heading.
+% \item[paragraphdecorations=\meta{true or false}] Whether or not to
+% ``decorate'' paragraph headings, by default with a small right-pointing
+% outlined triangle typeset in the margin of the paragraph heading.
+% \item[noheadingdecorations] Shorthand for
+% |sectiondecorations=false,paragraphdecorations=false|.
+% \item[compressverticalspacing=\meta{factor}] Real factor by which to multiply
+% the vertical spacing between sections, paragraphs, theorems, paragraphs,
+% list environments such as |itemize| and |enumerate|, etc. If you need to
+% compress the sections a bit to fit more content on a fixed number of pages
+% (e.g.\@ because of page number constraints), you can set this option to a
+% factor that's less than one. A \meta{factor} that's less than one
+% compresses sections together, a \meta{factor} equal to |1| does nothing, and
+% a \meta{factor} greater than one expands the sections further apart.
+% \item[loadtheorems=\meta{true or false}] If |loadtheorems=true| (the default),
+% then the \pkgname{phfthm} package is loaded with some suitable default
+% options and a custom theorem style. (The theorem style
+% |phfextendedabstractthm| is defined regardless of this package option.)
+% \item[sansstyle=\meta{true or false}] Use sans serif style by default for the
+% main title as well as for section and paragraph headings. For greater
+% degree of control, see \autoref{sec:customize-title-and-headings-style}.
+% \item[usehyperref=\meta{true or false}] Should we set up the document for use
+% with the \pkgname{hyperref} package or not? This option influences how we
+% load the \pkgname{phfnote} package. If this option is set to |true| (the
+% default), then the \pkgname{phfnote} package is loaded with
+% |hyperrefdefs={defer,noemail}|. This means that the document is set up for
+% use with \pkgname{hyperref}, although you will still need to say
+% |\usepackage{hyperref}| somewhere in your preamble. If |usehyperref=false|,
+% then the \pkgname{phfnote} package is loaded with hyperref options disabled.
+%
+% (The |noemail| option is specified to \pkgname{phfnote} to avoid
+% interference with \RevTeX's own |\email| command used to specify email
+% addresses for individual authors.)
+% \item[pkgset=\meta{\pkgname{phfnote} package set name}] The \pkgname{phfnote}
+% package (which we load internally) loads a bunch of standard packages for
+% your convenience, such as \pkgname{enumitem} or \pkgname{microtype}. You
+% can influence this behavior by specifying a ``package set'' to load. By
+% default, the |pkgset=extended| package set is loaded. If you don't want to
+% load any additional packages beyond those that are strictly necessary, use
+% |pkgset=none| or |pkgset=minimal|. See \pkgname{phfnote}'s documentation
+% for the package option |pkgset=...| for more information and a list of
+% possible package set names.
+% \end{pkgoptions}
+%
+%
+% \section{Macros and environments}
+%
+% \subsection{Sections and paragraphs}
+%
+% \DescribeMacro{\section} \DescribeMacro{\paragraph} This class only provides
+% two sectioning levels: |\section| and |\paragraph|. Both produce run-in
+% headings.
+%
+% By default, sections and paragraphs produce a small ``decoration'' in the left
+% margin, to guide the reader's eye through the document's high-level structure.
+%
+% You can disable/enable section and paragraph decorations with the
+% |sectiondecorations|, |paragraphdecorations| and |noheadingdecorations| class
+% options.
+%
+% The |\section| and |\paragraph| macros also accept a special syntax: If they
+% are immediately followed by an exclamation mark (|!|), then they do not
+% produce the corresponding decoration. E.g.:
+% \begin{verbatim}
+% \section!{A section heading without its decoration}
+% \end{verbatim}
+%
+% Also, section and paragraphs will not produce any horizontal space if the
+% title is empty. You can use this feature to produce the spacing and
+% decoration of a section, but not the heading:
+% \begin{verbatim}
+% \section{} This line has the vertical spacing and decoration
+% associated with a section, but with no run-in heading.
+%
+% \section!{} This line has the vertical spacing associated
+% with a section, but with no decoration or run-in heading.
+% \end{verbatim}
+%
+% You can also use the additional syntax |<|\emph{\ldots}|>| to specify a custom
+% decoration instead of the default one. (But you should only use this
+% sparingly! Redefine |\phfeaSectionDecorationSymbol| if you want to change the
+% symbol for all sections!) For instance:
+%
+% \begin{verbatim}
+% \section<\guilsinglright>{} \emph{Manuscript in preparation.}
+% \end{verbatim}
+%
+% Here's a summary of the argument structure for |\section| and |\paragraph|:
+%
+% |\section|{\large\textbar}|\paragraph|
+% \emph{[} |*| \emph{]} \emph{[} |!| \emph{]}
+% \emph{[} |<|\meta{decoration}|>| \emph{]}
+% \emph{[} \oarg{alt title} \emph{]}
+% \marg{title}
+%
+% The optional star and optional alternative title are passed on to the standard
+% \LaTeX\ sectioning commands. The alternative title is typically used for the
+% table of contents and for PDF bookmarks.
+%
+% \DescribeMacro{\phfeaSectionDecoration}
+% \DescribeMacro{\phfeaParagraphDecoration} You can use the
+% |\phfeaSectionDecoration{<symbol>}| and |\phfeaParagraphDecoration{<symbol>}|
+% to manually place a section or paragraph decoration at any place:
+% \begin{verbatim}
+% \phfeaSectionDecoration{$\to$} Check out our website at
+% \href{https://github.com/phfaist/phfqitltx}{github.com/phfaist/phfqitltx}
+% \end{verbatim}
+%
+% If the |sectiondecorations=false| class option was specified, the macro
+% |\phfeaSectionDecoration{...}| produces no output. Similarly,
+% |\phfeaParagraphDecoration{...}| does nothing if |paragraphdecoration=false|
+% was specified.
+%
+% \DescribeMacro{\phfeaSectionDecorationSymbol}
+% \DescribeMacro{\phfeaParagraphDecorationSymbol}
+% The default section and paragraph symbols (including size and vertical
+% adjustments) are stored in the |\phfeaSectionDecorationSymbol| and
+% |\phfeaParagraphDecorationSymbol| macros. You can redefine these macros to
+% set custom decoration symbols:
+% \begin{verbatim}
+% \renewcommand{\phfeaSectionDecorationSymbol}{\Large$\Rightarrow$}
+% \renewcommand{\phfeaParagraphDecorationSymbol}{\raisebox{1pt}{\tiny $>$}}
+% \end{verbatim}
+%
+% You can customize section and paragraph headings, including spacing and style,
+% by redefining the following macros.
+%
+% \DescribeMacro{\phfeaSectionBeforeSkip}
+% \DescribeMacro{\phfeaSectionAfterHSkip} The macro |\phfeaSectionBeforeSkip|
+% (it's a macro, not a length) is used to specify the vertical spacing before a
+% new section heading. The macro (not length) |\phfeaSectionAfterHSkip| is the
+% horizontal space between the end of the section heading and the beginning of
+% the section text contents. You can redefine these macros to set your custom
+% spacings. (If you're looking to compress the vertical spacings to save on the
+% number of pages, look at the |compressverticalspacings=| class option and the
+% |\phfeaVerticalSpacingCompressionFactor| macro.)
+%
+% \DescribeMacro{\phfeaParagraphBeforeSkip}
+% \DescribeMacro{\phfeaParagraphAfterHSkip} The macros
+% |\phfeaParagraphBeforeSkip| and |\phfeaParagraphAfterHSkip| behave similarly
+% for paragraphs.
+%
+% \DescribeMacro{\phfeaSectionStyle} \DescribeMacro{\phfeaParagraphStyle} The
+% macros |\phfeaSectionStyle| and |\phfeaParagraphStyle| are used to set the
+% style of the section and paragraph headings. By default, the default
+% sans/heading style is used at the normal size and in bold face series for
+% sections, and the normal sans style is used at a smaller size for paragraph
+% headings.
+%
+% \DescribeMacro{\phfeaSectionFormatHeading}
+% \DescribeMacro{\phfeaParagraphFormatHeading} The macros
+% |\phfeaSectionFormatHeading{...}| and |\phfeaParagraphFormatHeading{...}| can
+% be redefined to format the section and paragraph headings, respectively. You
+% can redefine these macros to add punctuation, to capitalize the title, etc.
+% For instance:
+% \begin{verbatim}
+% \renewcommand\phfeaSectionFormatHeading[1]{\MakeUppercase{#1}\ ---}
+% \end{verbatim}
+%
+% The macros |\phfeaSectionFormatHeading{...}| and
+% |\phfeaParagraphFormatHeading{...}| are not called if the section/paragraph
+% title argument is empty.
+%
+%
+% \subsection{Vertical spacing}
+%
+% \DescribeMacro{\phfeaVerticalSpacingCompressionFactor} To
+% conveniently globally adjust the vertical spacings in the document (including
+% the section and paragraph vertical spacings, as well as the spacing above and
+% below theorems, itemize, and enumerate environments), you can also use the
+% |compressverticalspacing=X| class option. Alternatively, you can redefine the
+% macro |\phfeaVerticalSpacingCompressionFactor| to the desired compression
+% factor:
+% \begin{verbatim}
+% \renewcommand\phfeaVerticalSpacingCompressionFactor{0.7}
+% \end{verbatim}
+%
+% \DescribeMacro{\phfeaDefineTheoremStyle} Because the theorem style
+% |phfextendedabstracthm| is defined at the time that the class is loaded, any
+% customization of |\phfeaVerticalSpacingCompressionFactor| and
+% |\phfeaListsVerticalSkip| that happen later in the preamble aren't taken into
+% account. If you change these values in your preamble, you should call
+% |\phfeaDefineTheoremStyle| to redefine the theorem style after your
+% customization.
+%
+% \DescribeMacro{\phfeaDisplayVerticalSpacingFactorWeight} The
+% vertical spacing factor also affects the vertical spacing around equations,
+% but to a lesser extent. (Compressing the space around the equations by too
+% much would not look nice.) For the spacing between equations, we take the
+% weighted average of $1$ and the vertical spacing compression factor, where the
+% weight is given in the macro |\phfeaDisplayVerticalSpacingFactorWeight|. A
+% weight of |0| means the vertical compression factor doesn't affect the
+% vertical spacing around equations at all; a weight of |1| means the spacing
+% around the equations is scaled exactly by the vertical compression factor.
+%
+% \DescribeMacro{\phfeaParskipVerticalSpacingFactorWeight} A similar mechanism
+% happens for how we adjust |\parskip|, the spacing between paragraphs.
+%
+%
+% \subsection{List environments}
+%
+% \DescribeEnv{enumerate*} This class provides an |enumerate|-like
+% environment which typesets its items inline, as a list. For example, here is
+% an inline paragraph with (a) one, (b) two, and (c) three points.
+% \iffalse yeah, I cheated for this doc code, whatever \fi
+%
+% The |enumerate*| can be used exactly like you'd use the |enumerate|
+% environment from the \pkgname{enumitem} package, for instance:
+% \begin{verbatim}
+% here is an inline paragraph with \begin{enumerate*}[label=(\alph*)]
+% \item one,
+% \item two,
+% \item three
+% \end{enumerate*}
+% points.
+% \end{verbatim}
+%
+% Check \pkgname{enumitem}'s documentation for inline lists. You can specify
+% for instance the keys |before={{}}|, |itemjoin={{ }}|, and \relax\relax\relax
+% |itemjoin*={{ and }}| either as an optional argument to
+% |\begin{enumerate*}| \iffalse\end{enumerate*}\fi or using
+% |\setlist|:
+% \begin{verbatim}
+% \setlist[enumerate*]{%
+% itemjoin*={{ et }}%
+% }
+% \end{verbatim}
+%
+% \DescribeMacro{\phfeaListsVerticalSkip} \DescribeMacro{\phfeaListsItemSep}
+% \DescribeMacro{\phfeaListsParSep} For (non-inline) list environments such as
+% |itemize| and |enumerate|, you can redefine |\phfeaListsVerticalSkip|,
+% |\phfeaListsItemSep|, and |\phfeaListsParSep| to set the |topsep|, |itemsep|
+% and |parsep| properties of all of \pkgname{enumitem}'s list environments.
+% These correspond to the vertical space above and below lists, the space
+% between items, and the space between paragraphs within an item. All these
+% spacings automatically get compressed according to the
+% |\phfeaVerticalSpacingCompressionFactor|.
+%
+% Note that |\phfeaListsVerticalSkip| is also used for the spacing above and
+% below theorem environments.
+%
+%
+% \subsection{Customization of the main title and general headings style}
+% \label{sec:customize-title-and-headings-style}
+%
+% \DescribeMacro{\phfeaHeadingStyle} The macro |\phfeaHeadingStyle| is defined to be
+% |\sffamily|, unless the |sansstyle=false| class option is provided
+% in which case the macro expands to nothing. You can redefine it to give a
+% different general style to your main title and your section and paragraph
+% headings.
+%
+% \DescribeMacro{\phfeaTitleStyle} The macro |\phfeaTitleStyle| sets the font
+% style for the main document title. By default the macro is defined to
+% |\phfeaHeadingStyle\Large|. Redefine this macro to change the title style.
+%
+% For instance, if you prefer \RevTeX's own simple boldface title, you can use:
+% \begin{verbatim}
+% \renewcommand\phfeaTitleStyle{\bfseries}
+% \end{verbatim}
+%
+%
+%
+%
+%
+% \StopEventually{\vskip 3cm plus 2cm minus 2cm\relax\PrintChanges
+% \vskip 3cm plus 2cm minus 2cm\relax\PrintIndex}
+%
+%
+%
+% \section{Implementation}
+%
+% Here come the gory details.
+%
+%
+% \paragraph{Class options}
+% We process these first, to see which options we should pass on to
+% \RevTeX.
+% \begin{macrocode}
+\RequirePackage{kvoptions}
+\SetupKeyvalOptions{%
+ family=phfea,%
+ prefix=phfeaopt@%
+}
+\DeclareStringOption[]{papertype}
+\DeclareStringOption[11pt]{ptsize}
+\DeclareBoolOption[true]{sectiondecorations}
+\DeclareBoolOption[true]{paragraphdecorations}
+\DeclareVoidOption{noheadingdecorations}{%
+ \phfeaopt@sectiondecorationsfalse
+ \phfeaopt@paragraphdecorationsfalse
+}
+\DeclareBoolOption[true]{loadtheorems}
+\DeclareBoolOption[true]{sansstyle}
+\DeclareStringOption[1]{compressverticalspacing}
+\DeclareBoolOption[true]{usehyperref}
+\DeclareStringOption[extended]{pkgset}
+\ProcessKeyvalOptions*
+% \end{macrocode}
+%
+%
+% \paragraph{Load \RevTeX, the base class}
+%
+% \begin{macrocode}
+\providecommand\phfea@revtexopts{%
+ aps,pra,%
+ notitlepage,reprint,%
+ onecolumn,tightenlines,%
+ superscriptaddress,%
+ nofootinbib%
+}
+\PassOptionsToClass{%
+ \phfea@revtexopts,%
+ \phfeaopt@ptsize,%
+ \phfeaopt@papertype,%
+}{revtex4-2}
+\LoadClass{revtex4-2}
+% \end{macrocode}
+%
+% We will also need the \pkgname{xparse} command for defining some of our
+% commands.
+% \begin{macrocode}
+\RequirePackage{xparse}
+% \end{macrocode}
+%
+% \paragraph{Load \pkgname{phfnote} for the basic document setup}
+%
+% \begin{macrocode}
+\PassOptionsToPackage{%
+ preset=reset,%
+ pkgset=\phfeaopt@pkgset,%
+ \ifphfeaopt@usehyperref
+ hyperrefdefs={defer,noemail},%
+ \fi
+}{phfnote}
+\RequirePackage{phfnote}
+% \end{macrocode}
+%
+%
+% \paragraph{Page geometry}
+%
+% Set a default page geometry. Works both for A4 paper and for letter paper.
+% It's optimized for 11pt size, though.
+% \begin{macrocode}
+\RequirePackage{geometry}
+\geometry{hmargin=0.75in,vmargin=0.75in,marginparwidth=0.5in,marginparsep=0.125in}
+% \end{macrocode}
+%
+%
+% \paragraph{Default sans serif font}
+%
+% \begin{macro}{\phfeaHeadingStyle}
+% Unless instructed not to do so, \iffalse load the ``Source Sans Pro'' font
+% as default sans serif font, using the semibold glyphs in place of bold. By
+% default, this font will \else set the sans serif font family to \fi be used
+% for section headings and the main title.
+% \begin{macrocode}
+\ifphfeaopt@sansstyle
+ \def\phfeaHeadingStyle{\sffamily}
+\else
+ \def\phfeaHeadingStyle{}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \paragraph{Default title format}
+%
+% \begin{macro}{\phfeaTitleStyle}
+% Change \RevTeX\ title format. Title style can be customized by redefining
+% |\phfeaTitleStyle|.
+% \begin{macrocode}
+\def\phfeaTitleStyle{\phfeaHeadingStyle\Large}
+\def\frontmatter@title@format{\phfeaTitleStyle\centering\parskip\z@skip}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \paragraph{Vertical spacing compression factor}
+%
+% Define a general factor by which the section and paragraph spacings will be
+% compressed. This macro is set by the |compressverticalspacing=X| package
+% option.
+% \begin{macrocode}
+\edef\phfeaVerticalSpacingCompressionFactor{\phfeaopt@compressverticalspacing}
+% \end{macrocode}
+%
+% Tool for scaling glue expressions (for use with our vertical compression
+% factor):\footnote{Thanks \url{https://tex.stackexchange.com/a/198966/32188}\,!}
+% \begin{macrocode}
+\def\phfea@scaleglue#1#2{% {factor}{glueexpr}
+ \glueexpr#2*\numexpr\dimexpr#1pt\relax\relax/65536\relax
+}
+\def\phfea@scalegluedpt#1#2{% {factor given as dimexpr in pt}{glueexpr}
+ \glueexpr#2*\numexpr#1\relax/65536\relax
+}
+% \end{macrocode}
+%
+% Adjust spacing around display equations according to the vertical compression
+% factor. Do this only at the beginning of the document, since the user might
+% still want to adjust |\phfeaVerticalSpacingCompressionFactor| in their
+% preamble.
+%
+% \begin{macro}{\phfeaDisplayVerticalSpacingFactorWeight}
+% We only apply a fraction of the scaling, because it's ugly if we compress
+% equations too much. Define |\phfeaDisplayVerticalSpacingFactorWeight| as $w$ and
+% $\alpha$ as the vertical scaling factor. The new skips are computed as
+% \begin{equation*}
+% \phfverb{oldskip}\quad\rightarrow\quad
+% (1-w)\,\phfverb{oldskip} + w\,\alpha\,\phfverb{oldskip}\ .
+% \end{equation*}
+% (For $w=0$ we have $\phfverb{oldskip}\rightarrow\phfverb{oldskip}$. For $w=1$
+% the full scaling factor is applied,
+% $\phfverb{oldskip}\rightarrow \alpha\,\phfverb{oldskip}$.) By default,
+% $w=1/2$:
+% \begin{macrocode}
+\def\phfeaDisplayVerticalSpacingFactorWeight{.5}
+% \end{macrocode}
+% \end{macro}
+% Tool to compute the new spacing for each of the relevant display-related
+% skips:
+% \begin{macrocode}
+\def\phfea@adjustskipweighted#1#2{%
+ #1=\glueexpr
+ \phfea@scalegluedpt{%
+ \dimexpr 1\p@ - #2\p@\relax
+ }{#1}%
+ +
+ \phfea@scaleglue{%
+ #2%
+ }{%
+ \phfea@scaleglue{%
+ \phfeaVerticalSpacingCompressionFactor
+ }{%
+ #1
+ }%
+ }%
+ \relax
+}
+% \end{macrocode}
+% And schedule this adjustment to be carried out at the beginning of the
+% document.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \phfea@adjustskipweighted\abovedisplayskip\phfeaDisplayVerticalSpacingFactorWeight
+ \phfea@adjustskipweighted\belowdisplayskip\phfeaDisplayVerticalSpacingFactorWeight
+ \phfea@adjustskipweighted\abovedisplayshortskip\phfeaDisplayVerticalSpacingFactorWeight
+ \phfea@adjustskipweighted\belowdisplayshortskip\phfeaDisplayVerticalSpacingFactorWeight
+}
+% \end{macrocode}
+%
+% \begin{macro}{\phfeaParskipVerticalSpacingFactorWeight}
+% A similar mechanism affects how we adjust the paragraph skip length
+% |\parskip|.
+% \begin{macrocode}
+\def\phfeaParskipVerticalSpacingFactorWeight{1}
+\AtBeginDocument{%
+ \phfea@adjustskipweighted\parskip\phfeaParskipVerticalSpacingFactorWeight
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Setup specific for sectioning}
+%
+% By design, there are only two sectioning levels in a
+% \pkgname{phfextendedabstract} document: sections (|\section|) and paragraphs
+% (|\paragraph|). Any other sectioning command (e.g., |\subsection|) will
+% produce an error.
+%
+% Neither of these two section levels is numbered.
+% \begin{macrocode}
+\setcounter{secnumdepth}{0}
+\setcounter{tocdepth}{1}
+% \end{macrocode}
+%
+% \begin{macro}{\phfeaSectionBeforeSkip}
+% \begin{macro}{\phfeaSectionAfterHSkip}
+% \begin{macro}{\phfeaSectionStyle}
+% \begin{macro}{\phfeaSectionDecoration}
+% \begin{macro}{\phfeaSectionDecorationSymbol}
+% Some helper and customization macros for |\section|.
+% \begin{macrocode}
+\def\phfeaSectionBeforeSkip{1.5ex plus 0.8ex minus 0.25ex}
+\def\phfeaSectionAfterHSkip{1em plus 0.2em}
+\def\phfeaSectionStyle{\normalfont\normalsize\phfeaHeadingStyle\bfseries}
+\def\phfeaSectionFormatHeading#1{#1}
+\def\phfeaSectionDecorationSymbol{%
+ \raisebox{0.2ex}{{\notesmaller[0.4]{\ensuremath{\blacksquare}}}}}
+\ifphfeaopt@sectiondecorations
+ \def\phfeaSectionDecoration#1{%
+ \makebox[\z@][r]{{#1}\hspace*{1.5ex}}%
+ }
+\else
+ \def\phfeaSectionDecoration#1{}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \needspace{5\baselineskip}
+% \begin{macro}{\phfeaParagraphBeforeSkip}
+% \begin{macro}{\phfeaParagraphAfterHSkip}
+% \begin{macro}{\phfeaParagraphStyle}
+% \begin{macro}{\phfeaParagraphDecoration}
+% \begin{macro}{\phfeaParagraphDecorationSymbol}
+% Same helper and customization macros, now for |\paragraph|.
+% \begin{macrocode}
+\def\phfeaParagraphBeforeSkip{0.6ex plus 0.4ex minus 0.1ex}
+\def\phfeaParagraphAfterHSkip{0.75em plus 0.15em}
+\def\phfeaParagraphStyle{\normalfont\normalsize\phfeaHeadingStyle\small}
+\def\phfeaParagraphFormatHeading#1{#1}
+\def\phfeaParagraphDecorationSymbol{%
+ \raisebox{0.2ex}{{\notesmaller[0.6]{\ensuremath{\triangleright}}}}}
+\ifphfeaopt@paragraphdecorations
+ \def\phfeaParagraphDecoration#1{%
+ \makebox[\z@][r]{{#1}\hspace*{1ex}}%
+ }
+\else
+ \def\phfeaParagraphDecoration#1{}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% Now we redefine |\section| and |\paragraph| for formatting. Also allow
+% |\section!| and |\paragraph!| that remove the decoration and |\section<...>|
+% and |\paragraph<...>| that replace the decoration. In all cases, the indent
+% is removed if the main argument (section/paragraph title) is an empty
+% argument. We also accept a starred version and an optional argument, and pass
+% those on to |\@startsection|; these options are sometimes useful in order to
+% work around fragile tokens in the title, etc.
+%
+% We start with the generic code that will call |\@startsection| for both
+% sections and paragraphs. The generic code will be given the level number (|1|
+% or |2|) and will produce the correct |\@startsection| code for that level,
+% fetching its information from the correctly named macros. We first define
+% some simple definitions that specify where to look for those level-specific
+% macros.
+% \begin{macrocode}
+\def\phfea@ss@levelname#1{\ifcase#1\or section\or paragraph\fi}
+\def\phfea@ss@levelName#1{\ifcase#1\or Section\or Paragraph\fi}
+\def\phfea@ss@get#1#2{% <levelno><MacroPostfixName>
+ \csname phfea\phfea@ss@levelName{#1}#2\endcsname}
+\def\phfea@ss@getnoexpand#1#2{% <levelno><MacroPostfixName>
+ \expandafter\noexpand\csname phfea\phfea@ss@levelName{#1}#2\endcsname}
+% \end{macrocode}
+%
+% \begin{macro}{\phfea@startsection}
+% We now define the main internal |\phfea@startsection| macro which will
+% produce the correct |\@startsection| command for the given section level.
+% The arguments to |\phfea@startsection| are:
+% \begin{itemize}[itemsep=0pt,topsep=0pt]
+% \item[\#1:] level number, |1| or |2|;
+% \item[\#2:] an optional star;
+% \item[\#3:] an optional |!| character (meaning, don't display the decoration);
+% \item[\#4:] an optional |<|\meta{decoration tokens}|>| argument to
+% replace the decoration;
+% \item[\#5:] an optional argument, the alternative title to write in the AUX
+% file (e.g.\@ for use in the table of contents);
+% \item[\#6:] a mandatory argument, the title of the section/paragraph.
+% \end{itemize}
+% \begin{macrocode}
+\newtoks\phfea@ss@decorationtoks
+\newtoks\phfea@ss@alttitle
+\newtoks\phfea@ss@title
+\NewDocumentCommand{\phfea@startsection}{m s t! d<> o m}{%
+% \end{macrocode}
+% Store the alternative title and title in token registers.
+% \begin{macrocode}
+ \phfea@ss@decorationtoks={#4}%
+ \phfea@ss@alttitle={#5}%
+ \phfea@ss@title={#6}%
+% \end{macrocode}
+% Inform the user in case of option inconsistencies or redundancies.
+% \begin{macrocode}
+ \IfNoValueF{#4}{%
+ \IfBooleanT{#3}{%
+ \PackageWarning{phfextendedabstract}{section/paragraph: `!'
+ modifier ignored when custom decoration `<...>' is specified}%
+ }%
+ }%
+% \end{macrocode}
+% Now define a temporary macro |\x| that will contain the correct code for a
+% call to \LaTeX' low-level |\@startsection| command. Remember to prefix all
+% macros by |\noexpand| unless they should be expanded in the preparation of
+% that code for |\@startsection|. \LaTeX' |\@startsection| takes a lot of
+% arguments, let's be careful not to miss any. Also, we can use the convenient
+% construct |\phfea@ss@getnoexpand{#1}{XyzProperty}| which in this |\edef| will
+% expand to
+% |\noexpand\phfea|\emph{$\langle$}|Section|\emph{\textbar}\relax
+% |Paragraph|\emph{$\rangle$}|XyzProperty|.
+% \begin{macrocode}
+ \edef\x{%
+ \noexpand\@startsection{\phfea@ss@levelname{#1}}%
+% \end{macrocode}
+% First come the \meta{level number} and \meta{indent} arguments:
+% \begin{macrocode}
+ {#1}%
+ {\z@}%
+% \end{macrocode}
+% Then comes the \meta{before skip} argument. Use |\phfea@scaleglue| to account for
+% the vertical compression factor.
+% \begin{macrocode}
+ {%
+ \noexpand\phfea@scaleglue{\noexpand\phfeaVerticalSpacingCompressionFactor}{%
+ \noexpand\glueexpr\phfea@ss@getnoexpand{#1}{BeforeSkip}\noexpand\relax
+ }%
+ }%
+% \end{macrocode}
+% Then comes the \meta{after skip} argument. Set the after skip to zero if the
+% title is empty, otherwise specify the given
+% |\phfeaSection/ParagraphAfterHSkip| as a negative value to indicate we want a
+% run-in heading. Note that while the syntax `|1.5\glueexpr...|' doesn't
+% preserve plus/minus stretchability components as it coerces the glue to a
+% dimen, the syntax `|-\glueexpr...|' does preserve these components (presumably
+% because $-1$ is integer?).
+% \begin{macrocode}
+ {\if\relax\detokenize{#6}\relax
+ \noexpand\z@
+ \else
+ -\noexpand\glueexpr\phfea@ss@getnoexpand{#1}{AfterHSkip}\noexpand\relax
+ \fi}%
+% \end{macrocode}
+% The \meta{style} argument to specify the section heading's font style. We
+% provide a decoration, possibly a custom decoration if provided with the
+% |<...>| syntax; we remove the default decoration if the no-decoration argument
+% (a |!| character) was specified.
+% \begin{macrocode}
+ {%
+ \IfNoValueTF{#4}{%
+ \IfBooleanTF{#3}{% with "!", no custom decoration --> nothing
+ }{% no "!", no custom decoration
+ \phfea@ss@getnoexpand{#1}{Decoration}%
+ \phfea@ss@getnoexpand{#1}{DecorationSymbol}%
+ }%
+ }{% with custom decoration (ignores "!" argument)
+ \phfea@ss@getnoexpand{#1}{Decoration}%
+ {\the\phfea@ss@decorationtoks}%
+ }%
+ \phfea@ss@getnoexpand{#1}{Style}%
+ }%
+% \end{macrocode}
+% An optional |*| indicates the starred version of the sectioning commands. If
+% the user increased the |secnumcounter| to have numbered sections, then the
+% starred variant gives a section heading without any section number or TOC
+% entry.
+% \begin{macrocode}
+ \IfBooleanT{#2}{*}%
+% \end{macrocode}
+% Now comes the optional \meta{alternative title} argument that will be written
+% to the AUX file. We always provide this argument to |\@startsection|,
+% specifying by default the main title argument |#6| (non-starred variant) or an
+% empty argument (for a starred variant). We do this because otherwise,
+% |\@startsection| will copy all the other commands we add in its argument
+% (e.g., title formatting, etc.) and will write them to the AUX file.
+% \begin{macrocode}
+ \IfValueTF{#4}{[\the\phfea@ss@alttitle]}{%
+ \IfBooleanTF{#2}{[]}{[\the\phfea@ss@title]}%
+ }%
+% \end{macrocode}
+% Finally, this is the main \meta{section title} argument.
+% If the title is not empty, we also provide the title wrapped in a
+% corresponding |\phfeaSection/ParagraphFormatHeading| macro call. Everything
+% should be protected in |\texorpdfstring| calls to avoid \emph{pdflatex} from
+% complaining about invalid junk in PDF bookmark strings.
+% \begin{macrocode}
+ {%
+ \if\relax\detokenize{#6}\relax\else
+ \noexpand\texorpdfstring{%
+ \phfea@ss@getnoexpand{#1}{FormatHeading}{\the\phfea@ss@title}%
+ }{%
+ \the\phfea@ss@title
+ }%
+ \fi
+ }%
+ }%
+ %\message{**** EMITTING @startsection: |\detokenize\expandafter{\x}| ***}%
+ \x
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\section}
+% \begin{macro}{\paragraph}
+% Define |\section| and |\paragraph| as sectioning levels 1 and 2.
+% \begin{macrocode}
+\def\section{\phfea@startsection{1}}
+\def\paragraph{\phfea@startsection{2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Provide an explanative error message if the user attempts to use
+% |\subsection|, |\subsubsection| or |\subparagraph|.
+% \begin{macrocode}
+\def\phfea@nosectioncmd#1{%
+ \ClassError{phfextendedabstract}{%
+ %
+ There is no `\string#1' command in `phfextendedabstract'
+ documents. You can only use `\string\section' and
+ `\string\paragraph'. If you find yourself needing additional
+ sectioning levels, it might be that your extended abstract is too
+ detailed and you should stick to a higher level description of
+ your results. If you do need additional section levels, it is
+ likely that you will be better off with a different document
+ class. If you'd like to stick with `phfextendedabstract' and you
+ really know what you're doing, then you could redefine the
+ sectioning commands as necessary based on `\string\@startsection'
+ as is done in standard LaTeX classes. Good luck!
+ %
+ }{}%
+}
+\def\phfea@nosectioncmd@def#1{%
+ \def#1{\phfea@nosectioncmd#1}%
+}
+\phfea@nosectioncmd@def\part
+\phfea@nosectioncmd@def\chapter
+\phfea@nosectioncmd@def\subsection
+\phfea@nosectioncmd@def\subsubsection
+\phfea@nosectioncmd@def\subparagraph
+% \end{macrocode}
+%
+%
+% \paragraph{Set up itemization and enumeration environments}
+%
+% Provide customizable lengths for lists via macros (item sep,
+% paragraph sep and vertical skip above and below list environments).
+% \begin{macro}{\phfeaListsVerticalSkip}
+% \begin{macro}{\phfeaListsItemSep}
+% \begin{macro}{\phfeaListsParSep}
+% \begin{macrocode}
+\def\phfeaListsVerticalSkip{0.6ex plus 0.4ex minus 0.1ex}
+\def\phfeaListsItemSep{0.3ex plus 0.15ex minus 0.1ex}
+\def\phfeaListsParSep{0.7\parskip}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% Prepare the commands to run to configure \pkgname{enumitem} correctly in an
+% internal macro which we will call if \pkgname{enumitem} is indeed loaded.
+% \begin{macrocode}
+\def\phfea@setup@enumitem{%
+% \end{macrocode}
+% Apply the spacings.
+% \begin{macrocode}
+ \setlist{%
+ itemsep={%
+ \phfea@scaleglue{%
+ \phfeaVerticalSpacingCompressionFactor}{\phfeaListsItemSep}},
+ parsep={%
+ \phfea@scaleglue{%
+ \phfeaVerticalSpacingCompressionFactor}{\phfeaListsParSep}},
+ topsep={%
+ \phfea@scaleglue{%
+ \phfeaVerticalSpacingCompressionFactor}{\phfeaListsVerticalSkip}},
+ }%
+% \end{macrocode}
+% \begin{environment}{enumerate*}
+% Create the |enumerate*| list enumeration environment.
+% \begin{macrocode}
+ \newlist{enumerate*}{enumerate*}{1}
+ \setlist[enumerate*]{
+ label={(\roman*)},
+ before={},
+ itemjoin={{ }},
+ itemjoin*={{ and }}
+ }%
+}
+% \end{macrocode}
+% \end{environment}
+% And now, check if \pkgname{enumitem} is loaded and apply the definitions.
+% \begin{macrocode}
+\@ifpackageloaded{enumitem}{\phfea@setup@enumitem}{}
+% \end{macrocode}
+%
+%
+% \paragraph{Setup specific for theorems}
+%
+% Create a new theorem style called |extendedabstracthm|. Note that if
+% \pkgname{amsthm} (or similar) wasn't loaded, then |\newtheoremstyle| isn't
+% defined. In that case, we simply won't define the new theorem style right
+% now.
+% \begin{macrocode}
+\def\phfeaDefineTheoremStyle{%
+ \newtheoremstyle{phfextendedabstractthm}%
+ {\phfea@scaleglue{%
+ \phfeaVerticalSpacingCompressionFactor}{\phfeaListsVerticalSkip}}%
+ {\phfea@scaleglue{%
+ \phfeaVerticalSpacingCompressionFactor}{\phfeaListsVerticalSkip}}%
+ {\itshape}%
+ {\z@}%
+ {\bfseries\itshape}%
+ {:}%
+ {0.8em}%
+ {\thmname{##1\thmnumber{ ##2}\thmnote{ (##3)}}}%
+}
+% \end{macrocode}
+% Ensure we create our new theorem style (only if |\newtheoremstyle| is
+% available) and load our \pkgname{phfthm} package. Make sure we don't load
+% \pkgname{phfthm} if we were asked not to load theorems in the class options.
+% \begin{macrocode}
+\ifdefined\newtheoremstyle
+ \phfeaDefineTheoremStyle
+\fi
+\ifphfeaopt@loadtheorems
+ \ifdefined\newtheoremstyle\else
+ \ClassError{phfextendedabstract}{%
+ %
+ Impossible to load theorems (`loadtheorems=true') because there
+ is no \string\newtheoremstyle\space command that was defined.
+ Consider setting `pkgset=...' so that a theroems-related package
+ (e.g., amsthm) is loaded! (e.g. `pkgset=minimal', `pkgset=rich'
+ or `pkgset=extended'). Alternatively, set the class option
+ `loadtheorems=false' and you can then manually define any
+ theorem environments you'd like using your favorite pacakges.
+ %
+ }{}
+ \fi
+ \PassOptionsToPackage{proofref=false,theoremstyle=phfextendedabstractthm}{phfthm}
+ \RequirePackage{phfthm}
+\fi
+% \end{macrocode}
+%
+% \iffalse
+% \paragraph{References section}
+%
+% Have a simple section for references. If you'd like to restore \RevTeX'
+% ornament you can simply do |\let\bibsection\rtxapsbibsection|.
+% \begin{XXXmacrocode}
+%% \let\rtxapsbibsection\bibsection
+%% \def\bibsection{%
+%% \par\section{\refname}\leavevmode\par\addvspace{4pt}\relax
+%% %% \par\noindent\rule{6em}{.4pt}\par\addvspace{6pt}\relax
+%% }
+% \end{XXXmacrocode}
+% \fi
+%
+%
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/phfextendedabstract/phfextendedabstract.ins b/macros/latex/contrib/phfextendedabstract/phfextendedabstract.ins
new file mode 100644
index 0000000000..820fc90687
--- /dev/null
+++ b/macros/latex/contrib/phfextendedabstract/phfextendedabstract.ins
@@ -0,0 +1,55 @@
+%%
+%% Copyright (C) 2021 by Philippe Faist, philippe.faist@bluewin.ch
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3 of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%%
+
+\input docstrip.tex
+\keepsilent
+
+\usedir{tex/latex/phfqitltx}
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2021 by Philippe Faist, philippe.faist@bluewin.ch
+
+This file may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, either version 1.3 of this license
+or (at your option) any later version. The latest version of this
+license is in:
+
+ http://www.latex-project.org/lppl.txt
+
+and version 1.3 or later is part of all distributions of LaTeX version
+2005/12/01 or later.
+
+\endpreamble
+
+\generate{\file{phfextendedabstract.cls}{\from{phfextendedabstract.dtx}{package}}}
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* phfextendedabstract.cls *}
+\Msg{* *}
+\Msg{* To produce the documentation run the .dtx file through *}
+\Msg{* (PdF-)LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{*************************************************************}
+
+\endbatchfile
diff --git a/macros/latex/contrib/phfextendedabstract/phfextendedabstract.pdf b/macros/latex/contrib/phfextendedabstract/phfextendedabstract.pdf
new file mode 100644
index 0000000000..d4404c7f78
--- /dev/null
+++ b/macros/latex/contrib/phfextendedabstract/phfextendedabstract.pdf
Binary files differ
diff --git a/macros/latex/contrib/phfextendedabstract/pkg.mk b/macros/latex/contrib/phfextendedabstract/pkg.mk
new file mode 100644
index 0000000000..328b5fc36d
--- /dev/null
+++ b/macros/latex/contrib/phfextendedabstract/pkg.mk
@@ -0,0 +1,188 @@
+
+#
+# Common useful definitions
+#
+LATEX = latex
+
+PDFLATEXNAME = pdflatex
+
+PDFLATEX = TEXINPUTS="$$TEXINPUTS:../phfnote" $(PDFLATEXNAME)
+PDFLATEXOPTS = -interaction=batchmode
+PDFLATEXOPTSLAST = -interaction=batchmode --synctex=1
+
+MAKEINDEX = makeindex
+
+
+#
+# Set default PREFIX. This can be overridden with 'make install PREFIX=/installation/directory'
+#
+DEFAULT_PREFIX := $(shell kpsewhich -var-value TEXMFHOME)
+PREFIX ?= $(DEFAULT_PREFIX)
+
+
+#
+# package should be set in variable PKG
+#
+PKGREADME = README.md
+
+#
+# packages may specify additional files in the distribution with this variable
+# (by default empty)
+#
+DIST_ADDITIONAL_FILES ?=
+
+#
+# Additional files automatically generated by the .ins file, such as .def files
+# (by default empty)
+#
+ADDITIONAL_GENERATED_FILES ?=
+
+
+# By default, the generated style file is a '.sty' latex package. If it's a
+# '.cls' class file instead, the local Makefile will redefine this to 'cls'.
+PKGSTYEXT ?= sty
+
+PKGDTX = $(PKG).dtx
+PKGSTY = $(PKG).$(PKGSTYEXT)
+PKGINS = $(PKG).ins
+PKGPDF = $(PKG).pdf
+PKGTDSZIP = $(PKG).tds.zip
+PKGZIP = $(PKG).zip
+
+
+.PHONY: help sty cls pdf install install_sty install_cls install_doc tdszip dist clean cleanall cleansty cleancls cleanaux cleanpdf cleantdszip cleandist
+
+
+help:
+ @echo "Targets for $(PKG):"
+ @echo "make $(PKGSTYEXT) -- generate LaTeX package file $(PKG).$(PKGSTYEXT)"
+ @echo "make pdf -- generate pdf documentation"
+ @echo "make install -- install style and documentation files to $(DEFAULT_PREFIX)"
+ @echo "make install PREFIX=[specify texmf directory destination]"
+ @echo "make $(PKG).tds.zip -- create TDS.ZIP package for distribution"
+ @echo "make dist -- create distribution ZIP, ready for upload to CTAN"
+ @echo "make clean -- remove LaTeX auxiliary files"
+ @echo "make clean$(PKGSTYEXT) -- remove generated style file"
+ @echo "make cleanpdf -- remove generated pdf documentation"
+ @echo "make cleanall -- remove all generated files, incl. distribution zip"
+
+
+clean: cleanaux
+
+cleanall: cleansty cleanaux cleanpdf cleantdszip cleandist
+
+# ------------------------------------------------
+# make sty
+# ------------------------------------------------
+
+sty: $(PKGSTY)
+
+# synonym of `sty` in case of LaTeX classes, we use same commands etc.
+cls: $(PKGSTY)
+
+$(PKGSTY): $(PKGINS) $(PKGDTX)
+ $(LATEX) $<
+
+cleansty:
+ @rm -f $(PKGSTY) $(ADDITIONAL_GENERATED_FILES)
+
+cleancls: cleansty
+
+
+# ------------------------------------------------
+# make pdf
+# ------------------------------------------------
+
+pdf: $(PKG).pdf
+
+#
+# fake index & glossary so they get a TOC entry from the beginning, and so the page
+# numbers in the index are correct.
+#
+$(PKG).aux $(PKG).idx $(PKG).glo: $(PKGDTX) $(PKGSTY)
+ DTX=$< ; echo '\\begin{theindex}\\item index here \\end{theindex}' >$${DTX%.dtx}.ind
+ DTX=$< ; echo '\\begin{theglossary}\\item changes here\\end{theglossary}' >$${DTX%.dtx}.gls
+ $(PDFLATEX) $(PDFLATEXOPTS) $<
+ $(PDFLATEX) $(PDFLATEXOPTS) $<
+ $(PDFLATEX) $(PDFLATEXOPTS) $<
+
+$(PKG).ind: $(PKG).idx
+ $(MAKEINDEX) -s gind.ist -o $@ $<
+
+$(PKG).gls: $(PKG).glo
+ $(MAKEINDEX) -s gglo.ist -o $@ $<
+
+# final steps of making the PKG.pdf doc file. At the end, touch the ind and gls files so
+# that they don't look out-of-date (because the idx and glo files were overwritten again)
+$(PKGPDF): $(PKGDTX) $(PKG).aux $(PKG).ind $(PKG).gls
+ $(PDFLATEX) $(PDFLATEXOPTS) $<
+ $(PDFLATEX) $(PDFLATEXOPTS) $<
+ $(PDFLATEX) $(PDFLATEXOPTSLAST) $<
+ touch $(PKG).ind $(PKG).gls $(PKG).pdf
+
+
+cleanaux:
+ @rm -f *.aux *.log *.toc *.glo *.gls *.ind *.idx *.ilg *.out *.bbl *.blg *.synctex.gz *.hd
+
+cleanpdf:
+ @rm -f $(PKGPDF)
+
+# ------------------------------------------------
+# 'make install' partial installation targets
+# ------------------------------------------------
+
+#
+# The install target itself is defined per-package, in case packages want to install more
+# files (such as bibtex styles)
+#
+
+install_sty: $(PKGSTY)
+ mkdir -p $(DESTDIR)$(PREFIX)/tex/latex/$(PKG)
+ cp $(PKGSTY) $(ADDITIONAL_GENERATED_FILES) $(DESTDIR)$(PREFIX)/tex/latex/$(PKG)
+
+install_cls: install_sty
+
+install_doc: $(PKGPDF)
+ mkdir -p $(DESTDIR)$(PREFIX)/doc/latex/$(PKG)
+ cp $(PKGPDF) $(PKGREADME) $(DESTDIR)$(PREFIX)/doc/latex/$(PKG)
+
+
+
+# ------------------------------------------------
+# make tdszip
+# ------------------------------------------------
+
+TDSTMPDIR = $(CURDIR)/_install_tds_zip.make.tmp
+
+tdszip: $(PKGTDSZIP)
+
+$(PKGTDSZIP): $(PKGSTY) $(PKGPDF)
+ mkdir $(TDSTMPDIR)
+ $(MAKE) install PREFIX=$(TDSTMPDIR)
+ cd $(TDSTMPDIR) && zip -r $(CURDIR)/$(PKGTDSZIP) *
+ rm -rf $(TDSTMPDIR)
+
+cleantdszip:
+ @rm -f $(PKGTDSZIP)
+
+
+# ------------------------------------------------
+# make dist
+# ------------------------------------------------
+
+DISTTMPDIR = $(CURDIR)/_install_dist_zip.make.tmp
+
+dist: $(PKGZIP)
+
+# feedback from CTAN upload manager: prefer not to provide tds.zip in CTAN upload
+$(PKGZIP): #$(PKGTDSZIP)
+ rm -rf $(DISTTMPDIR)
+ mkdir -p $(DISTTMPDIR)/$(PKG)
+# cp $(PKGTDSZIP) $(DISTTMPDIR)
+ cp $(PKGDTX) $(PKGINS) $(PKGPDF) $(PKGREADME) Makefile pkg.mk $(DIST_ADDITIONAL_FILES) $(DISTTMPDIR)/$(PKG)
+# cd $(DISTTMPDIR) && zip -r $(CURDIR)/$(PKGZIP) $(PKG) $(PKGTDSZIP)
+ cd $(DISTTMPDIR) && zip -r $(CURDIR)/$(PKGZIP) $(PKG)
+ rm -rf $(DISTTMPDIR)
+
+cleandist:
+ @rm -f $(PKGZIP)
diff --git a/macros/latex/contrib/phfnote/Makefile b/macros/latex/contrib/phfnote/Makefile
index 1def9236c4..53902aacd2 100644
--- a/macros/latex/contrib/phfnote/Makefile
+++ b/macros/latex/contrib/phfnote/Makefile
@@ -1,6 +1,8 @@
PKG = phfnote
+ADDITIONAL_GENERATED_FILES = phfnotepreset-xpkgdoc.def
+
DIST_ADDITIONAL_FILES = naturemagdoi.bst
-include pkg.mk
diff --git a/macros/latex/contrib/phfnote/README.md b/macros/latex/contrib/phfnote/README.md
index f55c41ba90..b6986a0226 100644
--- a/macros/latex/contrib/phfnote/README.md
+++ b/macros/latex/contrib/phfnote/README.md
@@ -13,6 +13,15 @@ flexible and customizable.
# Documentation
-Run 'make sty' to generate the style file and 'make pdf' to generate the package
-documentation. Run 'make' or 'make help' for more info.
+Run `make sty` to generate the style file, `make pdf` to generate the package
+documentation, and `make install` to install the package in your local texmf
+tree. Run 'make' or 'make help' for more info.
+
+
+# Author and License
+
+(C) 2016 Philippe Faist, philippe.faist@bluewin.ch
+
+License: [LaTeX project public license](http://www.ctan.org/license/lppl1.3),
+version 1.3 or above
diff --git a/macros/latex/contrib/phfnote/naturemagdoi.bst b/macros/latex/contrib/phfnote/naturemagdoi.bst
index f2bb40df3c..113af6e3aa 100644
--- a/macros/latex/contrib/phfnote/naturemagdoi.bst
+++ b/macros/latex/contrib/phfnote/naturemagdoi.bst
@@ -1594,9 +1594,7 @@ FUNCTION {begin.bib}
"\makeatletter"
write$ newline$
- "\let\doibase\relax"
- write$ newline$
- "\providecommand \doibase [0]{http://dx.doi.org/}"
+ "\providecommand \doibase [0]{https://doi.org/}"
write$ newline$
"\providecommand \@sanitize@url [0]{\catcode `\\12\catcode `\$12\catcode"
write$ newline$
diff --git a/macros/latex/contrib/phfnote/phfnote.dtx b/macros/latex/contrib/phfnote/phfnote.dtx
index 05deb87518..a0632f9997 100644
--- a/macros/latex/contrib/phfnote/phfnote.dtx
+++ b/macros/latex/contrib/phfnote/phfnote.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2016 by Philippe Faist <philippe.faist@bluewin.ch>
+% Copyright (C) 2019 by Philippe Faist, philippe.faist@bluewin.ch
% -------------------------------------------------------
%
% This file may be distributed and/or modified under the
@@ -22,8 +22,9 @@
%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<package>\ProvidesPackage{phfnote}
%<*package>
- [2016/08/15 v1.0 phfnote package]
+ [2021/10/08 v4.0 phfnote package]
%</package>
+%<phfnotepreset>%This preset file for phfnote is used when you call `\usepackage[preset=<PRESET NAME>]{phfnote}'
%
%<*driver>
\documentclass{ltxdoc}
@@ -34,6 +35,10 @@
\usepackage{needspace}
\makeatletter
+
+ % the factor by which to compress macro names in the margin
+\def\phf@xpkgdoc@marginmacronamecompressfactor{0.9}
+
\newsavebox\phfnoteDocVirtualPage@contents
\newenvironment{phfnoteDocVirtualPage}{%
\par%
@@ -50,6 +55,7 @@
\def\@title{Notes on Lambda-Majorization}%
\def\@author{Ph. Faist}%
\def\@date{23.12.2011}%
+ \let\RequirePackage\@gobble%
\def\notetitletopspace{0pt}%
\def\notetitlefont{\sffamily\bfseries}%
\def\morepagecontents{\par\vspace{1em}\centering\ldots}%
@@ -68,6 +74,10 @@
%%\par%
\endgroup%
}
+
+\def\eqsign@{=}
+\def\eqsign{\protect\eqsign@}
+\robustify\eqsign
\makeatother
\def\RevTeX{{\small R\raise-0.2ex\hbox{\textsc{ev}}}\TeX}
@@ -80,6 +90,7 @@
\DocInput{phfnote.dtx}
\end{document}
%</driver>
+%<*package>
% \fi
%
% \CheckSum{0}
@@ -114,7 +125,7 @@
% \maketitle
%
% \begin{abstract}
-% \pkgname{phfnote}---A handy \LaTeX{} class for typesetting short notes and
+% \pkgname{phfnote}---A handy \LaTeX{} package for typesetting short notes and
% medium-length reports, full of goodies to make it look just right.
% \end{abstract}
%
@@ -135,7 +146,7 @@
% too much space, better page margin sizes, and some basic styling to make
% the note look nicer. At the same time, it is highly configurable so that
% nothing is really unchangeable. And all overridden features can be
-% restored individually to their class-provided defaults.
+% restored individually to their defaults provided by the underlying class.
%
% This package has been designed to work optimally along with the |article|
% document class, but in principle any relatively standard \LaTeX{} class should
@@ -148,8 +159,8 @@
% complicated articles. For that, you should use a specialized class such as
% \RevTeX.\footnote{See \url{https://journals.aps.org/revtex}}
%
-% In the following, we detail individual features of this class, and explain how
-% to activate, deactivate, and customize them.
+% In the following, we detail individual features of this package, and explain
+% how to activate, deactivate, and customize them.
%
%
% \section{Basic Usage}
@@ -209,7 +220,7 @@
% \item[preset=sfssnote] {\fontfamily{cmss}\selectfont Format the note in
% \LaTeX' default sans-serif font. A very nice sans serif font. It might
% look heavy though, depending on your taste.}
-% \item[preset=opensansnote] {\fontfamily{fosj}\selectfont Format the note
+% \item[preset=opensansnote] {\opensans Format the note
% in Open Sans font (using the `\pkgname{opensans}' package with some
% default options). A very beautiful and readable sans serif font.}
% \item[preset=utopianote] {\fontfamily{futs}\selectfont Format the note in
@@ -232,12 +243,12 @@
% \begin{pkgoptions}
% \item[preset=pkgdoc] Basic formatting and settings for documenting \LaTeX{}
% packages. This preset was used for the current document.
-% \item[preset=xpkgdoc] Same as |preset=pkgdoc|, but in addition a set of
-% useful commands are also provided, the \pkgname{tcolorbox} package is
-% loaded along with some default boxes. Also some commands are patched
-% to achieve some fixes. This preset is used for the documentation of
-% packages in the \pkgname{phfqitltx} package suite. (For details see
-% the implementation of |\phfnote@preset@xpkgdoc| below.)
+% \item[preset=xpkgdoc] Same as |preset=pkgdoc|, but in addition a set of useful
+% commands are also provided, the \pkgname{tcolorbox} package is loaded along
+% with some default boxes. Also some commands are patched to achieve some
+% fixes. This preset is used for the documentation of packages in the
+% \pkgname{phfqitltx} package suite. (For details see the implementation of
+% the |xpkgdoc| preset in \autoref{sec:impl-xpkgdoc}.)
% \end{pkgoptions}
%
%
@@ -269,6 +280,52 @@
% case, the preset |reset| will guarantee all features to be deactivated.
% \end{pkgoptions}
%
+%
+%
+%
+% \section{Summary of Package Options}
+% \label{sec:package-options}
+%
+% \begin{pkgoptions}
+% \item[preset=\meta{preset name}] Load a preset specifying a predefined set of
+% options for the general appearance of the document. See documentation in
+% \autoref{sec:presets}
+% \item[title=\meta{title style},notitle] Set the title style. Use
+% \pkgoptionfmt{notitle} to disable feature and use latex default.
+% Documentation in \autoref{sec:title-styles}
+% \item[abstract=\meta{abstract attributes},noabstract] Set the abstract style by
+% specifying a comma-separated list of attributes. Don't forget to
+% put the list of attributes within braces,
+% |[abstract={wide,noname,it}]|. Documentation in
+% \autoref{sec:abstract-attributes}
+% \item[pkgset=\meta{package set}] Specify a standard set of \LaTeX{}
+% packages to load. See \autoref{sec:package-sets}.
+% \item[pagegeom=\meta{geom style},nopagegeom] Set a page margin style. Use |nopagegeom|
+% to leave page geometry unchanged. Options are documented in
+% \autoref{sec:pagegeomdefs}.
+% \item[secfmt=\meta{section formatting attributes},nosecfmt] A list of
+% attributes defining how section (and possibly paragraph) headings should
+% look like. See \autoref{sec:secfmt}.
+% \item[par=\meta{par style},nopar] Define how paragraphs should be spaced.
+% Refer to \autoref{sec:par-defs}.
+% \item[spacingdefs,nospacingdefs] Adjust spacing of lines and words
+% (\autoref{sec:spacingdefs}).
+% \item[fontdefs,nofontdefs] Adjust some fonts (\autoref{sec:fontdefs}).
+% \item[footnotedefs,nofootnotedefs] Adjust slightly the appearance of
+% footnotes. See \autoref{sec:footnotedefs}.
+% \item[hyperrefdefs=\meta{settings},nohyperrefdefs] Load the \pkgname{hyperref}
+% package, and set some defaults settings. See \autoref{sec:hyperrefdefs}.
+% \item[bibliographydefs,nobibliographydefs] Adjust the appearance and style of
+% the bibliography. See \autoref{sec:bibliographydefs}.
+% \end{pkgoptions}
+%
+% \begin{pkgtip}
+% To activate only a subset of features, use \pkgoptionfmt{preset=reset} and then
+% enable only the features required. In this way, you can ensure that only those
+% features which are explicitly specified are enabled.
+% \end{pkgtip}
+%
+%
% \section{Features}
%
% This package provides a large collection of small features, which, put all
@@ -305,29 +362,95 @@
% As you can see, it saves more space on the page compared to the default
% article title.
%
+% \changed[chg-title-default-spacing]{v3.0}{2018/10/25}{The default title
+% style was redesigned to improved spacing of the elements in all cases
+% including multiline titles, author and/or date not specified, and presence
+% or absence of thanks notes. Use \texttt{title\eqsign defaultv1}
+% for old behavior}
+%
+% If you would like your document to appear exactly as with \pkgname{phfnote}
+% version 1.0, then you can set the special title style |title=defaultv1|.
+%
+% \item[title=pretty,title=pretty2] A prettier, fancier title style. The title
+% is centered, with two side bars providing a visual guide. The |pretty|
+% style looks like this:
+% \begin{phfnoteDocVirtualPage}
+% \notetitle@stylesetup@pretty
+% \notetitle@style@pretty\null \shortlipsum \morepagecontents
+% \end{phfnoteDocVirtualPage}
+% And the |pretty2| style looks like this:
+% \begin{phfnoteDocVirtualPage}
+% \csname notetitle@stylesetup@pretty2\endcsname
+% \csname notetitle@style@pretty2\endcsname\null \shortlipsum \morepagecontents
+% \end{phfnoteDocVirtualPage}
+%
+% \changed[chg-title-add-style-pretty]{v3.0}{2018/10/25}{Added the
+% \phfverb{pretty} and \phfverb{pretty2} title styles}
+%
+% This title style is highly customizable (see below), in fact the |pretty2|
+% style is an alias for the |pretty| style, with adjusted settings.
+%
+% These styles require the |xcolor| package (it will be loaded automatically).
+%
% \item[title=small] A smaller title style which displays all the relevant
% information on a single line. This is useful for when even the default
% title style appears too large. It looks like this:
% \begin{phfnoteDocVirtualPage}
+% \notetitle@stylesetup@small
% \notetitle@style@small\null \shortlipsum \morepagecontents
% \end{phfnoteDocVirtualPage}
%
% \item[title=article] Mimics the default title style from the |article| class,
% but saves a little more space. It looks like this:
% \begin{phfnoteDocVirtualPage}
-% \vspace*{3em}\notetitle@style@article\null \shortlipsum \morepagecontents
+% \notetitle@stylesetup@article
+% \notetitle@style@article\null \shortlipsum \morepagecontents
% \end{phfnoteDocVirtualPage}
%
-% \item[title=] An empty argument to |title| instructs \pkgname{phfnote} not to
-% override any title definition, thus preserving the default class title
-% style.
+% \changed[chg-title-article-spacing]{v3.0}{2018/10/26}{The \phfverb{article}
+% title style was redesigned to use our new title engine, with improved
+% spacing of the elements in all cases including multiline titles, author
+% and/or date not specified, and presence or absence of thanks notes.
+% Use \texttt{title\eqsign articlev1} for old behavior}
+%
+% If you would like your document to appear exactly as with \pkgname{phfnote}
+% version 1.0, then you can set the special title style |title=articlev1|.
+%
+% \item[notitle] Also equivalently, |title=false|. Instructs \pkgname{phfnote}
+% not to override any title definition, thus preserving the default class
+% title style.
%
% Beware that some other title goodies, such as our more advanced |\thanks|
% notes, or spacing adjustments for the abstract, will probably not work.
+%
+% For compatibility with previous versions of |phfnote|, you may also specify
+% an empty option value ``|title=|''.
% \end{pkgoptions}
%
+% \begin{pkgtip}
+% When using the |default| and |pretty*| title styles, the argument to
+% |\title| may contain blank lines. In this case, each part is typeset on a
+% separate line with an appropriate spacing. For instance:
+% \begin{verbatim}
+% \title{Letter of Motivation
+%
+% John Doe}
+% \end{verbatim}
+% will be typeset as
+% \begin{phfnoteDocVirtualPage}
+% \expandafter\def\csname @title\endcsname{Letter of Motivation\par John Doe}
+% \expandafter\def\csname @author\endcsname{}
+% \expandafter\def\csname @date\endcsname{}
+% \notetitle@style@default\null \morepagecontents
+% \end{phfnoteDocVirtualPage}
+% \end{pkgtip}
+%
+% \changed[chg-title-false-pkgoption]{v3.0}{2018/10/16}{Improved
+% \phfverb{title,notitle} package options syntax}
%
-% \subsubsection{Customizing the style of the \phfverb{default} and \phfverb{small} title styles}
+% \subsubsection{Customizing the style of the \phfverb{default}, \phfverb{pretty}
+% and \phfverb{small} title styles}
+% \label{sec:title-styles-customization}
%
% You may customize the appearance of the |default| and |small| title styles by
% overriding some macros.
@@ -339,10 +462,17 @@
% default main font title, author text and date text. You may override these
% settings with, for instance:
% \begin{verbatim}
-% \renewcommand{\notetitlefont}{\sffamily\bfseries}
-% \renewcommand{\notetitleauthorfont}{\itshape}
-% \renewcommand{\notetitledatefont}{\footnotesize}
+% \renewcommand{\notetitlefont}[1]{\sffamily\bfseries #1}
+% \renewcommand{\notetitleauthorfont}[1]{\itshape #1}
+% \renewcommand{\notetitledatefont}[1]{\footnotesize #1}
% \end{verbatim}
+% In these macros, the parameter is expanded to the value provided by |\title|,
+% |\author|, and |\date|, respectively.\footnote{While you can normally define
+% \string\notetitlefont, \string\notetitleauthorfont\space and
+% \string\notetitledatefont\space without an explicit parameter, this might
+% produce some unexpected errors in some cases since some title styles (for
+% technical details see implementation of the \texttt{article} title style).}
+%
% The spacing of the title may be adjusted with the macros
% \DescribeMacro{\notetitlebelowspace} |\notetitlebelowspace| and
% \DescribeMacro{\notetitletopspace} |\notetitletopspace|. Override these with
@@ -356,8 +486,45 @@
% \begin{verbatim}
% \renewcommand{\notetitlehrule}{\hrule height 0.8pt}
% \end{verbatim}
+%
+% \DescribeMacro{\notetitleusempfootnotestrue}
+% \DescribeMacro{\notetitleusempfootnotesfalse} The commands
+% |\notetitleusempfootnotestrue| and |\notetitleusempfootnotesfalse| set
+% respectively whether any |\thanks| commands in the title generate footnotes
+% inside the title area (which is drawn within a minipage), i.e., all thanks
+% notes are collected on an additional line below the date, or whether they
+% appear as regular footnotes at the bottom of the page. Simply call the
+% relevant command to set either setting (don't redefine these).
+%
+%
+% The |small| title style allows you to customize the separator between the
+% author and the date:
+% \begin{verbatim}
+% \renewcommand\notetitlesmallauthordatesep{\hspace*{0.5em}\cdot\hspace*{0.5em}}
+% \end{verbatim}
%
%
+% In addition to the above settings for the default title style, the |pretty|
+% and |pretty2| styles provide a few macros that you can adjust some visual
+% aspects to your needs:
+% \begin{verbatim}
+% \renewcommand\notetitleprettylsiderulewidth{10pt}
+% \renewcommand\notetitleprettylsidespacewidth{10pt}
+% \renewcommand\notetitleprettyrsiderulewidth{10pt}
+% \renewcommand\notetitleprettyrsidespacewidth{10pt}
+% \renewcommand\notetitleprettytopspace{10pt}
+% \renewcommand\notetitleprettybottomspace{10pt}
+% \renewcommand\notetitleprettytophrulewidth{0pt}
+% \renewcommand\notetitleprettybottomhrulewidth{0pt}
+%
+% \colorlet{notetitleprettylsiderulecolor}{blue!40!black}
+% \colorlet{notetitleprettyrsiderulecolor}{notetitleprettylsiderulecolor}
+% \colorlet{notetitleprettytophrulecolor}{notetitleprettylsiderulecolor}
+% \colorlet{notetitleprettybottomhrulecolor}{notetitleprettylsiderulecolor}
+% \colorlet{notetitleprettytextcolor}{blue!20!black}
+% \colorlet{notetitleprettybgcolor}{white!95!blue}
+% \end{verbatim}
+%
%
% \subsubsection{Title notes: \phfverb\thanks{} and \phfverb\thanksmark}
%
@@ -376,7 +543,7 @@
% \end{phfnoteDocVirtualPage}
% whereas with the other styles, this information is typeset as regular footnotes.
%
-% \leavevmode\marginpar{\raggedleft \phfverb\thanks\phfverb{[N]}}\relax
+% \leavevmode\PrintMarginLabel{\string\thanks[N]}\relax
% You may specify an optional argument to |\thanks|, forcing the footnote to a
% specific number (it must be a number). For example, with
% {\ttfamily|\|author\{Ph.\@ Faist|\|thanks[9]\{|\|itshape Institute for
@@ -411,12 +578,21 @@
%
% \begin{pkgwarning}
% The optional argument to |\thanks|, as well as the command |\thanksmark|,
-% are not made available if you don't use one of |\phfnote|'s title styles.
+% are not made available if you don't use one of \pkgname{phfnote}'s title
+% styles.
%
% This behavior is such as to prevent interference with more advanced class
% mechanisms, such as \RevTeX's.
% \end{pkgwarning}
%
+% \begin{pkgtip}
+% For \pkgname{phfnote}'s title styles, you can issue the commands
+% |\notetitleusempfootnotestrue| or |\notetitleusempfootnotesfalse|
+% (documentation in \autoref{sec:title-styles-customization}) to decide
+% whether the thanks notes are issued in a separate title line, or if they are
+% displayed as regular footnotes at the bottom of the page.
+% \end{pkgtip}
+%
%
% \subsection{Abstract}
% \label{sec:abstract-attributes}
@@ -464,15 +640,16 @@
% then by default.
% \item[abstract=\pkgoptattrib{noname}] The title ``Abstract.'' above the text
% will not be typeset. The abstract text is typeset directly instead.
-% \item[abstract=\pkgoptattrib{original}] Revert to the class' default
-% implementation of the |abstract| environment. The class' implementation is
-% restored and no longer tampered with.
% \item[abstract=\pkgoptattrib{small}] Use a smaller font for the abstract text
% (|\small| font).
% \item[abstract=\pkgoptattrib{compact}] Reduce spacing before and after the
% abstract. If the abstract is short, this might look slightly better.
% \item[abstract=\pkgoptattrib{it}] Typeset the abstract text using an italic
% typeface.
+% \item[noabstract] Do not (re)define the |abstract| environment, do not execute
+% abstract definitions. This leaves the original |abstract| environment
+% definition of the underlying \LaTeX{} class. You can also equivalently say
+% |abstract=false|.
% \end{pkgoptions}
%
%
@@ -494,6 +671,18 @@
% (|\noteabstractbeforespacing|) the abstract can further be
% specified, also as macros.
%
+%
+% Obsolete options:
+% \begin{pkgoptions}
+% \item[abstract=\pkgoptattrib{original}] Revert to the original class' default
+% implementation of the |abstract| environment before \pkgname{phfnote} was
+% loaded. The original class' implementation is restored and no longer
+% tampered with. This option is OBSOLETE, use |noabstract| instead.
+% \end{pkgoptions}
+%
+% \changed[chg-noabstract-pkgoption]{v3.0}{2018/10/16}{Improved
+% \phfverb{abstract,noabstract} package options syntax}
+%
% \subsection{Table of Contents}
% \label{sec:inline-toc}
%
@@ -539,14 +728,23 @@
% \pkgname{amssymb}, \pkgname{amsfonts}, and \pkgname{amsthm}. The
% \pkgname{xcolor} package is also loaded.
%
-% \item[pkgset=rich] Include a fair amount of packages which may be useful.
-% On top of the |minimal| package set, this set includes the packages
+% \item[pkgset=rich] Include a fair amount of packages which may be useful. On
+% top of the |minimal| package set, this set includes the packages
% \pkgname{enumitem}, \pkgname{graphicx}, \pkgname{microtype},
-% \pkgname{caption}, \pkgname{setspace}, as well as \pkgname{inputenc}
-% with the |utf8| option and \pkgname{fontenc} with the |T1| option.
+% \pkgname{caption}, \pkgname{setspace}, as well as \pkgname{inputenc} with
+% the |utf8| option and \pkgname{fontenc} with the |T1| option (the packages
+% \pkgname{fontenc} and \pkgname{inputenc} are not loaded if running Xe(La)TeX
+% or Lua(La)TeX, or if they are already loaded with possibly different
+% options).
%
% This package set is loaded by default.
%
+% \changed[chg-xe-luatex-input-fontenc-pkgset]{v1.1}{2018/08/27}{If running
+% XeTeX or LuaTeX, then do not load \pkgname{inputenc} and \pkgname{fontenc}
+% as part of \texttt{rich} and \texttt{extended} package sets. Plus, do not
+% load \pkgname{inputenc} (resp. \pkgname{fontenc}) if the package is already
+% loaded}
+%
% \item[pkgset=extended] Additionally, include packages \pkgname{float},
% \pkgname{verbdef}, \pkgname{csquotes}, \pkgname{dsfont}, \pkgname{bbm}
% and \pkgname{mathtools}.
@@ -569,16 +767,8 @@
% and whether the document is typeset in two columns.
%
% If you want anything more complicated than what is provided by a default
-% setting here, just use |pagegeomdefs=false| and invoke the \pkgname{geometry} package
-% directly with your preferred set of options.
-%
-% \begin{pkgoptions}
-% \item[pagegeomdefs=true] Include the \pkgname{geometry} package, using the default
-% settings or whatever is specified with the |pagegeom| option.
-% \item[pagegeomdefs=false] Do not attempt to change the document margins, and
-% don't load the \pkgname{geometry} package.
-% \item[nopagegeomdefs] Same as |pagegeomdefs=false|.
-% \end{pkgoptions}
+% setting here, just use the |nopagegeom| package option and invoke the
+% \pkgname{geometry} package directly with your preferred set of options.
%
% The page geometry predefined settings are the following.
%
@@ -586,6 +776,8 @@
% \item[pagegeom=default] Default settings. Not too wide, not too
% narrow. Settings vary according to single or double column setting, and
% according to default font point size.
+% \item[nopagegeom] Also, |pagegeom=false|. Do not change page geometry
+% settings, do not load the \pkgname{geometry} package.
% \item[pagegeom=narrow] Narrower style. For single-column documents, this is
% closer to the typographically-advertised-optimal of 50--80 characters per
% line, but it might look narrow to some.
@@ -595,20 +787,38 @@
% note can fit. This style is used in this package documentation, for
% example.
% \end{pkgoptions}
-%
+%
+% The following package options are OBSOLETE:
+% \begin{pkgoptions}
+% \item[pagegeomdefs=\meta{true or false}] Whether to care about page
+% margins. |nopagegeomdefs| is synonym for |pagegeomdefs=false|. This option
+% is OBSOLETE, please use |nopagegeom| or |pagegeom=false| instead of
+% |pagegeomdefs=false| and |pagegeom| (or |pagegeom=...| with setting) instead
+% of |pagegeomdefs=true|.
+% \end{pkgoptions}
+%
+% \changed[chg-pagegeom-pkgoption-onoff]{v3.0}{2018/10/16}{Changed how to turn
+% on/off the page geometry settings by improving the \phfverb{pagegeom} package
+% options, deprecated \phfverb{pagegeomdefs} option}
+%
+% \changed[chg-pagegeom-xwide]{v3.0}{2018/11/30}{Changed the \texttt{xwide} page
+% geometry for tighter vertical margin for single-column text (use
+% \texttt{pagegeom\eqsign xwidev1} instead for old behavior)}
+%
%
% \subsection{Section Headers Styling}
% \label{sec:secfmt}
%
-% The \pkgname{phfnote} package provides some limited styling of section headers. The
-% font, size and ``compactness'' of the headers can be adjusted with title options.
-% But really, these options are quite basic. You should use \pkgname{titlesec} or
-% \pkgname{sectsty} directly if you want anything serious.
+% The \pkgname{phfnote} package provides some limited styling of section
+% headers. The font, size and ``compactness'' of the headers can be adjusted
+% with title options. But really, these options are quite basic. You should
+% use \pkgname{titlesec} or \pkgname{sectsty} directly if you want anything
+% serious.
%
-% The section headings are customized using the \pkgname{sectsty} package. If this
-% conflicts in your document, then use the |[secfmt={}]| package option to
-% indicate that section headings should NOT be styled by this package. Then take
-% care of section styling manually.
+% The section headings are customized using the \pkgname{sectsty} package. If
+% this conflicts in your document, then use the |nosecfmt| package option to
+% indicate that section headings should NOT be styled by this package. Then
+% you have the full freedom to take care of section styling manually.
%
% Package options may be used to customize the appearance of the section
% headings by specifying a list of attributes. When you combine arguments, make
@@ -663,8 +873,9 @@
% \item[secfmt=\pkgoptattrib{blockpar}] Change the paragraph-level headings not
% to be in ``run-in'' style, but to be typeset on their own line like section
% headings.
-% \item[secfmt=\pkgoptattribempty] Leave the argument empty to keep the original class styling;
-% nothing will be overridden and the \pkgname{sectsty} package is not loaded.
+% \item[nosecfmt] Keep the original class styling; nothing will be overridden
+% and the \pkgname{sectsty} package is not loaded. (Equivalently, you may
+% specify |secfmt=false|.)
% \end{pkgoptions}
%
% You can also directly modify the section heading style by redefining some
@@ -691,6 +902,7 @@
% Beware that if you redefine |\notesectionallfont| then you are responsible for
% honoring, or ignoring, the value of |\notesectionallfontfamily|.
%
+% \needspace{5\baselineskip}
% \DescribeMacro{\notesectionfont} \DescribeMacro{\notesubsectionfont}
% \DescribeMacro{\notesubsubsectionfont} \DescribeMacro{\noteparagraphfont}
% \DescribeMacro{\notesubparagraphfont} These macros define the font commands to
@@ -713,6 +925,17 @@
% arguments, the font definitions to apply for headings of level |\paragraph|
% and |\subparagraph|.
%
+% Obsolete options:
+% \begin{pkgoptions}
+% \item[secfmt=\pkgoptattribempty] Leave the argument empty to keep the original
+% class styling; nothing will be overridden and the \pkgname{sectsty} package
+% is not loaded. This option is OBSOLETE, use |nosecfmt| instead.
+% \end{pkgoptions}
+%
+% \changed[chg-secfmt-false-pkgoption]{v3.0}{2018/10/16}{Improved
+% \phfverb{secfmt,nosecfmt} package options syntax}
+%
+%
% \subsection{Appearance of Paragraphs}
% \label{sec:par-defs}
%
@@ -725,10 +948,22 @@
% and not indented.
% \item[par=indentminiskip] Paragraphs are indented, but there is also a small
% space between each paragraph.
-% \item[par=original] Do not modify the appearance of paragraphs, and leave the
-% class default.
+% \item[nopar] Do not modify the appearance of paragraphs, and leave the
+% original class' default.
+%
+% You may also use |par=false|.
% \end{pkgoptions}
%
+%
+% Obsolete options:
+% \begin{pkgoptions}
+% \item[par=original] OBSOLETE---use |nopar| instead.
+% \end{pkgoptions}
+%
+% \changed[chg-par-false-pkgoption]{v3.0}{2018/10/16}{Improved
+% \phfverb{par,nopar} package options syntax}
+%
+%
% \subsection{Adjusting Spacing of Lines and Words}
% \label{sec:spacingdefs}
%
@@ -739,13 +974,16 @@
% long words.
%
% \begin{pkgoptions}
-% \item[spacingdefs=true] Apply adjustments to line and word spacing.
-% \item[spacingdefs=false] Do not attempt any adjustments of line or word
-% spacing.
-% \item[nospacingdefs] Alias for |spacingdefs=false|.
+% \item[spacingdefs] Apply adjustments to line and word spacing.
+%
+% This feature is on by default. You can also use |spacingdefs=true|.
+%
+% \item[nospacingdefs] Do not attempt any adjustments of line or word spacing. You
+% can also use the alias |spacingdefs=false|.
% \end{pkgoptions}
%
%
+%
% \subsection{Adjustments for Fonts}
% \label{sec:fontdefs}
%
@@ -758,21 +996,30 @@
% instead of the default |OT1|.
%
% \begin{pkgoptions}
-% \item[fontdefs=true] Apply adjustments to fonts.
-% \item[fontdefs=false] Do not apply adjustments to fonts.
-% \item[nofontdefs] Same as |fontdefs=false|.
+% \item[fontdefs] Apply adjustments to fonts. This is on by default, except on
+% Xe\TeX{} and Lua\TeX{}.
+%
+% You can also use |fontdefs=true|.
+%
+% \item[nofontdefs] Do not apply adjustments to fonts. You can also set
+% |fontdefs=false|.
+%
% \end{pkgoptions}
%
-% \subsection{Footnote Figure Style}
+%
+% \subsection{Footnote Style}
% \label{sec:footnotedefs}
%
% The footnotes' appearance can also be slightly enhanced.
%
% \begin{pkgoptions}
-% \item[footnotedefs=true] Changes the symbol appearance a little bit---the
+% \item[footnotedefs] Changes the symbol appearance a little bit---the
% footnote number is smaller and typeset in boldface.
-% \item[footnotedefs=false] Do not change the footnote appearance.
-% \item[nofootnotedefs] Same as |footnotedefs=false|.
+%
+% You can also use |footnotedefs=true|. This feature is on by default.
+%
+% \item[nofootnotedefs] Do not change the footnote appearance. You can also set
+% |footnotedefs=false|.
% \end{pkgoptions}
%
%
@@ -785,21 +1032,93 @@
% personally like better (dark blue links as in this document).
%
% \begin{pkgoptions}
-% \item[hyperrefdefs=true] Load the \pkgname{hyperref} package, and set some sensible
-% settings. Also ensures the |\email| and |\url| commands are made available.
-% \item[hyperrefdefs=false] Do not load the \pkgname{hyperref} package, do not set
-% sensible settings.
-% \item[nohyperrefdefs] Same as |hyperrefdefs=false|.
+% \item[hyperrefdefs] Load the \pkgname{hyperref} package, and
+% set some sensible default settings. Also ensures the |\email| and |\url| commands
+% are made available.
+%
+% You can also use |hyperrefdefs=true|. This feature is on by default.
+%
+% \item[nohyperrefdefs] Do not load the \pkgname{hyperref} package. Do not set
+% any settings. Do not care to provide |\email| or |\url|. Same as
+% |hyperrefdefs=false|.
+%
+% Depending on the situation, you might prefer to specify |hyperrefdefs=defer|
+% or |hyperrefdefs=noload|, so that some basic setup (e.g. |\url|/|\email|
+% commands) can still be provided. See below.
+%
+% \item[hyperrefdefs=\pkgoptattrib{defer}] Prepare the document for hyperlinks,
+% schedule settings for \pkgname{hyperref}, but do not actually load the
+% \pkgname{hyperref} package.
+%
+% This is useful if you would like to load more packages that need to be
+% loaded before loading \pkgname{hyperref}. A lot of packages need to be
+% loaded before \pkgname{hyperref} so if you load several other packages,
+% you're probably better off using this option and calling
+% |\usepackage{hyperref}| at the end of your preamble, i.e.\@ right before
+% |\begin{document}|, rather than chasing mysterious errors.
+% \iffalse \end{document} -- [...emacs indentation gets fooled easily...] \fi
+%
+% When using this option it is the user's responsibility to load the load the
+% package with |\usepackage{hyperref}| somewhere in the preamble. You will
+% get an error if you don't do this.
+%
+% \item[hyperrefdefs=\pkgoptattrib{noemail}] Do not override any existing
+% |\email| command. Use this for instance in Rev\TeX{}, where our
+% implementation of |\email| clashes with Rev\TeX{}'s |\email| command which
+% is used to specify e-mail addresses for authors.
+%
+% The version of this command by \pkgname{phfnote} is still available as
+% |\phfnoteEmail|.
+%
+% \item[hyperrefdefs=\pkgoptattrib{noeqref}] Do not redefine the |\eqref|
+% command to include the parenthesis in the hyperlink.
+%
+% \changed[chg-hyperref-redefeqref]{v3.2}{2021/07/29}{We now redefine
+% \phfverb{\eqref} by default to include the parentheses inside the hyperlink.
+% Use the \texttt{hyperrefdefs\eqsign noeqref} package option to disable this
+% feature}
+%
+% \item[hyperrefdefs=\pkgoptattrib{noload}] Do not load the \pkgname{hyperref}
+% package, and don't bother to set any related settings. However,
+% \pkgname{url} package is loaded, and the commands |\url| and |\email| are
+% provided (they output the same visual text but don't produce a clickable
+% color link).
+%
+% \item[hyperrefdefs=\pkgoptattrib{clearoptions}] Do not attempt to set any
+% options via |\hypersetup| (and don't schedule setting any such options
+% later). You'll get \pkgname{hyperref}'s default settings, so it's up to you
+% to call |\hypersetup| with however you'd like to see your links look like.
+%
% \end{pkgoptions}
%
-% \DescribeMacro{\url} In order to typeset URLs, the |\url| command is made
-% available from the package \pkgname{url} (which is then linkified by \pkgname{hyperref}). For
-% example, you can type |\url{https://github.com/phfaist/}|.
+% Attributes may be combined, as in |hyperrefdefs={noemail,noload}|. In this
+% case make sure you put them in a braced group. Also, beware that attributes
+% are not merged between different occurrences of the |hyperrefdefs| keyword in
+% the package options; the last occurrence defines all set attributes.
+%
+% When the |hyperref| package is loaded, it is done so with the |unicode=true|
+% package option. In case you need, you can specify your own package options
+% with |hyperrefdefs=defer| and then calling |\usepackage[...]{hyperref}|. For
+% most options though it's simpler to use |\hypersetup{...}|.
%
-% \DescribeMacro{\email} A similar command allows to typeset e-mail addresses.
-% The text is displayed as a hyperlink, which when clicked opens a e-mail
-% composer to that address (via a |mailto:XXX| link). For example, try
-% |\email{pulp_fiction@tarantino.com}|.
+%
+% \DescribeMacro{\url} In order to typeset URLs, the |\url| command is made
+% available from the package \pkgname{url} (which is then linkified by
+% \pkgname{hyperref}). For example, you can type
+% |\url{https://github.com/phfaist/}|.
+%
+% \DescribeMacro{\email} \DescribeMacro{\phfnoteEmail} A similar command allows
+% to typeset e-mail addresses. The text is displayed as a hyperlink, which when
+% clicked opens a e-mail composer to that address (via a |mailto:XXX| link).
+% For example, try |\email{pulp_fiction@tarantino.com}|. The command
+% |\phfnoteEmail| is an alias for this, which is defined even if the |noemail|
+% attribute is given.
+%
+% The commands |\url| and |\email| (along with |\phfnoteEmail|) are defined
+% unless |nohyperrefs| (or |hyperrefdefs=false|) is specified. If you would
+% like to use these commands but not load the |hyperref| package, consider using
+% |hyperrefdefs=noload|.
+%
%
% \DescribeMacro{\phfnotePdfLinkColor} The command |\phfnotePdfLinkColor| may by
% used to set the color of the links. It takes one argument, a color
@@ -815,6 +1134,9 @@
% see \autoref{sec:package-sets}.)
% \end{pkgnote}
%
+% The internal name for the link color is |docnotelinkcolor|. (This name is
+% historical, and I'm not really willing to change it.)
+%
%
% \subsection{Bibliography Definitions}
% \label{sec:bibliographydefs}
@@ -830,11 +1152,12 @@
% Finally, an entry in the table of contents is generated.
%
% \begin{pkgoptions}
-% \item[bibliographydefs=true] Load the \pkgname{hyperref} package, and set some sensible
-% settings. Also ensures the |\email| and |\url| commands are made available.
-% \item[bibliographydefs=false] Do not load the \pkgname{hyperref} package, do not set
-% sensible settings.
-% \item[nobibliographydefs] Same as |bibliographydefs=false|.
+% \item[bibliographydefs] Set some default bibliography settings.
+%
+% This feature is on by default. You can also use |bibliographydefs=true|.
+%
+% \item[nobibliographydefs] Do not set some bibliography settings. You may also
+% use |bibliographydefs=false|.
% \end{pkgoptions}
%
% \DescribeMacro{\bibliography} \DescribeMacro{\bibliographystyle} The
@@ -848,6 +1171,25 @@
% custom |naturemagdoi| bibliography style is used.
%
%
+% \subsection{Inline Commenting in Documents}
+% \label{sec:inline-commenting}
+%
+% Inline commenting features (|\phfMakeCommentingCommand|) have been moved to
+% the separate dedicated package \pkgname{phfcc}. If you were using these
+% features in your document, simply do
+% \begin{verbatim}
+% \usepackage{phfcc}
+% \end{verbatim}
+% and everything should work as expected.
+%
+% \changed[chg-inline-commenting]{v3.0}{2018/10/03}{Added support for inline
+% commenting using \phfverb\phfMakeCommentingCommand}
+%
+% \changed[chg-inline-commenting-moved]{v3.1}{2020/04/02}{Moved support for
+% inline commenting to the separate dedicated package \pkgname{phfcc}}
+%
+%
+%
% \subsection{URL Styles}
% \label{sec:url-styles}
%
@@ -884,7 +1226,7 @@
% size to a fraction of the surrounding font size. The fraction may be
% specified as an optional argument. A fraction of 0.8 makes the text size 0.8
% times that of the surrounding text, that is, smaller than the surrounding
-% text. A value of 1 does not change the font size. If the fraction is not
+% text. A value of~1 does not change the font size. If the fraction is not
% specified, the value stored in |\notesmallerfrac| is used.
%
% \DescribeMacro{\notesmallerfrac} The fraction by which |\notesmaller| typesets
@@ -905,48 +1247,7 @@
%
%
%
-% \section{Summary of Package Options}
-% \label{sec:package-options}
%
-% \begin{pkgoptions}
-% \item[preset=\meta{preset name}] Load a preset specifying a predefined set of
-% options for the general appearance of the document. See documentation in
-% \autoref{sec:presets}
-% \item[title=\meta{title style}] Set the title style. Documentation in
-% \autoref{sec:title-styles}
-% \item[abstract=\meta{abstract attributes}] Set the abstract style by
-% specifying a comma-separated list of attributes. Don't forget to
-% put the list of attributes within braces,
-% |[abstract={wide,noname,it}]|. Documentation in
-% \autoref{sec:abstract-attributes}
-% \item[pkgset=\meta{package set}] Specify a standard set of \LaTeX{}
-% packages to load. See \autoref{sec:package-sets}.
-% \item[pagegeomdefs=\meta{true or false}] Whether to care about page
-% margins. |nopagegeomdefs| is synonym for |pagegeomdefs=false|.
-% \item[pagegeom=\meta{geom style}] Set a page margin style. Only has effect if
-% |pagegeomdefs=true|. Options are documented in \autoref{sec:pagegeomdefs}.
-% \item[secfmt=\meta{section formatting attributes}] A list of attributes
-% defining how section (and possibly paragraph) headings should look like.
-% See \autoref{sec:secfmt}.
-% \item[par=\meta{par style}] Define how paragraphs should be spaced. Refer to
-% \autoref{sec:par-defs}.
-% \item[spacingdefs=\meta{true or false}] Adjust spacing of lines and words
-% (\autoref{sec:spacingdefs}).
-% \item[fontdefs=\meta{true or false}] Adjust some fonts
-% (\autoref{sec:fontdefs}).
-% \item[footnotedefs=\meta{true or false}] Adjust slighly the appearance of
-% footnotes. See \autoref{sec:footnotedefs}.
-% \item[hyperrefdefs=\meta{true or false}] Load the \pkgname{hyperref} package, and set
-% some defaults settings. See \autoref{sec:hyperrefdefs}.
-% \item[bibliographydefs=\meta{true or false}] Adjust the appearance and style
-% of the bibliography. See \autoref{sec:bibliographydefs}.
-% \end{pkgoptions}
-%
-% \begin{pkgtip}
-% To activate only a subset of features, use \pkgoptionfmt{preset=reset} and then
-% enable only the features required. In this way, you can ensure that only those
-% features which are explicitly specified are enabled.
-% \end{pkgtip}
%
%
% \StopEventually{\PrintChangesAndIndex}
@@ -966,9 +1267,11 @@
\RequirePackage{kvoptions}
% \end{macrocode}
%
-% Also load \pkgname{etoolbox}, for various utilities.
+% Also load \pkgname{etoolbox}, for various utilities and \pkgname{xparse}
+% (for parsing optional arguments with recursive matching open/close brackets).
% \begin{macrocode}
\RequirePackage{etoolbox}
+\RequirePackage{xparse}
% \end{macrocode}
%
% \subsection{Internal Generic Code}
@@ -1001,7 +1304,9 @@
\ifcsname #1\next\endcsname%
\csname #1\next\endcsname%
\else%
- \PackageWarning{phfnote}{Unknown #2: '\next'. Ignoring.}
+ \PackageError{phfnote}{Unknown #2: '\next'. Ignoring.}{The given #2 '\next'
+ is invalid. Consult the package documentation for information about
+ valid attributes.}
\fi
}
}
@@ -1022,9 +1327,9 @@
% These may be redefined to adapt the font of the title, author and date.
%
% \begin{macrocode}
-\newcommand{\notetitlefont}{\sffamily\bfseries}
-\newcommand{\notetitleauthorfont}{}
-\newcommand{\notetitledatefont}{\footnotesize}
+\newcommand{\notetitlefont}[1]{\sffamily\bfseries #1}
+\newcommand{\notetitleauthorfont}[1]{#1}
+\newcommand{\notetitledatefont}[1]{\footnotesize #1}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1062,21 +1367,6 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\phfnote@title@checksetspace}
-% Some of our title styles require the \pkgname{setspace} package. This utility checks that
-% this package is loaded, and generates an error otherwise.
-%
-% |#1| = the current title style name; this is required only for the error message.
-% \begin{macrocode}
-\def\phfnote@title@checksetspace#1{%
- \ifdefined\singlespace\else%
- \PackageError{phfnote}{Note title style `#1' requires the
- `setspace' package to be loaded! Please load it, or use a
- pkgset which loads it automatically}%
- \fi%
-}
-% \end{macrocode}
-% \end{macro}
%
% \subsubsection{Implementation of \phfverb\thanks{} and \phfverb\thanksmark}
%
@@ -1084,8 +1374,9 @@
% `default' title style as well as for other simpler styles. Our implementation supports
% |\thanks[N]{...}| and |\thanksmark[N]| as for footnotes.
%
-% These newer implementations are only applied if one of our title styles is set.
-% Otherwise, the class defaults are left (which may be needed, e.g., for \RevTeX).
+% These newer implementations are only applied if one of our title styles is
+% set. Otherwise, the class defaults are left untouched (which may be needed,
+% e.g., for \RevTeX).
%
% \paragraph{Implementation of \phfverb{\thanks} and friends for our main
% `default' title style}
@@ -1141,14 +1432,22 @@
% This simply takes all the tokens collected in |\phfnote@mpfootmaterial| (see just
% above), and typesets it in the |\@mpfootins| box. The latter is automatically typeset
% by the minipage in |\end{minipage}|.
+%
+% The argument |#1| is the skip length between the text and the footnotes.
% \begin{macrocode}
-\def\phfnote@finalizempfootnotes{%
- \global\setbox\@mpfootins=\vbox{%
- \parskip=0pt\parindent=0pt\parshape 1 0.04\textwidth 0.96\textwidth\relax%
- \noindent\leavevmode%
- \reset@font\footnotesize%
- \phfnote@fmt@titlefootnotes%
- \phfnote@mpfootmaterial}%
+\def\phfnote@finalizempfootnotes#1{%
+ \if\relax\detokenize\expandafter{\phfnote@mpfootmaterial}\relax
+ \else
+ \global\skip\@mpfootins=#1\relax
+ \global\setbox\@mpfootins=\vbox{%
+ \parskip=\z@\relax
+ \parindent=\z@\relax
+ \phfnote@mpfootnotes@fontparsetup
+ \noindent\leavevmode%
+ \reset@font\footnotesize%
+ \phfnote@fmt@titlefootnotes%
+ \phfnote@mpfootmaterial}%
+ \fi
}
% \end{macrocode}
% \end{macro}
@@ -1164,6 +1463,8 @@
% |\phfnote@mpfootnoteglue| is the glue which is used between two footnote texts (as
% they are typeset in a single paragraph).
% \begin{macrocode}
+\def\phfnote@mpfootnotes@fontparsetup{%
+ \parshape 1 0.04\textwidth 0.96\textwidth\relax}
\def\phfnote@fmt@titlefootnotes{}
\def\phfnote@mympfootnotemark#1{\@textsuperscript{\normalfont#1}}
\def\phfnote@mpfootnoteglue{\hskip 1.2em plus 2em minus 0.5em\relax}
@@ -1229,18 +1530,330 @@
%
% The title styles are documented in \autoref{sec:title-styles}.
%
+%
% \paragraph{Title style: `default'}
%
-% Implementation our main `default' title style. See \autoref{sec:main-default-title-style}.
+% Implementation our main `default' title style. See
+% \autoref{sec:main-default-title-style}.
+%
+% \begin{macro}{\notetitleinnervsep}
+% Controls the vertical spacing between individual elements of the title.
+% \begin{macrocode}
+\newcommand\notetitleinnervsep{1.15ex}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\notetitlewidth}
+% Controls the width of the area in which the title content is typeset. For
+% more complex titles (e.g., |pretty| style, the title is typeset in a smaller
+% width than the text width to allow room for decorations).
+% \begin{macrocode}
+\def\notetitlewidth{\textwidth}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\notetitleparskip}
+% The paragraph skip that is used if the title contains multiple paragraphs.
+% \begin{macrocode}
+\def\notetitleparskip{1.4ex}% parskip for multiple pars in main title
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\notetitlefontparsetup}
+% \begin{macro}{\notetitleaftertitleskip}
+% |\notetitlefontparsetup| sets up any necessary \LaTeX{} commands to typeset
+% the main title. This should set the font size, and then maybe |\centering|,
+% a |\parshape|, or a text color.
+% \begin{macrocode}
+\def\notetitlefontparsetup{\raggedright\setstretch{1.05}\Large}
+% \end{macrocode}
+% |\notetitleaftertitleskip| generates the spacing after the main title. The
+% default implementation behaves differently whether the title was
+% multi-paragraph or not.
+% \begin{macrocode}
+\def\notetitleaftertitleskip{%
+ \ifnotetitle@default@ismultipar
+ \vspace{\parskip}%
+ %\gdef\phfnote@tmp@nextskip{\z@}%
+ \gdef\phfnote@tmp@nextskip{0.5\dimexpr\notetitleinnervsep\relax}%
+ \else
+ \gdef\phfnote@tmp@nextskip{\notetitleinnervsep}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\notetitleauthorfontparsetup}
+% \begin{macro}{\notetitledatefontparsetup}
+% These macros set up any necessary \LaTeX{} commands to typeset the author
+% and the date. This should set the font size, and then maybe |\centering|, a
+% |\parshape|, or a text color. These should use calls to
+% |\notetitledontextvskip| to adjust vertical spacing between the title items.
+% \begin{macrocode}
+\def\notetitleauthorfontparsetup{%
+ \notetitledonextvskip[2]%
+ \parshape 1 0.04\textwidth 0.96\textwidth\relax
+ \strut
+}
+\def\notetitledatefontparsetup{%
+ \notetitledonextvskip
+ \parshape 1 0.04\textwidth 0.96\textwidth\relax
+ \strut
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\notetitledonextvskip}
+% This helper macro is not meant to be redefined, but rather invoked from
+% |\notetitleauthorfontparsetup| and |\notetitledatefontparsetup|. It adds
+% the vertical space that was stored in |\phfnote@tmp@nextskip|.
+% \begin{macrocode}
+\newcommand\notetitledonextvskip[1][]{%
+ \vspace{#1\dimexpr\phfnote@tmp@nextskip\relax}%
+ \gdef\phfnote@tmp@nextskip{\notetitleinnervsep}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\notetitlemakecontents}
+% Helper command that produces the content of the title. The default
+% implementation uses the set |\title|, |\author|, and |\date| to render
+% everything nicely. Note that if you redefine this, then it's up to you to
+% honor what to do with |\notetitlefontparsetup|, |\notetitlefont|,
+% |\notetitleauthorfont|, etc.
+%
+% The default implementation of |\notetitlemakecontents| allows
+% |\notetitle*fontparsetup| to take a single argument, the whole
+% title/author/date including necessary formatting. In that case make sure to
+% enclose that argument in a group.
+% \begin{macrocode}
+\newcommand\notetitlemakecontents{
+ \notetitlemakecontentstop
+ {\par
+ \let\phfnote@old@par\par
+ \notetitle@titledefault@preparetitle
+ \expandafter\notetitlefontparsetup\expandafter{%
+ \expandafter\notetitlefont\expandafter{\@title}}%
+ \phfnote@old@par
+ \notetitleaftertitleskip
+ }%
+ \if\relax\detokenize\expandafter{\@author}\relax\else
+ \expandafter\notetitleauthorfontparsetup\expandafter{%
+ \expandafter\notetitleauthorfont\expandafter{\@author}}\par
+ \fi
+ \if\relax\detokenize\expandafter{\@date}\relax\else
+ \expandafter\notetitledatefontparsetup\expandafter{%
+ \expandafter\notetitledatefont\expandafter{\@date}}\par
+ \fi
+ \notetitlemakecontentsbottom
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\notetitlemakecontentstop}
+% \begin{macro}{\notetitlemakecontentsbottom}
+% If you just want to insert stuff before/after in the title box, then you
+% don't have to redefine all of |\notetitlemakecontents|, you can simply
+% redefine these macros to whatever you like.
+% \begin{macrocode}
+\def\notetitlemakecontentstop{}
+\def\notetitlemakecontentsbottom{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\notetitlebeginrender}
+% \begin{macro}{\notetitleendrender}
+% The title is rendered enclosed by calls to these macros. By default, render
+% the title in a minipage.
+%
+% WARNING: An important thing to note is that if you use
+% |\notetitle@default@usesavebox|, then the saved box is an |\hbox|, not a
+% |\vbox| (more flexibility). That means that the |\notetitlebeginrender| and
+% |\notetitleendrender| commands must open and close some environment (or a
+% |\vbox| or something like that) so that the whole
+% |\notetitlebeginrender...\notetitleendrender| construction results in
+% something that can be placed in an |\hbox|.
+% \begin{macrocode}
+\def\notetitlebeginrender{\begin{minipage}{\notetitlewidth}}
+\def\notetitleendrender{\end{minipage}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\notetitleusemainbox}
+% This macro is the main formatting command for the title's global appearance.
+% After the title is typeset in a \TeX{} box register, this macro is invoked
+% to actually display it. The default title style simply displays it with a
+% rule below, but the |pretty| title style does fancier things. Note this is
+% only used if |\ifnotetitle@default@usesavebox| is true.
+% \begin{macrocode}
+\newcommand\notetitleusemainbox[1]{%
+ \par
+ \box#1%
+ \vspace*{\notetitleinnervsep}%
+ \notetitlehrule\relax
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\notetitle@default@mainbox}
+% The main box register in which the title contents is saved.
+% \begin{macrocode}
+\newsavebox\notetitle@default@mainbox
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifnotetitle@default@usesavebox}
+% This |if| controls whether or not we set up the title in a temporary \TeX{}
+% box register first, before displaying it. This allows to play around with
+% the box, measure its height/width, place it into graphics, etc. But if we
+% want a simple title, this is not necessary, and it might break some more
+% fragile constructions (footnotes, etc).
+%
+% If this is true, then the macro |\notetitleusemainbox| is called to render
+% the box. Otherwise, |\notetitleusemainbox| is not called and the title is
+% rendered directly.
+% \begin{macrocode}
+\newif\ifnotetitle@default@usesavebox
+\notetitle@default@usesaveboxtrue
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifnotetitleusempfootnotes}
+% Whether any |\thanks| commands in the title generate footnotes inside the
+% minipage (i.e., a line at the bottom with e.g.\ affiliations), or whether
+% they appear as regular footnotes at the bottom of the page.
+%
+% This conditional may only be set to true if the rendering happens in a
+% minipage. The minipage must be opened in |\notetitlebeginrender| and closed
+% in |\notetitleendrender|.
+% \begin{macrocode}
+\newif\ifnotetitleusempfootnotes
+\notetitleusempfootnotestrue
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\notetitle@default@setup}
+% Any additional setup to be done at the beginning.
+% \begin{macrocode}
+\def\notetitle@default@setup{%
+ \notetitle@default@ismultiparfalse
+ \gdef\phfnote@tmp@nextskip{\z@}%
+ \par\raggedright}
+% \end{macrocode}
+% \end{macro}
+%
+% Now we have the main implementation of the default title style.
%
% \begin{macro}{\notetitle@style@default}
-% The default title style. Nothing mysterious, hopefully.
+% A default title style, providing a flexible engine with powerful
+% customization features (the same engine is used for the |pretty| title
+% style).
+%
+% The strategy goes like this: First typeset everything in a minipage enclosed
+% in a box register, and then display that box register using
+% |\notetitleusemainbox|.
% \begin{macrocode}
\newcommand{\notetitle@style@default}{%
+ \begingroup
+ \parskip=\z@\relax
+ \parindent=\z@\relax
+ \providecommand\singlespace{}%
+ \notetitle@default@setup
+ \ifnotetitleusempfootnotes
+ \phfnote@setupthanksmpfootnote
+ \fi
+ \vspace*{\notetitletopspace}%
+ \def\x{}%
+% \end{macrocode}
+%
+% Now, draw the title (either in a box, or directly). If we save in a box, use
+% an |\hbox|, not a |\vbox|, because we get size problems otherwise. See
+% |\notetitlebeginrender| and |\notetitleendrender|.
+% \begin{macrocode}
+ \ifnotetitle@default@usesavebox
+ \def\x{\setbox\notetitle@default@mainbox=\hbox\bgroup}
+ \fi
+ \x\notetitlebeginrender
+ \begingroup
+ \singlespace%
+ \notetitlemakecontents\par
+ \ifnotetitleusempfootnotes
+ \expandafter\ifstrequal\expandafter{\@mpfn}{mpfootnote}{}{%
+ \PackageError{phfnote}{phfnote title: can only have
+ 'usempfootnotes' in a minipage}{Make sure you open a
+ \string\begin{minipage} in the definition of
+ \string\notetitlebeginrender \space and correspondingly close
+ it with \string\end{minipage} in \string\notetitleendrender}%
+ }
+ \global\let\@thanks\@empty
+ \phfnote@finalizempfootnotes{\phfnote@tmp@nextskip}%
+ \fi
+ \endgroup
+ \notetitleendrender
+ \def\x{}%
+ \ifnotetitle@default@usesavebox
+ \def\x{\egroup
+ \notetitleusemainbox{\notetitle@default@mainbox}}%
+ \fi
+ \x
+ \par
+ \endgroup
+ \vskip\notetitlebelowspace\relax% don't change this, abstract needs to \removelastskip
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% Some helpers for the default title style.
+%
+% \begin{macro}{\ifnotetitle@default@ismultipar}
+% This flag registers whether or not the title has multiple paragraphs (and
+% thus renders on several spaced lines). It is set to |true| by redefining
+% the |\par| command in the title (see |\notetitle@titledefault@preparetitle|
+% below).
+% \begin{macrocode}
+\newif\ifnotetitle@default@ismultipar
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\notetitle@titledefault@preparetitle}
+% This helper sets everything up to display the title. It redefines |\par| to
+% register that the title has several paragraphs. Also, note that |\parskip|
+% is inserted in |\leavevmode|, so that setting |\parskip| as below only
+% affects subsequent paragraphs.
+%
+% To change the parskip amount, you may simply patch this command, e.g., as
+% |\appto\notetitle@titledefault@preparetitle{\parskip=1.2ex\relax}|.
+% \begin{macrocode}
+\newcommand\notetitle@titledefault@preparetitle{%
+ \def\par{\phfnote@old@par\global\notetitle@default@ismultipartrue}%
+ \leavevmode\parskip=\notetitleparskip\relax}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \paragraph{Title style: `defaultv1'}
+%
+% \begin{macro}{\notetitle@style@defaultv1}
+% The default title style, copied from \pkgname{phfnote} v1.0. DO NOT
+% CHANGE. Kept only for backwards compatibility, in case someone had spent
+% lots of time fine-tuning their title and patching the v1 of this package, or
+% if they want the document to appear exactly as the v1 of the package.
+%
+% [We need to use |\csdef| because of the ``1'' in the title name, which is
+% not valid in an \TeX{} usual escape sequence (!!)]
+% \begin{macrocode}
+\csdef{notetitle@style@defaultv1}{%
\begingroup\par\raggedright%
\phfnote@setupthanksmpfootnote%
\vspace*{\notetitletopspace}%
- \phfnote@title@checksetspace{default}%
+ \phfnote@title@checksetspace{defaultv1}%
\begin{minipage}{\textwidth}%
\begin{singlespace}%
\parskip=0pt\parindent=0pt\relax%
@@ -1262,7 +1875,7 @@
\vskip 2mm\relax%
\fi
\global\let\@thanks\@empty%
- \phfnote@finalizempfootnotes%
+ \csname phfnote@finalizempfootnotes@v1\endcsname%
\end{singlespace}%
\end{minipage}\par%
\vspace*{2mm}%
@@ -1271,31 +1884,206 @@
\endgroup%
\vskip\notetitlebelowspace\relax% don't change this, abstract needs to \removelastskip
}
+\csdef{phfnote@finalizempfootnotes@v1}{%
+ \global\setbox\@mpfootins=\vbox{%
+ \parskip=0pt\parindent=0pt\parshape 1 0.04\textwidth 0.96\textwidth\relax%
+ \noindent\leavevmode%
+ \reset@font\footnotesize%
+ \phfnote@fmt@titlefootnotes%
+ \phfnote@mpfootmaterial}%
+}
+\def\phfnote@title@checksetspace#1{%
+ \ifdefined\singlespace\else%
+ \PackageError{phfnote}{Note title style `#1' requires the
+ `setspace' package to be loaded! Please load it, or use a
+ pkgset which loads it automatically}{}%
+ \fi%
+}
% \end{macrocode}
% \end{macro}
%
%
+% \paragraph{Title style: `pretty' and `pretty2'}
+%
+% The |pretty| \& |pretty2| styles uses the same engine as the default, with
+% different settings.
+%
+% \begin{macro}{\notetitle@style@pretty}
+% \begin{macro}{\notetitle@style@pretty2}
+% Alias the main maketitle engine to the default one.
+% \begin{macrocode}
+\let\notetitle@style@pretty\notetitle@style@default
+\cslet{notetitle@style@pretty2}\notetitle@style@default
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\notetitle@stylesetup@pretty}
+% Setup macro that makes everything nice. Do all these defs in the macro
+% definition, and not directly in the global space, to avoid polluting the
+% \LaTeX{} environment with useless definitions if we don't use this title
+% style.
+% \begin{macrocode}
+\def\notetitle@stylesetup@pretty{%
+ \RequirePackage{xcolor}
+ \long\def\notetitlefont##1{\bfseries ##1}
+ \def\notetitlefontparsetup{%
+ \color{notetitleprettytextcolor}\centering}
+ \def\notetitleauthorfontparsetup{%
+ \notetitledonextvskip[2]%
+ \color{notetitleprettytextcolor}\centering}
+ \def\notetitledatefontparsetup{%
+ \notetitledonextvskip
+ \color{notetitleprettytextcolor}\centering}
+ \def\phfnote@mpfootnotes@fontparsetup{\color{notetitleprettytextcolor}}
+ %
+ \def\notetitlewidth{\dimexpr\textwidth
+ -\notetitleprettylsiderulewidth
+ -\notetitleprettyrsiderulewidth
+ -\notetitleprettylsidespacewidth
+ -\notetitleprettyrsidespacewidth\relax}
+ \let\notetitleusemainbox\notetitle@pretty@usemainbox
+ %
+ \def\notetitleprettylsiderulewidth{10pt}
+ \def\notetitleprettylsidespacewidth{10pt}
+ \def\notetitleprettyrsiderulewidth{10pt}
+ \def\notetitleprettyrsidespacewidth{10pt}
+ \def\notetitleprettytopspace{10pt}
+ \def\notetitleprettybottomspace{10pt}
+ \def\notetitleprettytophrulewidth{0pt}
+ \def\notetitleprettybottomhrulewidth{0pt}
+ %
+ \definecolor{notetitleprettylsiderulecolor}{RGB}{0,68,126}
+ \colorlet{notetitleprettyrsiderulecolor}{notetitleprettylsiderulecolor}
+ \colorlet{notetitleprettytophrulecolor}{notetitleprettylsiderulecolor}
+ \colorlet{notetitleprettybottomhrulecolor}{notetitleprettylsiderulecolor}
+ \definecolor{notetitleprettytextcolor}{RGB}{25,25,38}
+ \colorlet{notetitleprettybgcolor}{white}
+}
+\newlength\notetitle@pretty@tmplenht
+\newlength\notetitle@pretty@tmplendp
+\def\notetitle@pretty@usemainbox#1{%
+ \parskip=\z@\relax
+ \parindent=\z@\relax
+ \notetitle@pretty@tmplenht=\ht#1\relax%
+ \notetitle@pretty@tmplendp=\dp#1\relax%
+ \edef\tmp@dorule##1##2{%
+ {\noexpand\color{notetitlepretty##1siderulecolor}%
+ \noexpand\rule{##2}{%
+ \dimexpr \notetitleprettytopspace+
+ \notetitleprettybottomspace+
+ \notetitleprettytophrulewidth+
+ \notetitleprettybottomhrulewidth+
+ \notetitle@pretty@tmplendp+
+ \notetitle@pretty@tmplenht\relax}}}%
+ \fboxsep=0pt% for \colorbox
+ \par\hbox to \textwidth{%
+ \hskip 0pt plus 0.1fil minus 0.1fil\relax%
+ \tmp@dorule{l}{\notetitleprettylsiderulewidth}%
+ \colorbox{notetitleprettybgcolor}{%
+ \vbox{%
+ {\color{notetitleprettytophrulecolor}%
+ \hrule height \notetitleprettytophrulewidth\relax}%
+ \hbox{%
+ \hskip \notetitleprettylsidespacewidth\relax
+ % \fbox% DEBUG
+ {\vbox{\vskip \notetitleprettytopspace\relax
+ \box#1%
+ \vskip \notetitleprettybottomspace\relax}}%
+ \hskip \notetitleprettyrsidespacewidth\relax
+ }%
+ {\color{notetitleprettybottomhrulecolor}%
+ \hrule height \notetitleprettybottomhrulewidth\relax}%
+ }}%
+ \tmp@dorule{r}{\notetitleprettyrsiderulewidth}%
+ \hskip 0pt plus 0.1fil minus 0.1fil\relax}%
+ \par%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\notetitle@stylesetup@pretty2}
+% The |pretty2| style simply loads the |pretty| style, and ajusts some
+% settings.
+% \begin{macrocode}
+\csdef{notetitle@stylesetup@pretty2}{%
+ \notetitle@stylesetup@pretty
+ %
+ \definecolor{notetitleprettylsiderulecolor}{RGB}{0,68,126}
+ \colorlet{notetitleprettyrsiderulecolor}{notetitleprettylsiderulecolor}
+ \colorlet{notetitleprettytophrulecolor}{notetitleprettylsiderulecolor}
+ \colorlet{notetitleprettybottomhrulecolor}{notetitleprettylsiderulecolor}
+ \colorlet{notetitleprettytextcolor}{notetitleprettylsiderulecolor!50!black}
+ \colorlet{notetitleprettybgcolor}{white!95!notetitleprettytextcolor}
+ %
+ \def\notetitleprettytophrulewidth{.4pt}
+ \def\notetitleprettybottomhrulewidth{.4pt}
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
% \paragraph{Title style: `small'}
%
% Implementation an alternate `small' title style.
%
% \begin{macro}{\notetitle@style@small}
-% The default title style. Nothing mysterious, hopefully.
+% The small title style. Again, use the main title engine, but customize the settings.
% \begin{macrocode}
-\newcommand{\notetitle@style@small}{%
+\let\notetitle@style@small\notetitle@style@default
+\newcommand\notetitle@stylesetup@small{%
+ \notetitleusempfootnotesfalse
+ %
+ \def\notetitlemakecontents{%
+ {\expandafter\notetitlefont\expandafter{\@title}}%
+ \hfill\makebox{\fontsize{9pt}{10pt}\selectfont
+ \notetitle@small@renderauthordate}%
+ }
+ %\notetitle@default@usesaveboxfalse
+ %\def\notetitlebeginrender{\par}
+ %\def\notetitleendrender{%
+ % \vspace*{\notetitleinnervsep}\notetitlehrule\relax\vspace*{\notetitleinnervsep}}
+ \def\notetitleusemainbox##1{%
+ \par\box##1%
+ \vspace*{\notetitleinnervsep}\notetitlehrule\relax\vspace*{\notetitleinnervsep}}
+ \def\notetitle@small@renderauthordate{%
+ \expandafter\notblank\expandafter{\@author}{%
+ \expandafter\notblank\expandafter{\@date}{% both not blank
+ {\expandafter\notetitleauthorfont\expandafter{\@author}}%
+ \notetitlesmallauthordatesep
+ {\emph{\expandafter\notetitledatefont\expandafter{\@date}}}%
+ }{% only author
+ {\expandafter\notetitleauthorfont\expandafter{\@author}}%
+ }%
+ }{% only date
+ {\emph{\expandafter\notetitledatefont\expandafter{\@date}}}%
+ }}
+ %
+ \def\notetitleinnervsep{1mm}
+ \def\notetitlesmallauthordatesep{\hspace*{2mm}--\hspace*{2mm}}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Style |smallv1| provided for backwards compatibility, to make sure that all
+% spacing and formatting is exactly the same as for \pkgname{phfnote} version
+% 1.0.
+% \begin{macrocode}
+\csdef{notetitle@style@smallv1}{%
\begingroup\par\raggedright%
\let\footnote\thanks%
\vspace*{\notetitletopspace}%
- {\notetitlefont \@title}%
- \hfill\makebox{\fontsize{9pt}{10pt}\selectfont {\notetitleauthorfont \@author}%
- \hspace*{2mm}--\hspace*{2mm}{\emph{\notetitledatefont \@date}}}%
+ {\expandafter\notetitlefont\expandafter{\@title}}%
+ \hfill\makebox{\fontsize{9pt}{10pt}\selectfont
+ {\expandafter\notetitleauthorfont\expandafter{\@author}}%
+ \hspace*{2mm}--\hspace*{2mm}{\emph{\expandafter\notetitledatefont\expandafter{\@date}}}}%
\vspace*{1mm}\notetitlehrule\relax\vspace*{1mm}%
\par%
\endgroup%
\vskip\notetitlebelowspace\relax% don't change this, abstract needs to \removelastskip
}
% \end{macrocode}
-% \end{macro}
%
%
% \paragraph{Title style: `article'}
@@ -1303,9 +2091,53 @@
% Implementation the `article' title style.
%
% \begin{macro}{\notetitle@style@article}
-% The title style definition. Nothing mysterious, hopefully.
+% \begin{macro}{\notetitle@stylesetup@article}
+% Technical note. Here, by using a |tabular| environment for authors, we need
+% to assume that the macro |\notetitleauthorfont| takes one argument and does
+% not leave the author contents surrounded with full braces. This would cause
+% `|\\|' tokens enclosed in the protective braces to cause errors in the
+% tabular environment.
+%
+% \begin{macrocode}
+\let\notetitle@style@article\notetitle@style@default
+\newcommand{\notetitle@stylesetup@article}{
+ %\def\notetitletopspace{-3em}
+ \def\notetitlebottomspace{2.5em}
+ \def\notetitleinnervsep{1.5em}
+ \def\notetitlefont{}
+ \def\notetitlefontparsetup{%
+ \LARGE\centering}
+ \long\def\notetitleauthorfontparsetup##1{%
+ \notetitledonextvskip%
+ {\large\centering
+ \lineskip .5em\relax%
+ \begin{tabular}[t]{c}%
+ ##1%
+ \end{tabular}\par}}
+ \long\def\notetitleauthorfont##1{\large ##1}
+ \def\notetitledatefontparsetup{%
+ \notetitledonextvskip
+ \centering}
+ \def\phfnote@mpfootnotes@fontparsetup{}
+ \def\notetitleusemainbox##1{%
+ \par
+ \box##1%
+ }
+ \appto\notetitle@default@setup{%
+ %\def\singlespace{}%
+ }
+ %
+ \notetitleusempfootnotesfalse
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\notetitle@style@articlev1}
+% Backwards compatibility style |articlev1|.
% \begin{macrocode}
-\newcommand{\notetitle@style@article}{%
+\csdef{notetitle@style@articlev1}{%
\vspace*{-3em}%
\begingroup
\centering
@@ -1329,12 +2161,11 @@
%
% \subsubsection{Plugging into \phfverb{\maketitle}}
%
-% Actually perform the definitions to make |\maketitle| produce the
-% title with the given style. Specifically, we override
-% |\@maketitle|. The latter is called internally by |\maketitle|, and
-% the advantage of overriding |\@maketitle| only is that we inherit
-% the mechanism provided by the style class to deal with two-column
-% layouts.
+% Actually perform the definitions to make |\maketitle| produce the title with
+% the given style. Specifically, we override |\@maketitle|. The latter is
+% called internally by |\maketitle|, and the advantage of overriding
+% |\@maketitle| only is that we inherit the mechanism provided by the original
+% class (e.g., |article|) to deal with two-column layouts.
%
% \begin{macro}{\phfnote@do@notetitle}
% This macro takes care of installing the correct title into the
@@ -1346,34 +2177,49 @@
% \begin{macrocode}
\def\phfnote@do@notetitle#1{
% \end{macrocode}
-% If we have an empty title style, then we leave default title provided by the class.
+% If we have the title style |false|, or an empty title style, then we leave
+% default title provided by the class.
% \begin{macrocode}
- \if\relax\detokenize\expandafter{#1}\relax
- \else
+ \ifstrequal{#1}{false}{}{%
+ \if\relax\detokenize\expandafter{#1}\relax
+ \else
% \end{macrocode}
% Otherwise, we have a title style to set. Do some checks that the given style is indeed
% defined.
% \begin{macrocode}
- \ifcsname notetitle@style@#1\endcsname
- \def\phfnote@tmp@titsty{#1}%
- \else
- \PackageError{phfnote}{Unknown title style: '#1'.}{Unknown title
- style: '#1'. Please consult the package documentation for available
- styles.}
- \def\phfnote@tmp@titsty{default}%
- \fi
+ \ifcsname notetitle@style@#1\endcsname
+ \def\phfnote@tmp@titsty{#1}%
+ \else
+ \PackageError{phfnote}{Unknown title style: '#1'.}{Unknown title
+ style: '#1'. Please consult the package documentation for available
+ styles.}
+ \def\phfnote@tmp@titsty{default}%
+ \fi
% \end{macrocode}
% Apply new (default) definitions of |\thanks|, |\thanksmark| and |\title|. Do this here
% only, because this can clash with more complicated versions from, e.g., \RevTeX.
% \begin{macrocode}
- \let\title\notetitle@title
- \let\thanks\notetitle@thanks
- \let\thanksmark\notetitle@thanksmark
+ \let\title\notetitle@title
+ \let\thanks\notetitle@thanks
+ \let\thanksmark\notetitle@thanksmark
% \end{macrocode}
-% Now, actually overload the title style by redefining |\@maketitle|.
+% Also, LaTeX initializes |\@author| with code that generates a warning that no
+% author is given. We don't want that. It's perfectly fine not to have an
+% author, and in this case this must be empty so that our title routines can
+% properly handle this case.
% \begin{macrocode}
- \def\@maketitle{\csname notetitle@style@\phfnote@tmp@titsty\endcsname}
- \fi
+ \def\@author{}%
+% \end{macrocode}
+% Now, actually overload the title style by redefining |\@maketitle|. Also, if
+% the style defines a ``setup'' macro |\notetitle@stylesetup@...|, then we
+% invoke it.
+% \begin{macrocode}
+ \ifcsname notetitle@stylesetup@\phfnote@tmp@titsty\endcsname
+ \csname notetitle@stylesetup@\phfnote@tmp@titsty\endcsname
+ \fi
+ \def\@maketitle{\csname notetitle@style@\phfnote@tmp@titsty\endcsname}%
+ \fi
+ }%
}
% \end{macrocode}
% \end{macro}
@@ -1487,12 +2333,14 @@
% This helper both defines the |abstract| environment, and also sets the abstract
% attributes. This macro will be called according to the package options.
%
-% |#1| = a comma-separated list of attributes.
+% |#1| = a comma-separated list of attributes, or the string |false|.
% \begin{macrocode}
-\def\phfnote@do@noteabstract#1{
- \let\abstract\noteabstract
- \let\endabstract\endnoteabstract
- \phfnote@internal@execattribs{noteabstract@attr@}{abstract attribute}{#1}
+\def\phfnote@do@noteabstract#1{%
+ \ifstrequal{#1}{false}{}{%
+ \let\abstract\noteabstract
+ \let\endabstract\endnoteabstract
+ \phfnote@internal@execattribs{noteabstract@attr@}{abstract attribute}{#1}
+ }%
}
% \end{macrocode}
% \end{macro}
@@ -1570,6 +2418,8 @@
%
% \begin{macro}{\phfnote@pagegeomstyle@xwide}
% Extra wide.
+%
+% \changedreftext{chg-pagegeom-xwide}
% \begin{macrocode}
\def\phfnote@pagegeomstyle@xwide{
\if@twocolumn
@@ -1577,6 +2427,20 @@
\else
% fix the margins a bit to make text wider
\ifcase\@ptsize% mods for 10 pt
+ \PassOptionsToPackage{hmargin=1in,vmargin=1in}{geometry}%
+ \or% mods for 11 pt
+ \PassOptionsToPackage{hmargin=1in,vmargin=1in}{geometry}%
+ \or% mods for 12 pt
+ \PassOptionsToPackage{hmargin=0.75in,vmargin=1in}{geometry}%
+ \fi%
+ \fi
+}
+\csdef{phfnote@pagegeomstyle@xwidev1}{
+ \if@twocolumn
+ \PassOptionsToPackage{hmargin=0.5in,vmargin=0.5in,includeheadfoot}{geometry}%
+ \else
+ % fix the margins a bit to make text wider
+ \ifcase\@ptsize% mods for 10 pt
\PassOptionsToPackage{hmargin=1in,vmargin=1.25in}{geometry}%
\or% mods for 11 pt
\PassOptionsToPackage{hmargin=1in,vmargin=1.25in}{geometry}%
@@ -1588,6 +2452,7 @@
% \end{macrocode}
% \end{macro}
%
+%
% \begin{macro}{\phfnote@pagegeomstyle@bigmargin}
% |bigmargin| style.
% \begin{macrocode}
@@ -1609,17 +2474,21 @@
% \end{macro}
%
%
-% \begin{macro}{\phfnote@do@pagegeomdefs}
-% Finally, provide a helper to set the page geometry. Just call the right macro.
-% \begin{macrocode}
-\newcommand{\phfnote@do@pagegeomdefs}[1]{
- \ifcsname phfnote@pagegeomstyle@#1\endcsname
- \csname phfnote@pagegeomstyle@#1\endcsname
- \else
- \PackageWarning{phfnote}{Unknown page geometry style: `#1'!}
- \fi
-
- \RequirePackage{geometry}%
+% \begin{macro}{\phfnote@do@pagegeom}
+% Finally, provide a helper to set the page geometry. Just call the right
+% macro. If the argument is |false|, don't do anything.
+% \begin{macrocode}
+\newcommand{\phfnote@do@pagegeom}[1]{
+ \ifstrequal{#1}{false}{}{%
+ \message{phfnote: Setting page geometry style #1}%
+ \ifcsname phfnote@pagegeomstyle@#1\endcsname
+ \csname phfnote@pagegeomstyle@#1\endcsname
+ \else
+ \PackageWarning{phfnote}{Unknown page geometry style: `#1'!}%
+ \fi
+ %
+ \RequirePackage{geometry}%
+ }%
}
% \end{macrocode}
% \end{macro}
@@ -1639,36 +2508,38 @@
% Also set an |\emergencystretch| so that lines get spaced out for underfull boxes,
% rather than overflowing far into the margin.
% \begin{macrocode}
-\def\phfnote@do@spacing{
- \@ifpackageloaded{setspace}{
- \def\phfnote@dostretch##1{%
- \setstretch{##1}\phfnote@docaptionstretch{##1}}
- }{
- \def\phfnote@dostretch##1{%
- \renewcommand\baselinestretch{##1}\phfnote@docaptionstretch{##1}}
- }
- \@ifpackageloaded{caption}{
- \def\phfnote@docaptionstretch##1{\captionsetup{font={stretch=##1}}}
- }{
- \def\phfnote@docaptionstretch##1{\PackageWarning{phfnote}{Can't
- set line spacing for captions, because the package `caption'
- is not loaded. Please load it before `phfnote', or use an
- appropriate (e.g. `rich') pkgset which loads this package
- automatically .}}
- }
- \if@twocolumn
- \phfnote@dostretch{1.0} % leave default
- \emergencystretch=3em\relax
- \else
- \ifcase\@ptsize% 10pt
- \phfnote@dostretch{1.1}
- \or% 11pt
- \phfnote@dostretch{1.0} % 1.05? better 1.0...
- \or% 12pt
- \phfnote@dostretch{1.0} % 1.03? not really noticeable...
+\def\phfnote@do@spacingdefs#1{
+ \ifstrequal{#1}{false}{}{%
+ \@ifpackageloaded{setspace}{
+ \def\phfnote@dostretch##1{%
+ \setstretch{##1}\phfnote@docaptionstretch{##1}}
+ }{
+ \def\phfnote@dostretch##1{%
+ \renewcommand\baselinestretch{##1}\phfnote@docaptionstretch{##1}}
+ }
+ \@ifpackageloaded{caption}{
+ \def\phfnote@docaptionstretch##1{\captionsetup{font={stretch=##1}}}
+ }{
+ \def\phfnote@docaptionstretch##1{\PackageWarning{phfnote}{Can't
+ set line spacing for captions, because the package `caption'
+ is not loaded. Please load it before `phfnote', or use an
+ appropriate pkgset (e.g. `rich') which loads this package
+ automatically.}}
+ }
+ \if@twocolumn
+ \phfnote@dostretch{1.0} % leave default
+ \emergencystretch=3em\relax
+ \else
+ \ifcase\@ptsize% 10pt
+ \phfnote@dostretch{1.1}
+ \or% 11pt
+ \phfnote@dostretch{1.0} % 1.05? better 1.0...
+ \or% 12pt
+ \phfnote@dostretch{1.0} % 1.03? not really noticeable...
+ \fi
+ \emergencystretch=6em\relax
\fi
- \emergencystretch=6em\relax
- \fi
+ }
}
% \end{macrocode}
% \end{macro}
@@ -1702,11 +2573,13 @@
% |skip|.
% \begin{macrocode}
\def\phfnote@do@par#1{%
- \ifcsname phfnote@par@#1\endcsname
- \csname phfnote@par@#1\endcsname
- \else
- \PackageWarning{phfnote}{Bad paragraph setting: #1. Leaving original}
- \fi
+ \ifstrequal{#1}{false}{}{%
+ \ifcsname phfnote@par@#1\endcsname
+ \csname phfnote@par@#1\endcsname
+ \else
+ \PackageWarning{phfnote}{Bad paragraph setting: #1. Leaving original}
+ \fi
+ }
}
% \end{macrocode}
% \end{macro}
@@ -1836,12 +2709,14 @@
%
%
% \begin{macro}{\phfnote@do@secfmt}
-% Actually perform the required styling, according to the package
-% options given as argument. The argument is a comma-separated list
-% of attributes specified by the user.
+% Actually perform the required styling, according to the package options
+% given as argument. The argument is a comma-separated list of attributes
+% specified by the user, or the string |false|.
% \begin{macrocode}
\def\phfnote@do@secfmt#1{%
- \phfnote@internal@execattribs{phfnote@do@secfmt@}{section formatting preset}{#1}
+ \ifstrequal{#1}{false}{}{%
+ \phfnote@internal@execattribs{phfnote@do@secfmt@}{section formatting preset}{#1}%
+ }
}
% \end{macrocode}
% \end{macro}
@@ -1877,6 +2752,12 @@
}
+
+\def\phfnote@internal@setifxeorlua#1#2{%
+ \ifXeTeX\let#1#2\fi
+ \ifLuaTeX\let#1#2\fi
+}
+
\def\phfnote@do@pkgset@rich{
\phfnote@do@pkgset@minimal
@@ -1884,18 +2765,43 @@
\RequirePackage{setspace}
\RequirePackage{caption}
- \RequirePackage{microtype}
-
\PassOptionsToPackage{shortlabels}{enumitem}
\RequirePackage{enumitem}
\RequirePackage{graphicx}
- \PassOptionsToPackage{T1}{fontenc}
- \RequirePackage{fontenc}
+% \end{macrocode}
+% For this bit, use the \pkgname{iftex} package to determine if we're running
+% XeTeX or LuaTeX; if that's the case then we inhibit the loading of
+% \pkgname{inputenc} and \pkgname{fontenc}. The |\IfFileExists| is to ensure
+% the package runs on older LaTeX distributions without \pkgname{iftex}.
+%
+% Plus, load \pkgname{inputenc}, resp. \pkgname{fontenc}, only if it isn't
+% already loaded.
+%
+% \changedreftext{chg-xe-luatex-input-fontenc-pkgset}
+% \begin{macrocode}
+ \def\phfnote@tmp@requireinputencfontenc{
+ \@ifpackageloaded{fontenc}{}{
+ \PassOptionsToPackage{T1}{fontenc}
+ \RequirePackage{fontenc}
+ }
+ \@ifpackageloaded{inputenc}{}{
+ \PassOptionsToPackage{utf8}{inputenc}
+ \RequirePackage{inputenc}
+ }
+ }
+ \IfFileExists{iftex.sty}{
+ \RequirePackage{iftex}
+ \phfnote@internal@setifxeorlua\phfnote@tmp@requireinputencfontenc\relax
+ }{}
+ \phfnote@tmp@requireinputencfontenc
- \PassOptionsToPackage{utf8}{inputenc}
- \RequirePackage{inputenc}
+% \end{macrocode}
+%
+% Load \pkgname{microtype} after \pkgname{fontenc} (just in case).
+% \begin{macrocode}
+ \RequirePackage{microtype}
}
\def\phfnote@do@pkgset@extended{
@@ -1937,58 +2843,121 @@
% The name `|docnotelinkcolor|' is historical and hard-coded in many
% other files I've used, so I'm DEFINITELY NOT changing it.
% \end{pkgnote}
-%
-% \needspace{3\baselineskip}
-% \begin{macro}{\phfnote@do@pdfhyperrefdefs}
-% \begin{macro}{\email}
-% \begin{macro}{\url}
-% Load the \pkgname{hyperref} package and provide sensible defaults.
+%
+%
+%
+% Helpers---default set of hyperref options, and other helper macros.
% \begin{macrocode}
-\newcommand{\phfnote@do@pdfhyperrefdefs}{%
+\def\phfnote@hyperrefdefs@val@options{%
+ bookmarksnumbered=false,bookmarksopen=false,bookmarksopenlevel=1,%
+ breaklinks=true,pdfborder={0 0 0},colorlinks=true,%
+ anchorcolor=docnotelinkcolor,citecolor=docnotelinkcolor,%
+ filecolor=docnotelinkcolor,linkcolor=docnotelinkcolor,%
+ menucolor=docnotelinkcolor,runcolor=docnotelinkcolor,%
+ urlcolor=docnotelinkcolor%
+}%
+\def\phfnote@hyperrefdefs@deferredhypersetup#1{%
+ \AtBeginDocument{%
+ \@ifpackageloaded{hyperref}{%
+ \hypersetup{#1}%
+ }{%
+ \PackageWarning{phfnote}{\MessageBreak\MessageBreak
+ *** package `hyperref` was not loaded ***\MessageBreak
+ Since you specified `hyperrefdefs=defer`, I was expecting you would call
+ `\string\usepackage{hyperref}` at some point later in your preamble, but
+ it does not appear you did so. Your document might look weird.}%
+ }%
+ }%
+}
+\providecommand\phfnote@hyperrefdefs@dopkgoptions{%
+ \PassOptionsToPackage{unicode=true}{hyperref}
+}
+\def\phfnote@hyperrefdefs@loadhyperref{%
+ \phfnote@hyperrefdefs@dopkgoptions
+ \RequirePackage{hyperref}}
+\def\phfnote@hyperrefdefs@provideemail{\let\email\phfnote@email}
+\def\phfnote@eqref#1{%
+ \hyperref[{#1}]{\textup{\tagform@{\ref*{#1}}}}%
+}
+\def\phfnote@hyperrefdefs@redefeqref{%
+ \let\eqref\phfnote@eqref
+}
+\def\phfnote@hyperrefdefs@afterhook{}
% \end{macrocode}
-% Make sure a color-managing package is loaded, {color} or {xcolor}, and define our default color:
+%
+% Define the attributes that can be set for hyperref-related options. See
+% \autoref{sec:hyperrefdefs}.
+%
% \begin{macrocode}
- \phfnote@requirecolorpackage%
- \definecolor{docnotelinkcolor}{rgb}{0,0,0.4}%
+\def\phfnote@do@hyperrefdefs@attr@true{}% for explicit value "hyperrefdefs=true"
+\def\phfnote@do@hyperrefdefs@attr@defer{
+ \def\phfnote@hyperrefdefs@loadhyperref{%
+ \phfnote@hyperrefdefs@dopkgoptions
+ \let\hypersetup\phfnote@hyperrefdefs@deferredhypersetup}
+}
+\def\phfnote@do@hyperrefdefs@attr@clearoptions{
+ \def\phfnote@hyperrefdefs@val@options{}
+}
+\def\phfnote@do@hyperrefdefs@attr@noemail{
+ \def\phfnote@hyperrefdefs@provideemail{}
+}
+\def\phfnote@do@hyperrefdefs@attr@noeqref{
+ \def\phfnote@hyperrefdefs@redefeqref{}
+}
+\def\phfnote@do@hyperrefdefs@attr@noload{
+ \def\phfnote@hyperrefdefs@loadhyperref{}
+ \def\phfnote@hyperrefdefs@redefeqref{}
+ \let\hypersetup\@gobble
+}
% \end{macrocode}
-%
-% Load URL package, and save a version of |\url| which is not patched
-% by \pkgname{hyperref}:
+%
+%
+% \begin{macro}{\phfnote@do@hyperrefdefs}
+% \begin{macro}{\email}
+% \begin{macro}{\url}
+% Do all stuff related to hyperref.
% \begin{macrocode}
- \RequirePackage{url}%
- \DeclareUrlCommand\phfnote@format@url{}%
+\def\phfnote@do@hyperrefdefs#1{%
+ \ifstrequal{#1}{false}{}{%
% \end{macrocode}
-%
-% Set up \pkgname{hyperref} options:
+% Make sure a color-managing package is loaded, {color} or {xcolor}, and define
+% our default link color:
% \begin{macrocode}
- \PassOptionsToPackage{bookmarks=true,backref=false}{hyperref}%
- \RequirePackage{hyperref}%
- %
- \hypersetup{unicode=true,%
- bookmarksnumbered=false,bookmarksopen=false,bookmarksopenlevel=1,%
- breaklinks=true,pdfborder={0 0 0},colorlinks=true}%
- \hypersetup{%
- anchorcolor=docnotelinkcolor,citecolor=docnotelinkcolor,%
- filecolor=docnotelinkcolor,linkcolor=docnotelinkcolor,%
- menucolor=docnotelinkcolor,runcolor=docnotelinkcolor,%
- urlcolor=docnotelinkcolor}%
+ \phfnote@requirecolorpackage%
+ \definecolor{docnotelinkcolor}{rgb}{0,0,0.4}%
% \end{macrocode}
-%
-% Provide an |\email| command for specifying e-mails. Note that the |\url| command is
-% already provided by the packages \pkgname{url} and \pkgname{hyperref}.
+% Load the \pkgname{url} package, and save a version of |\url| which is not
+% patched by \pkgname{hyperref} to format URLs, and provide |\phfnoteEmail| for
+% emails (not |\email| right away because it might conflict with RevTeX. Provide
+% |\email| later after parsing attribs):
% \begin{macrocode}
- \let\email\phfnote@email%
+ \RequirePackage{url}%
+ \DeclareUrlCommand\phfnote@format@url{}%
+ \let\phfnoteEmail\phfnote@email
% \end{macrocode}
-%
-% And finally set a nicer default |\url|/|\email| style:
+%
+% Set up everything according to the user's selected attributes.
+% \begin{macrocode}
+ \phfnote@internal@execattribs{phfnote@do@hyperrefdefs@attr@}{%
+ phfnote hyperref-related option}{#1}%
+% \end{macrocode}
+%
+% And now, load the hyperref package (or don't, if it's deferred), and set some
+% options.
% \begin{macrocode}
- \urlstyle{notesf}%
+ \phfnote@hyperrefdefs@loadhyperref
+ \expandafter\hypersetup\expandafter{\phfnote@hyperrefdefs@val@options}
+ \phfnote@hyperrefdefs@provideemail
+ \phfnote@hyperrefdefs@redefeqref
+ \urlstyle{notesf}
+ \phfnote@hyperrefdefs@afterhook
+ }
}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
-%
+%
% \begin{macro}{\phfnotePdfLinkColor}
% Set links color. Use as |\phfnotePdfLinkColor|\marg{color}.
% Color may be any color name or specification recognized by the
@@ -1999,8 +2968,8 @@
\@ifpackageloaded{xcolor}{%
\colorlet{docnotelinkcolor}{#1}%
}{% else:
- \PackageWarning{phfnote}{\protect\phfnotePdfLinkColor may only be
- used if the package xcolor is loaded.}%
+ \PackageError{phfnote}{\protect\phfnotePdfLinkColor may only be
+ used if the package xcolor is loaded.}{}%
}%
}
% \end{macrocode}
@@ -2014,9 +2983,12 @@
% Provide base macros to be able to build up |\email| command for emails and other
% URL-like commands which should sanitize their arguments.
%
-% Also prepare the command |\phfnote@email| which will be renamed |\email| in our
+% Also prepare the command |\phfnoteEmail| which will be renamed |\email| in our
% \pkgname{hyperref} package setup (see above).
%
+% NOTE: The commands |\phfnote@email| and |\phfnote@format@url| will only work
+% if you don't have |hyperrefdefs=false|. They will work with
+% |hyperrefdefs=noload| if you don't want to load the |hyperref| package.
% \begin{macrocode}
\def\phfnote@sanitize@url{%
\catcode`\$12%
@@ -2029,7 +3001,6 @@
% \catcode`\^^M10% newline = space
\relax%
}%
-\providecommand\phfnote@format@url{\texttt}
\def\phfnote@email{\begingroup\phfnote@sanitize@url\phfnote@impl@email@}%
\def\phfnote@impl@email@#1{\endgroup\href{mailto:#1}{\phfnote@format@url{#1}}}%
% \end{macrocode}
@@ -2040,8 +3011,9 @@
%
%
% \begin{macro}{\phfnote@requirecolorpackage}
-% And finally define an internal utility to make sure that a color package (either
-% \pkgname{color} or \pkgname{xcolor}) is loaded. If none are loaded, the \pkgname{xcolor} package is loaded.
+% And finally define an internal utility to make sure that a color package
+% (either \pkgname{color} or \pkgname{xcolor}) is loaded. If none are loaded,
+% the \pkgname{xcolor} package is loaded.
% \begin{macrocode}
\def\phfnote@requirecolorpackage{%
\@ifpackageloaded{color}{%
@@ -2063,14 +3035,22 @@
% encoding which is better. Also, use Computer Modern Bright as
% sans-serif font by default instead of Computer Modern Sans Serif.
%
-% \begin{macrocode}
-\def\phfnote@do@fontdefs{
-
- \PassOptionsToPackage{T1}{fontenc}
- \RequirePackage{fontenc}
-
- \renewcommand\sfdefault{cmbr}
-
+% If on Xe\TeX{} or Lua\TeX{}, don't do anything.
+%
+% \begin{macrocode}
+\def\phfnote@do@fontdefs#1{
+ \ifstrequal{#1}{false}{}{%
+ \let\phfnote@tmp@do\@firstofone
+ \IfFileExists{iftex.sty}{%
+ \RequirePackage{iftex}%
+ \phfnote@internal@setifxeorlua\phfnote@tmp@do\@gobble
+ }{}
+ \phfnote@tmp@do{
+ \PassOptionsToPackage{T1}{fontenc}
+ \RequirePackage{fontenc}
+ \renewcommand\sfdefault{cmbr}
+ }
+ }
}
% \end{macrocode}
% \end{macro}
@@ -2127,6 +3107,11 @@
% \begin{macrocode}
\providecommand\eprint[2][]{\href{http://arxiv.org/abs/##2}{arXiv:##2}}
% \end{macrocode}
+%
+% Fix for RevTeX styles that use |\doibase| with a newline following them ---
+% \begin{macrocode}
+ \providecommand\doibase{\phfnote@doibasefix}
+% \end{macrocode}
%
% Relay the call to the ``old'' |\bibliography| command to actually implement the
% bibliography.
@@ -2134,6 +3119,7 @@
\phfnote@old@bibliography{#1}%
\endgroup%
}
+\def\phfnote@doibasefix#110.{https://doi.org/10.}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\phfnote@bibliographystyle}
@@ -2153,9 +3139,11 @@
% \begin{macro}{\phfnote@do@bibliographydefs}
% Make our changes live. Will be called later according to package options.
% \begin{macrocode}
-\def\phfnote@do@bibliographydefs{%
- \let\bibliographystyle\phfnote@bibliographystyle%
- \let\bibliography\phfnote@bibliography%
+\def\phfnote@do@bibliographydefs#1{%
+ \ifstrequal{#1}{false}{}{%
+ \let\bibliographystyle\phfnote@bibliographystyle%
+ \let\bibliography\phfnote@bibliography%
+ }
}
% \end{macrocode}
% \end{macro}
@@ -2168,14 +3156,16 @@
% Adjust the formatting of footnotes so they look better. Again,
% this is called later according to the package options.
% \begin{macrocode}
-\def\phfnote@do@footnotedefs{
- \let\phfnote@orig@makefnmark\@makefnmark
-%% \def\@makefnmark{\hbox{\@textsuperscript{%
-%% \normalfont\tiny\fontseries{sb}\selectfont\@thefnmark}}}
- \def\@makefnmark{\hbox{\@textsuperscript{%
- \normalfont\tiny\bfseries\@thefnmark}}}
-%% \def\@makefnmark{\hbox{\@textsuperscript{%
-%% \normalfont\scriptsize\bfseries\@thefnmark}}}% too large
+\def\phfnote@do@footnotedefs#1{
+ \ifstrequal{#1}{false}{}{%
+ \let\phfnote@orig@makefnmark\@makefnmark
+%% \def\@makefnmark{\hbox{\@textsuperscript{%
+%% \normalfont\tiny\fontseries{sb}\selectfont\@thefnmark}}}
+ \def\@makefnmark{\hbox{\@textsuperscript{%
+ \normalfont\tiny\bfseries\@thefnmark}}}
+%% \def\@makefnmark{\hbox{\@textsuperscript{%
+%% \normalfont\scriptsize\bfseries\@thefnmark}}}% too large
+ }
}
% \end{macrocode}
% \end{macro}
@@ -2240,6 +3230,11 @@
%
% \end{macro}
%
+% \subsubsection{Inline commenting in documents}
+%
+% The code that was initially here was moved into a separate package:
+% \pkgname{phfcc}.
+%
% \subsubsection{URL Styles}
%
% \needspace{7\baselineskip}
@@ -2416,7 +3411,7 @@
\csname phfnote@restoredefs@#1\endcsname%
\else%
\PackageError{phfnote}{\string\phfnoteRestoreDefs: no such
- definitions stored (#1)}
+ definitions stored (#1)}{}
\fi%
}
% \end{macrocode}
@@ -2455,96 +3450,121 @@
% \end{macrocode}
%
%
-% The title style to use. \marginpar{\raggedleft \phfverb{[title=...]}}
+% The title style to use. \PrintMarginLabel{[title=...]}
% See \autoref{sec:title-styles}.
% \begin{macrocode}
\DeclareStringOption[default]{title}
+\DeclareVoidOption{notitle}{\def\phfnote@opt@title{false}}
% \end{macrocode}
%
%
-% Option for abstract attributes \marginpar{\raggedleft
-% \phfverb{[abstract=...]}} (\autoref{sec:abstract-attributes}).
+% Option for abstract attributes \PrintMarginLabel{[abstract=...]}
+% (\autoref{sec:abstract-attributes}).
% \begin{macrocode}
\DeclareStringOption[]{abstract}
+\DeclareVoidOption{noabstract}{\def\phfnote@opt@abstract{false}}
% \end{macrocode}
%
-% Option for Package sets \marginpar{\raggedleft \phfverb{[pkgset=...]}}
+% Option for Package sets \PrintMarginLabel{[pkgset=...]}
% (\autoref{sec:package-sets})
% \begin{macrocode}
\DeclareStringOption[rich]{pkgset}
% \end{macrocode}
%
-% Define the page geometry. \marginpar{\raggedleft
-% \phfverb{[pagegeomdefs=...]}} \marginpar{\raggedleft \phfverb{[pagegeom=...]}}
-% See \autoref{sec:pagegeomdefs}.
+% Define the page geometry. \PrintMarginLabel{[pagegeomdefs=...]}
+% \PrintMarginLabel{[pagegeom=...]} See \autoref{sec:pagegeomdefs}.
+% \begin{macrocode}
+\DeclareStringOption[default]{pagegeom}
+\DeclareVoidOption{nopagegeom}{\def\phfnote@opt@pagegeom{false}}
+% \end{macrocode}
+%
+% Obsolete options---
% \begin{macrocode}
\DeclareBoolOption[true]{pagegeomdefs}
\DeclareComplementaryOption{nopagegeomdefs}{pagegeomdefs}
-\DeclareStringOption[default]{pagegeom}
% \end{macrocode}
+% ---we handle these as follows. By default, |\ifphfnote@opt@pagegeomdefs| is
+% true. If it isn't, that means it was overridden and we need to respect that.
%
%
-%
-% Styling of section headings. \marginpar{\raggedleft \phfverb{[secfmt=...]}}
+% Styling of section headings. \PrintMarginLabel{[secfmt=...]}
% See \autoref{sec:secfmt}.
% \begin{macrocode}
\DeclareStringOption[section]{secfmt}
+\DeclareVoidOption{nosecfmt}{\def\phfnote@opt@secfmt{false}}
% \end{macrocode}
%
-% How to treat paragraphs. \marginpar{\raggedleft \phfverb{[par=...]}} See
+% How to treat paragraphs. \PrintMarginLabel{[par=...]} See
% \autoref{sec:par-defs}.
% \begin{macrocode}
\DeclareStringOption[skip]{par}
+\DeclareVoidOption{nopar}{\def\phfnote@opt@par{false}}
% \end{macrocode}
%
-% Add definitions to adjust spacing of lines and words. \marginpar{\raggedleft
-% \phfverb{[spacingdefs=...]}} See \autoref{sec:spacingdefs}.
+% Add definitions to adjust spacing of lines and
+% words. \PrintMarginLabel{[spacingdefs=...]} See \autoref{sec:spacingdefs}.
% \begin{macrocode}
-\DeclareBoolOption[true]{spacingdefs}
-\DeclareComplementaryOption{nospacingdefs}{spacingdefs}
+\DeclareStringOption[true]{spacingdefs}[true]
+\DeclareVoidOption{nospacingdefs}{\def\phfnote@opt@spacingdefs{false}}
% \end{macrocode}
%
-% Do some adjustments to the fonts. \marginpar{\raggedleft
-% \phfverb{[fontdefs=...]}} See \autoref{sec:fontdefs}.
+%
+% Do some adjustments to the fonts. \PrintMarginLabel{[fontdefs=...]} See
+% \autoref{sec:fontdefs}.
% \begin{macrocode}
-\DeclareBoolOption[true]{fontdefs}
-\DeclareComplementaryOption{nofontdefs}{fontdefs}
+\DeclareStringOption[true]{fontdefs}[true]
+\DeclareVoidOption{nofontdefs}{\def\phfnote@opt@fontdefs{false}}
% \end{macrocode}
%
-% Adjustments for footnotes. \marginpar{\raggedleft
-% \phfverb{[footnotedefs=...]}} See \autoref{sec:footnotedefs}.
+% Adjustments for footnotes. \PrintMarginLabel{[footnotedefs=...]} See
+% \autoref{sec:footnotedefs}.
% \begin{macrocode}
-\DeclareBoolOption[true]{footnotedefs}
-\DeclareComplementaryOption{nofootnotedefs}{footnotedefs}
+\DeclareStringOption[true]{footnotedefs}[true]
+\DeclareVoidOption{nofootnotedefs}{\def\phfnote@opt@footnotedefs{false}}
% \end{macrocode}
%
-% Load hyperref and corresponding definitions. \marginpar{\raggedleft
-% \phfverb{[hyperrefdefs=...]}} See \autoref{sec:hyperrefdefs}.
+% Load \pkgname{hyperref} and corresponding
+% definitions. \PrintMarginLabel{[hyperrefdefs=...]} See
+% \autoref{sec:hyperrefdefs}.
% \begin{macrocode}
-\DeclareBoolOption[true]{hyperrefdefs}
-\DeclareComplementaryOption{nohyperrefdefs}{hyperrefdefs}
+\DeclareStringOption[]{hyperrefdefs}[]
+\DeclareVoidOption{nohyperrefdefs}{\def\phfnote@opt@hyperrefdefs{false}}
% \end{macrocode}
%
-% Adjustments for bibliography, including default style. \marginpar{\raggedleft
-% \phfverb{[bibliographydefs=...]}} See \autoref{sec:bibliographydefs}.
+% Adjustments for bibliography, including default
+% style. \PrintMarginLabel{[bibliographydefs=...]} See
+% \autoref{sec:bibliographydefs}.
% \begin{macrocode}
-\DeclareBoolOption[true]{bibliographydefs}
-\DeclareComplementaryOption{nobibliographydefs}{bibliographydefs}
+\DeclareStringOption[true]{bibliographydefs}[true]
+\DeclareVoidOption{nobibliographydefs}{\def\phfnote@opt@bibliographydefs{false}}
% \end{macrocode}
%
-%
-% Preset option. \marginpar{\raggedleft \phfverb{[preset=...]}} See
-% \autoref{sec:presets}.
+% \begin{macro}{\phfnote@loadpreset}
+% A helper macro to load presets. Can be used by presets that want to extend
+% other presets.
% \begin{macrocode}
-\define@key{phfnote}{preset}{%
- \ifcsname phfnote@preset@#1\endcsname%
- \csname phfnote@preset@#1\endcsname%
- \else%
- \PackageError{phfnote}{Unknown preset: `#1'!}{You specified the
- option 'preset=...' with an invalid value. Please look up the
- package documentation corresponding to your version of phfnote
- for possible values.}
+\def\phfnote@loadpreset#1{%
+ \IfFileExists{phfnotepreset-#1.def}{%
+ \input{phfnotepreset-#1.def}%
+ }{%
+ \ifcsname phfnote@preset@#1\endcsname%
+ \csname phfnote@preset@#1\endcsname%
+ \else%
+ \PackageError{phfnote}{Unknown preset: `#1'!}{You specified the
+ option 'preset=...' with an invalid value. Please look up the
+ package documentation corresponding to your version of phfnote
+ for possible values. Additionally, no file named `phfnotepreset-#1.def'
+ was found.}%
\fi%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Preset option. \PrintMarginLabel{[preset=...]} See \autoref{sec:presets}.
+% \begin{macrocode}
+\define@key{phfnote}{preset}{%
+ \phfnote@loadpreset{#1}%
}
% \end{macrocode}
%
@@ -2556,12 +3576,35 @@
}
% \end{macrocode}
%
+%
+%
+% Small utility to deal with obsolete |XXXdefs=true/false| options. If the
+% (obsolete) bool option |#1| is set to false (which means it was set
+% explicitly, so this must be respected), then emit a package warning and set
+% option |#2| (the regular option) to the string value |false|.
+% \begin{macrocode}
+\def\phfnote@ifpkgoptfalsesetfalse#1#2{%
+ \edef\x{%
+ \expandafter\noexpand\csname ifphfnote@opt@#1\endcsname\noexpand\else
+ \noexpand\PackageWarning{phfnote}{Option #1 is obsolete. Please use "#2=false'' instead.}%
+ \noexpand\csgdef{phfnote@opt@#2}{false}\noexpand\fi}%
+ \x
+}
+% \end{macrocode}
+%
% \subsubsection{Define Global Presets}
% \label{impl:presets}
%
% Define the global presets here. See \autoref{sec:presets} for a description
% of what these presets do.
%
+% Some of the presets whose definitions are short are defined here directly
+% here, in the |sty| file. Other presets are placed in a separate
+% |phfnotepreset-XXX.def| file to avoid bloating the main style file.
+%
+% \changed[chg-presets-dotdef-files]{v4.0}{2021/10/08}{Moved some presets to
+% external \phfverb{.def} files}
+%
% \begin{macro}{\phfnote@hook@atendload}
% A hook for presets to do stuff at the end of package load.
% \begin{macrocode}
@@ -2569,7 +3612,6 @@
% \end{macrocode}
% \end{macro}
%
-%
% \begin{macro}{\phfnote@preset@article}
% Article preset.
% \begin{macrocode}
@@ -2588,7 +3630,7 @@
\newcommand\phfnote@presetcommon@xnote[1][noteitsf]{
\def\phfnote@opt@title{default}
\def\phfnote@opt@par{skip}
- \phfnote@opt@pagegeomdefstrue
+ %\phfnote@opt@pagegeomdefstrue
\def\phfnote@opt@pagegeom{wide}
\setlength{\footnotesep}{5pt}
\g@addto@macro\phfnote@hook@atendload{
@@ -2610,8 +3652,8 @@
% \begin{macrocode}
\def\phfnote@preset@sfnote{
\phfnote@presetcommon@xnote
- \phfnote@opt@footnotedefstrue
- \phfnote@opt@fontdefstrue
+ \def\phfnote@opt@footnotedefs{true}
+ \def\phfnote@opt@fontdefs{true}
\renewcommand\familydefault{\sfdefault}
\renewcommand{\notesectionallfontfamily}{\sfdefault}
}
@@ -2619,11 +3661,11 @@
% \end{macrocode}
% set up all the settings as for |sfnote| \ldots
% \begin{macrocode}
- \phfnote@preset@sfnote
+ \phfnote@loadpreset{sfnote}%
% \end{macrocode}
% \ldots but override:
% \begin{macrocode}
- \phfnote@opt@fontdefsfalse
+ \def\phfnote@opt@fontdefs{false}
\PassOptionsToPackage{T1}{fontenc}
\RequirePackage{fontenc}
\renewcommand\sfdefault{cmss}
@@ -2632,19 +3674,19 @@
% \end{macrocode}
% set up all the settings as for |sfnote| \ldots
% \begin{macrocode}
- \phfnote@preset@sfnote
+ \phfnote@loadpreset{sfnote}%
% \end{macrocode}
% \ldots but override:
% \begin{macrocode}
- \phfnote@opt@fontdefsfalse
+ \def\phfnote@opt@fontdefs{false}
\PassOptionsToPackage{T1}{fontenc}
\RequirePackage{fontenc}
- \PassOptionsToPackage{default,osfigures,scale=0.9}{opensans}
+ \PassOptionsToPackage{default,scale=0.9}{opensans}
\RequirePackage{opensans}
}
\def\phfnote@preset@utopianote{
\phfnote@presetcommon@xnote[noteit]
- \phfnote@opt@fontdefsfalse
+ \def\phfnote@opt@fontdefs{false}
\PassOptionsToPackage{T1}{fontenc}
\RequirePackage{fontenc}
\RequirePackage{fourier}
@@ -2654,8 +3696,8 @@
}
\def\phfnote@preset@mnmynote{
\phfnote@presetcommon@xnote[noteit]
- \phfnote@opt@footnotedefsfalse
- \phfnote@opt@fontdefsfalse
+ \def\phfnote@opt@footnotedefs{false}
+ \def\phfnote@opt@fontdefs{false}
\PassOptionsToPackage{T1}{fontenc}
\RequirePackage{fontenc}
\renewcommand{\notesectionallfontfamily}{\sfdefault}
@@ -2680,7 +3722,6 @@
% \end{macro}
% \end{macro}
%
-%
% \begin{macro}{\phfnote@preset@pkgdoc}
% Preset for a package documentation.
%
@@ -2688,7 +3729,7 @@
% \begin{macrocode}
\def\phfnote@preset@pkgdoc{
\phfnote@presetcommon@xnote[noteit]
- \phfnote@opt@fontdefsfalse
+ \def\phfnote@opt@fontdefs{false}
% \end{macrocode}
%
% Then set up the font, which is done in a separate macro
@@ -2713,6 +3754,9 @@
% font. Override |\phfnote@pkgdoc@setupfont| to adjust the whole font
% set-up, or |\phfnote@pkgdoc@setupmainfont| to adjust only the main
% document font.
+%
+% \changed[chg-opensans-fosj]{v3.1}{2020/05/25}{Fixes for more recent
+% versions of the \pkgname{opensans} package.}
% \begin{macrocode}
\providecommand\phfnote@pkgdoc@setupfont{
\PassOptionsToPackage{T1}{fontenc}
@@ -2723,25 +3767,147 @@
\IfFileExists{opensans.sty}{}{\PackageError{phfnote}{Font OpenSans is not
available (need `opensans' package)}{Please install the opensans
package, which provides the OpenSans font.}}
- \def\opensans@scale{s*[0.85]}
- \renewcommand{\sfdefault}{fosj}
+ \PassOptionsToPackage{scale=0.85,defaultsans}{opensans}
+ \RequirePackage{opensans}
}
\providecommand\phfnote@pkgdoc@setupmainfont{\RequirePackage{fourier}}
% \end{macrocode}
% \end{macro}
+%
+% \begin{macro}{\phfnote@preset@reset}
+% Finally, the |reset| preset:
+% \begin{macrocode}
+\def\phfnote@preset@reset{
+ \def\phfnote@opt@pkgset{none}
+ \def\phfnote@opt@title{false}
+ \def\phfnote@opt@pagegeom{false}
+ \def\phfnote@opt@spacingdefs{false}
+ \def\phfnote@opt@par{false}
+ \def\phfnote@opt@abstract{false}
+ \def\phfnote@opt@hyperrefdefs{false}
+ \def\phfnote@opt@fontdefs{false}
+ \def\phfnote@opt@secfmt{false}
+ \def\phfnote@opt@bibliographydefs{false}
+ \def\phfnote@opt@footnotedefs{false}
+% \end{macrocode}
+%
+% \begin{pkgwarning}
+% NOTE TO SELF: DO NOT FORGET TO ADD HERE RESET COMMANDS FOR ANY NEW OPTION
+% THAT WE PROVIDE IN THE FUTURE.
+% \end{pkgwarning}
+%
+% \begin{macrocode}
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{Finally, Process and Execute the Package Options}
+%
+%
+%
+% Process the options:
+%
+% \begin{macrocode}
+\ProcessKeyvalOptions*
+% \end{macrocode}
+%
+%
+% Take action according to the user options.
+%
+% For the |pkgset| option.
+% \begin{macrocode}
+\expandafter\phfnote@do@pkgset\expandafter{\phfnote@opt@pkgset}
+% \end{macrocode}
+%
+% For the |title| option.
+% \begin{macrocode}
+\expandafter\phfnote@do@notetitle\expandafter{\phfnote@opt@title}
+% \end{macrocode}
+%
+% For the |abstract| option.
+% \begin{macrocode}
+\expandafter\phfnote@do@noteabstract\expandafter{\phfnote@opt@abstract}
+% \end{macrocode}
+%
+% For the |secfmt| option.
+% \begin{macrocode}
+\expandafter\phfnote@do@secfmt\expandafter{\phfnote@opt@secfmt}
+% \end{macrocode}
+%
+% For the |pagegeomdefs| option. Here, the first line is needed to deal with
+% the obsolete option `|pagegeom|'.
+% \begin{macrocode}
+\phfnote@ifpkgoptfalsesetfalse{pagegeomdefs}{pagegeom}
+\expandafter\phfnote@do@pagegeom\expandafter{\phfnote@opt@pagegeom}
+% \end{macrocode}
+%
+% For the |spacingdefs| option.
+% \begin{macrocode}
+\expandafter\phfnote@do@spacingdefs\expandafter{\phfnote@opt@spacingdefs}
+% \end{macrocode}
+%
+% For the |par| option.
+% \begin{macrocode}
+\expandafter\phfnote@do@par\expandafter{\phfnote@opt@par}
+% \end{macrocode}
+%
+% For the |hyperrefdefs| option.
+% \begin{macrocode}
+\expandafter\phfnote@do@hyperrefdefs\expandafter{\phfnote@opt@hyperrefdefs}
+% \end{macrocode}
+%
+% For the |fontdefs| option.
+% \begin{macrocode}
+\expandafter\phfnote@do@fontdefs\expandafter{\phfnote@opt@fontdefs}
+% \end{macrocode}
+%
+% For the |bibliographydefs| option.
+% \begin{macrocode}
+\expandafter\phfnote@do@bibliographydefs\expandafter{\phfnote@opt@bibliographydefs}
+% \end{macrocode}
+%
+% For the |footnotedefs| option.
+% \begin{macrocode}
+\expandafter\phfnote@do@footnotedefs\expandafter{\phfnote@opt@footnotedefs}
+% \end{macrocode}
%
-% \begin{macro}{\phfnote@preset@xpkgdoc}
-% Same as |preset=pkgdoc|, but also provide some handy hacks and
-% commands.
+% Finally, execute the hook we set up for definitions at the end of the package
+% loading:
+% \begin{macrocode}
+\phfnote@hook@atendload
+% \end{macrocode}
+%
+%
+% \subsection{Helper files}
+%
+% Now we write some code to some external |.def| files for large chunks of code
+% that are only needed in specific situations, in order to avoid bloating the
+% main style file.
+%
+% \subsubsection{The \emph{xpkgdoc} preset}
+% \label{sec:impl-xpkgdoc}
+%
+% The |xpkgdoc| preset is based on the |pkgdoc| preset. It introduces multiple
+% pretty involved tools and definitions on top of |pkgdoc|; these are not needed
+% unless this preset is loaded. Let's write all of the corresponding
+% definitions into a separate |.def| file.
+%
+% \iffalse
+%</package>
+% \fi
+% \begin{verbatim}
+%<*phfnotepreset-xpkgdoc>
+% \end{verbatim}
%
+% Load the |pkgdoc| preset before anything else:
% \begin{macrocode}
-\def\phfnote@preset@xpkgdoc{
- \phfnote@preset@pkgdoc
+\phfnote@loadpreset{pkgdoc}
% \end{macrocode}
%
% Include the \pkgname{verbdef} package, because it's always useful.
% \begin{macrocode}
- \RequirePackage{verbdef}
+\RequirePackage{verbdef}
% \end{macrocode}
%
% \textbf{Some patching first:}
@@ -2751,71 +3917,106 @@
% |\PrintChangesAndIndex|, which calls both |\PrintChanges| and |\PrintIndex| with
% some additional spacing.
% \begin{macrocode}
- \ifdefined\PrintChanges
- \phfnoteHackSectionStarWithTOCInCommand\PrintChanges
- \fi
- \ifdefined\PrintIndex
- \phfnoteHackSectionStarWithTOCInCommand\PrintIndex
- \fi
- \def\PrintChangesAndIndexSpacing{\vspace{3cm plus 2cm minus 2cm}}
- \def\PrintChangesAndIndex{\PrintChangesAndIndexSpacing\PrintChanges
- \PrintChangesAndIndexSpacing\PrintIndex}
+\ifdefined\PrintChanges
+ \phfnoteHackSectionStarWithTOCInCommand\PrintChanges
+\fi
+\ifdefined\PrintIndex
+ \phfnoteHackSectionStarWithTOCInCommand\PrintIndex
+\fi
+\def\PrintChangesAndIndexSpacing{\vspace{3cm plus 2cm minus 2cm}}
+\def\PrintChangesAndIndex{\PrintChangesAndIndexSpacing\PrintChanges
+ \PrintChangesAndIndexSpacing\PrintIndex}
% \end{macrocode}
%
% Set the index to TWO columns only (three is too tight).
% \begin{macrocode}
- \ifdefined\c@IndexColumns
- \setcounter{IndexColumns}{2}
- \fi
+\ifdefined\c@IndexColumns
+ \setcounter{IndexColumns}{2}
+\fi
% \end{macrocode}
%
-% And set the glossary, that is, the list of changes history to single-column. For this,
-% renew the environment completely to remove the |multicols| environment.
-% \begin{macrocode}
- \let\phfnote@xpkgdoc@old@theglossary\theglossary
- \let\phfnote@xpkgdoc@old@endtheglossary\endtheglossary
- \renewenvironment{theglossary}{%
- \glossary@prologue%
- \GlossaryParms \let\item\@idxitem \ignorespaces}
- {}
+% And set the glossary, that is, the list of changes history to single-column.
+% For this, renew the environment completely to remove the |multicols|
+% environment.
+% \begin{macrocode}
+\let\phfnote@xpkgdoc@old@theglossary\theglossary
+\let\phfnote@xpkgdoc@old@endtheglossary\endtheglossary
+\renewenvironment{theglossary}{%
+ \glossary@prologue%
+ \GlossaryParms \let\item\@idxitem \ignorespaces}
+{}
+% \end{macrocode}
+%
+% Tools to condense the macro names in the margins, and make them break at the
+% margin width (at arbitrary points in the macro name) instead of overflowing on
+% the documentation text.
+% \begin{macrocode}
+\def\phf@fillwithdiscretionaries#1#2#3{%
+ \def\phf@fillwithdescretionaries@a{#1}%
+ \def\phf@fillwithdescretionaries@b{#2}%
+ \edef\x{#3}%
+ \expandafter \phf@fillwithdiscretionaries@ \x \@nil
+}
+\def\phf@fillwithdiscretionaries@#1#2\@nil{%
+ \if\relax\detokenize{#1}\relax\else
+ #1%
+ \if\relax\detokenize{#2}\relax\else
+ \discretionary{\phf@fillwithdescretionaries@a}{%
+ \phf@fillwithdescretionaries@b}{}%
+ \phf@fillwithdiscretionaries@#2\@nil
+ \fi
+ \fi
+}
+\definecolor{phfxpkgdocmacronamehyphencolor}{rgb}{0.6,0.6,0.7}
+\def\phf@xpkgdoc@macrobreakhyphen{%
+ \hbox{\textcolor{phfxpkgdocmacronamehyphencolor}{-}}}
+\def\ScaleHorizontallyAndHyphenateAnywhere#1#2{% {hscale-factor}{text}
+ \scalebox{#1}[1.0]{%
+ \parbox{% compute inverse of #1 ...
+ \dimexpr \marginparwidth*65536 /
+ \number\dimexpr #1\p@ \relax \relax
+ }{\raggedleft\phf@fillwithdiscretionaries{%
+ \phf@xpkgdoc@macrobreakhyphen}{}{#2}\hfill}%
+ }%
+}
+\def\phf@xpkgdoc@marginmacronamecompressfactor{0.85}
+\def\phf@xpkgdoc@macrofont{\small\bfseries}% \footnotesize ?
+\def\PrintMarginLabelContents#1{%
+ \strut\MacroFont\phf@xpkgdoc@macrofont
+ \ScaleHorizontallyAndHyphenateAnywhere{%
+ \phf@xpkgdoc@marginmacronamecompressfactor}{#1}%
+ \par
+}
+\def\PrintMarginLabel#1{\marginpar{\PrintMarginLabelContents{#1}}}
+\def\PrintDescribeMacro#1{\PrintMarginLabelContents{\string#1}}
+\let\PrintMacroName\PrintDescribeMacro
+\let\PrintDescribeEnv\PrintMarginLabelContents
+\let\PrintEnvName\PrintMarginLabelContents
% \end{macrocode}
-%
-%
-% \textbf{Hyperref:} No ``default'' \pkgname{hyperref} definitions, we'll use
-% \pkgname{hyperdoc} instead.
-% \begin{macrocode}
- \phfnote@opt@hyperrefdefsfalse
- \g@addto@macro\phfnote@hook@atendload{
- \definecolor{docnotelinkcolor}{rgb}{0,0,0.4}%
- \RequirePackage{url}%
- \DeclareUrlCommand\phfnote@format@url{}%
- \RequirePackage{hypdoc}
- %
- \hypersetup{bookmarks=true,backref=false,unicode=true,%
- bookmarksnumbered=false,bookmarksopen=false,bookmarksopenlevel=1,%
- breaklinks=true,pdfborder={0 0 0},colorlinks=true}%
- \hypersetup{%
- anchorcolor=docnotelinkcolor,citecolor=docnotelinkcolor,%
- filecolor=docnotelinkcolor,linkcolor=docnotelinkcolor,%
- menucolor=docnotelinkcolor,runcolor=docnotelinkcolor,%
- urlcolor=docnotelinkcolor}%
- \let\email\phfnote@email%
- \urlstyle{noteit}
- }
+%
+% \textbf{Hyperref:} Request default \pkgname{hyperref} definitions with
+% |hyperrefdefs=defer|, but we'll load \pkgname{hyperdoc} instead of
+% \pkgname{hyperref}.
+% \begin{macrocode}
+\def\phfnote@opt@hyperrefdefs{defer}
+\g@addto@macro\phfnote@hook@atendload{
+ \RequirePackage{hypdoc}
+ \urlstyle{noteit}
+}
% \end{macrocode}
%
% \textbf{Provide Macro:} |\pkgname|\marg{package name} to format a package
% name. Also place it in the general index. This command is robust and
% can be used in section titles etc.
% \begin{macrocode}
- \def\pkgname##1{%
- \pkgnamefmt{##1}%
- \index{##1=\pkgnamefmt{##1}|hyperpage}%
- \index{packages:>##1=\pkgnamefmt{##1}|hyperpage}%
- }
- \robustify\pkgname
- \def\pkgnamefmt##1{\textsf{##1}}
- \robustify\pkgnamefmt
+\def\pkgname#1{%
+ \pkgnamefmt{#1}%
+ \index{#1=\pkgnamefmt{#1}|hyperpage}%
+ \index{packages:>#1=\pkgnamefmt{#1}|hyperpage}%
+}
+\robustify\pkgname
+\def\pkgnamefmt#1{\textsf{#1}}
+\robustify\pkgnamefmt
% \end{macrocode}
%
%
@@ -2824,7 +4025,7 @@
%
% First, we need a counter for the x-ref system.
% \begin{macrocode}
- \newcounter{phfnotechanged}
+\newcounter{phfnotechanged}
% \end{macrocode}
%
% Mark changes in the implementation section of the package documentation
@@ -2834,73 +4035,74 @@
% allows you to refer to this change anywhere else in the package doc with
% |\changedreftext|.
% \begin{macrocode}
- \newcommand*\changed[4][]{%
+\newcommand*\changed[4][]{%
% \end{macrocode}
%
% First, if no label is given as optional argument, then just display the
% change and add it to the package changes list.
% \begin{macrocode}
- \if\relax\detokenize{##1}\relax%
- \changedtextfmt{##2}{##3}{##4}%
- \changes{##2}{##3}{##4}%
- \else%
+ \if\relax\detokenize{#1}\relax%
+ \changedtextfmt{#2}{#3}{#4}%
+ \changes{#2}{#3}{#4}%
+ \else%
% \end{macrocode}
%
% If a label name is provided as optional argument, then we need to write
% some stuff to the \texttt{.aux} file to make the change visible in the
% whole document.
% \begin{macrocode}
- \protected@edef\phfnotechanged@tmpa{{##2}{##3}{##4}}%
- \immediate\write\@auxout{\string\phfnote@changed@set%
- {##1}{\expandonce\phfnotechanged@tmpa}}%
- \par\hspace*{0pt}\refstepcounter{phfnotechanged}\label{phfnotechanged:##1}%
- \begingroup\let\phfnote@changedreftext@par\relax
- \changedreftext{##1}%
- \endgroup
- \changes{##2}{##3}{\hyperref[phfnotechanged:##1]{##4}}%
- \fi
- }
- \def\phfnote@changed@set##1{%
- \expandafter\gdef\csname phfnote@changed@lbl@##1\endcsname%
- }
+ \protected@edef\phfnotechanged@tmpa{{#2}{#3}{#4}}%
+ \immediate\write\@auxout{\string\phfnote@changed@set%
+ {#1}{\expandonce\phfnotechanged@tmpa}}%
+ \par\hspace*{0pt}\refstepcounter{phfnotechanged}\label{phfnotechanged:#1}%
+ \begingroup\let\phfnote@changedreftext@par\relax
+ \changedreftext[\@secondoftwo]{#1}%
+ \endgroup
+ \changes{#2}{#3}{\hyperref[phfnotechanged:#1]{#4}}%
+ \fi
+}
+\def\phfnote@changed@set#1{%
+ \expandafter\gdef\csname phfnote@changed@lbl@#1\endcsname%
+}
% \end{macrocode}
%
% When you document changes with the help of |\changed|, you may refer to
% any specific change from anywhere else in the package doc with the help
% of |\changedreftext|\marg{label name}.
% \begin{macrocode}
- \def\phfnote@changedreftext@par{\par}
- \newcommand*\changedreftext[1]{%
- \phfnote@changedreftext@par%
- \ifcsname phfnote@changed@lbl@##1\endcsname
- \hyperref[phfnotechanged:##1]{%
- \expandafter\expandafter\expandafter\changedtextfmt%
- \csname phfnote@changed@lbl@##1\endcsname
- }
- \else
- \hyperref[phfnotechanged:##1]{%
- \changedtextfmt{???}{???}{[\textbf{missing ref}]}%
- }%
- \fi
- \par
- }
+\def\phfnote@changedreftext@par{\par}
+\newcommand*\changedreftext[2][\phfnote@changedrefto]{%
+ \phfnote@changedreftext@par%
+ \ifcsname phfnote@changed@lbl@#2\endcsname
+ #1{#2}{%
+ \expandafter\expandafter\expandafter\changedtextfmt%
+ \csname phfnote@changed@lbl@#2\endcsname
+ }
+ \else
+ \hyperref[phfnotechanged:#2]{%
+ \changedtextfmt{???}{???}{[\textbf{missing ref}]}%
+ }%
+ \fi
+ \par
+}
+\def\phfnote@changedrefto#1{\hyperref[phfnotechanged:#1]}
% \end{macrocode}
%
% The macro |\changedtextfmt|\marg{v1.0}\marg{2016/05/22}\marg{description}
% takes care of formatting the change on the spot.
% \begin{macrocode}
- \newcommand*\changedtextfmt[3]{%
- \textit{Changed in {##1\kern 0.3ex\relax[##2]}:} ##3.
- }
+\newcommand*\changedtextfmt[3]{%
+ \textit{Changed in {#1\kern 0.3ex\relax[#2]}:} #3.
+}
% \end{macrocode}
%
% \textbf{Provide environment \phfverb{pkgoptions}:} Set up an elaborate
% environment (based on a |description| environment) to describe package
% options.
% \begin{macrocode}
- \RequirePackage{enumitem}
- \newlist{pkgoptions}{description}{1}
- \setlist[pkgoptions]{font=\pkgoptionfmt[{\vspace*{5pt}}],style=nextline}
+\RequirePackage{enumitem}
+\newlist{pkgoptions}{description}{1}
+\setlist[pkgoptions]{font=\pkgoptionfmt@many[{\vspace*{5pt}}],style=nextline}
% \end{macrocode}
%
% But patch the |pkgoptions|' |\item| command, so that it puts an additional
@@ -2908,21 +4110,22 @@
% the list sees the full label as its next token, and can be used as a macro
% argument. (This is not needed for newer versions of \pkgname{enumitem}.)
% \begin{macrocode}
- \apptocmd\pkgoptions{\let\pkgoptions@old@item\item%
- \def\item{\@ifnextchar[\pkgoptions@item@\pkgoptions@item@@}%]
- \def\pkgoptions@item@[##1]{\pkgoptions@old@item[{{##1}}]}%
- \def\pkgoptions@item@@{\PackageWarning{phfnote}{{pkgoptions}: you must
- specify label to \string\item as \string\item[label].}%
- \pkgoptions@old@item}%
- }{}{\PackageWarning{phfnote}{preset xpkgdoc: Failed to patch command
- \string\pkgoptions}}
- \def\pkgoptionscombineitem{\leavevmode\vspace{\dimexpr-\baselineskip-\parskip-\itemsep\relax}}
+\def\pkgoptions@item{\@ifnextchar[\pkgoptions@item@\pkgoptions@item@@}%]
+\def\pkgoptions@item@[#1]{\pkgoptions@old@item[{{#1}}]}%
+\def\pkgoptions@item@@{\PackageWarning{phfnote}{{pkgoptions}: you must
+ specify label to \string\item as \string\item[label].}%
+ \pkgoptions@old@item}%
+\apptocmd\pkgoptions{%
+ \let\pkgoptions@old@item\item
+ \let\item\pkgoptions@item
+}{}{\PackageWarning{phfnote}{preset xpkgdoc: Failed to patch command
+ \string\pkgoptions}}
% \end{macrocode}
%
% For convenience, also provide a |\meta|-like command for boolean arguments
% (|true| or |false|). `|\metatruefalsearg|' typesets as `\metatruefalsearg'.
% \begin{macrocode}
- \def\metatruefalsearg{\meta{\phfverb{true} $\mid$ \phfverb{false}}}
+\def\metatruefalsearg{\meta{\phfverb{true} $\mid$ \phfverb{false}}}
% \end{macrocode}
%
% Include also a command to format a package option. Puts the option in a box
@@ -2932,12 +4135,19 @@
%
% When indexing the packages, make sure to remove the protective braces if any.
% \begin{macrocode}
- \newcommand\pkgoptionfmt[2][]{%
- \begingroup\let\meta\pkgoptfmt@meta\fbox{\normalfont\ttfamily ##2}\endgroup%
- \expandafter\phfnote@pkgdoc@index\expandafter{\@firstofone ##2}%
- ##1}
- \let\pkgopt@save@meta\meta
- \def\pkgoptfmt@meta##1{\begingroup\normalfont\itshape\pkgopt@save@meta{##1}\endgroup}
+\newcommand\pkgoptionfmt[2][]{%
+ \begingroup\let\meta\pkgoptfmt@meta\pkgopt@fbox{\normalfont\ttfamily #2}\endgroup%
+ \expandafter\phfnote@pkgdoc@index\expandafter{\@firstofone #2}%
+ #1}
+\newcommand\pkgoptionfmt@many[2][]{%
+ \def\pkgoptionfmt@tmp@addcomma{}
+ \def\do##1{\pkgoptionfmt@tmp@addcomma\pkgoptionfmt{\vphantom{#2}##1}%
+ \def\pkgoptionfmt@tmp@addcomma{\hskip0.25em\relax,\hskip0.8em\relax}}%
+ \expandafter\docsvlist\expandafter{\@firstofone #2}%
+ #1}
+\let\pkgopt@save@meta\meta
+\def\pkgopt@fbox{\fbox}
+\def\pkgoptfmt@meta#1{\begingroup\normalfont\itshape\pkgopt@save@meta{#1}\endgroup}
% \end{macrocode}
%
% Whenever a package option is formatted with |\pkgoptionfmt|, it is placed in
@@ -2948,49 +4158,51 @@
% version of that code is executed instead, where the |=|'s have been replaced
% by |,|'s.
% \begin{macrocode}
- \def\phfnote@pkgdoc@index##1{%
- \begingroup\lccode`\= = `\,\relax%
- \def\x{\lowercase{\def\@tmpa{##1}}}%
- \x%
- \let\meta\@gobble%
- \let\marg\@gobble%
- \let\oarg\@gobble%
- \let\parg\@gobble%
- \let\pkgoptattrib\@firstofone%
- \let\pkgoptattribnodots\@firstofone%
- \let\pkgoptattribempty\@empty%
- \def\handleitemindex####1{%
- \edef\@tmpc{####1}%
- \if\relax\detokenize\expandafter{\@tmpc}\relax\else%
- \edef\@tmpb{{\expandonce\@tmpc=\string\verb!*+\expandonce\@tmpc+ (\pkgoptname)|hyperpage}}%
- \expandafter\index\@tmpb%
- \edef\@tmpb{{\packageoptionsname:>\expandonce\@tmpc=\string\verb!*+\expandonce\@tmpc+|hyperpage}}%
- \expandafter\index\@tmpb%
- \fi%
- }%
- \def\@tmpc{\forcsvlist{\handleitemindex}}%
- \expandafter\@tmpc\expandafter{\@tmpa}%
- \endgroup%
- }
- \def\pkgoptname{pkg. opt.}
- \def\packageoptionsname{package options}
+\def\phfnote@pkgdoc@index#1{%
+ \begingroup\lccode`\= = `\,\relax%
+ \def\x{\lowercase{\def\@tmpa{#1}}}%
+ \x%
+ \let\meta\@gobble%
+ \let\marg\@gobble%
+ \let\oarg\@gobble%
+ \let\parg\@gobble%
+ \let\vphantom\@gobble%
+ \let\hphantom\@gobble%
+ \let\pkgoptattrib\@firstofone%
+ \let\pkgoptattribnodots\@firstofone%
+ \let\pkgoptattribempty\@empty%
+ \def\handleitemindex##1{%
+ \edef\@tmpc{##1}%
+ \if\relax\detokenize\expandafter{\@tmpc}\relax\else%
+ \edef\@tmpb{{\expandonce\@tmpc=\string\verb!*+\expandonce\@tmpc+ (\pkgoptname)|hyperpage}}%
+ \expandafter\index\@tmpb%
+ \edef\@tmpb{{\packageoptionsname:>\expandonce\@tmpc=\string\verb!*+\expandonce\@tmpc+|hyperpage}}%
+ \expandafter\index\@tmpb%
+ \fi%
+ }%
+ \def\@tmpc{\forcsvlist{\handleitemindex}}%
+ \expandafter\@tmpc\expandafter{\@tmpa}%
+ \endgroup%
+}
+\def\pkgoptname{pkg. opt.}
+\def\packageoptionsname{package options}
% \end{macrocode}
%
% \textbf{Provide environment \phfverb{cmdoptions}:} hijack the |pkgoptions|
% environment to do the same thing, except we place the items in the index under
% ``command options'' instead of ``package options.''
% \begin{macrocode}
- \def\cmdoptions{\begingroup\setcmdnotpkgoptions
- \pkgoptions}
- \def\endcmdoptions{\endpkgoptions\endgroup}
- \newcommand\cmdoptionfmt[2][]{\begingroup\setcmdnotpkgoptions
- \pkgoptionfmt[{##1}]{##2}\endgroup}
- \def\cmdoptname{cmd. opt.}
- \def\commandoptionsname{command options}
- \def\setcmdnotpkgoptions{\let\pkgoptname\cmdoptname
- \let\packageoptionsname\commandoptionsname
- \let\fbox\cmdoptionsfbox}
- \def\cmdoptionsfbox##1{\ensuremath{\underline{{\text{##1}}}}}
+\def\cmdoptions{\begingroup\setcmdnotpkgoptions
+ \pkgoptions}
+\def\endcmdoptions{\endpkgoptions\endgroup}
+\newcommand\cmdoptionfmt[2][]{\begingroup\setcmdnotpkgoptions
+ \pkgoptionfmt[{#1}]{#2}\endgroup}
+\def\cmdoptname{cmd. opt.}
+\def\commandoptionsname{command options}
+\def\setcmdnotpkgoptions{\let\pkgoptname\cmdoptname
+ \let\packageoptionsname\commandoptionsname
+ \let\pkgopt@fbox\cmdoptionsfbox}
+\def\cmdoptionsfbox#1{\ensuremath{\underline{{\text{#1}}}}}
% \end{macrocode}
%
% Provide the |\pkgoptattrib| command, which typesets its argument as
@@ -2998,9 +4210,9 @@
% \autoref{sec:abstract-attributes}. The variant |\pkgoptattribondots{arg}|
% typesets |\{arg\}| while |\pkgoptattribempty| expands to |{}|.
% \begin{macrocode}
- \def\pkgoptattrib##1{\{##1,...\}}
- \def\pkgoptattribnodots##1{\{##1\}}
- \def\pkgoptattribempty{\{\}}
+\def\pkgoptattrib#1{\{#1,...\}}
+\def\pkgoptattribnodots#1{\{#1\}}
+\def\pkgoptattribempty{\{\}}
% \end{macrocode}
%
% \textbf{Colorful boxes: environments \phfverb{pkgnote},
@@ -3012,146 +4224,76 @@
% to be stripped), we save the |verbatim|-related commands, and restore
% them after the interfering packages have been loaded.
% \begin{macrocode}
- \phfnoteSaveDefs{verbatimstuff}{%
- verbatim,@verbatim,@xverbatim,@sxverbatim,endverbatim}
- \usepackage{tcolorbox}
- \newtcolorbox{pkgnote}{
- colback=blue!5!white,
- colframe=blue!5!white,
- coltitle=blue!50!black,
- toptitle=1.5ex,
- fonttitle=\bfseries,
- title={NOTE}
- }
- \newtcolorbox{pkgwarning}{
- colback=red!5!white,
- colframe=red!5!white,
- coltitle=red!50!black,
- toptitle=1.5ex,
- fonttitle=\bfseries,
- title={WARNING}
- }
- \newtcolorbox{pkgtip}{
- colback=green!5!white,
- colframe=green!5!white,
- coltitle=green!50!black,
- toptitle=1.5ex,
- fonttitle=\bfseries,
- title={TIP}
- }
- \phfnoteRestoreDefs{verbatimstuff}
+\phfnoteSaveDefs{verbatimstuff}{%
+ verbatim,@verbatim,@xverbatim,@sxverbatim,endverbatim}
+\usepackage{tcolorbox}
+\newtcolorbox{pkgnote}{
+ colback=blue!5!white,
+ colframe=blue!5!white,
+ coltitle=blue!50!black,
+ toptitle=1.5ex,
+ fonttitle=\bfseries,
+ title={NOTE}
+}
+\newtcolorbox{pkgwarning}{
+ colback=red!5!white,
+ colframe=red!5!white,
+ coltitle=red!50!black,
+ toptitle=1.5ex,
+ fonttitle=\bfseries,
+ title={WARNING}
+}
+\newtcolorbox{pkgtip}{
+ colback=green!5!white,
+ colframe=green!5!white,
+ coltitle=green!50!black,
+ toptitle=1.5ex,
+ fonttitle=\bfseries,
+ title={TIP}
+}
+\phfnoteRestoreDefs{verbatimstuff}
+% \end{macrocode}
+%
+% Patch the |verbatim| environment to remove extraneous space after the
+% environment caused by I don't know what weird cause:
+% \begin{macrocode}
+\appto\endverbatim{\vspace{-\baselineskip}}
% \end{macrocode}
%
% Common title stuff:
% \begin{macrocode}
- \def\phfqitltxPkgTitle##1{The \pkgname{##1} package\thanks{\itshape
- This document corresponds to \pkgname{##1}~\fileversion, dated \filedate. It
- is part of the
- \href{https://github.com/phfaist/phfqitltx/}{\pkgname{phfqitltx}} package
- suite, see \url{https://github.com/phfaist/phfqitltx}.}}
+\def\phfqitltxPkgTitle#1{The \pkgname{#1} package\thanks{\itshape
+ This document corresponds to \pkgname{#1}~\fileversion, dated \filedate. It
+ is part of the
+ \href{https://github.com/phfaist/phfqitltx/}{\pkgname{phfqitltx}} package
+ suite, see \url{https://github.com/phfaist/phfqitltx}.}}
% \end{macrocode}
%
% Utility to parse package file date into ``|\today|''-style date: invoke as
% |\date{\pkgfmtdate\filedate}|.
% \begin{macrocode}
- \def\pkgfmtdate##1{%
- \edef\pkgfmtdate@thedate{##1}%
- \expandafter\pkgfmtdate@next\pkgfmtdate@thedate\@nil%
- }
- \def\pkgfmtdate@next##1/##2/##3\@nil{% YYYY/MM/DD
- \ifcase ##2 \or January\or February\or March\or April\or May%
- \or June\or July\or August\or September\or October\or November\or December\fi\space ##3,%
- \space ##1}
- \robustify\pkgfmtdate@next
+\def\pkgfmtdate#1{%
+ \edef\pkgfmtdate@thedate{#1}%
+ \expandafter\pkgfmtdate@next\pkgfmtdate@thedate\@nil%
}
+\def\pkgfmtdate@next#1/#2/#3\@nil{% YYYY/MM/DD
+ \ifcase #2 \or January\or February\or March\or April\or May%
+ \or June\or July\or August\or September\or October%
+ \or November\or December\fi\space #3,%
+ \space #1}
+\robustify\pkgfmtdate@next
% \end{macrocode}
-% \end{macro}
-%
%
-% \begin{macro}{\phfnote@preset@reset}
-% Finally, the |reset| preset:
-% \begin{macrocode}
-\def\phfnote@preset@reset{
- \def\phfnote@opt@pkgset{none}
- \def\phfnote@opt@title{}
- \phfnote@opt@pagegeomdefsfalse
- \phfnote@opt@spacingdefsfalse
- \def\phfnote@opt@par{original}
- \def\phfnote@opt@abstract{original}
- \phfnote@opt@hyperrefdefsfalse
- \phfnote@opt@fontdefsfalse
- \def\phfnote@opt@secfmt{}
- \phfnote@opt@bibliographydefsfalse
- \phfnote@opt@footnotedefsfalse
-% \end{macrocode}
-%
-% \begin{pkgwarning}
-% SELF-NOTE: DO NOT FORGET TO ADD HERE RESET COMMANDS FOR ANY NEW OPTION THAT
-% WE PROVIDE IN THE FUTURE.
-% \end{pkgwarning}
-%
-% \begin{macrocode}
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \subsubsection{Finally, Process and Execute the Package Options}
+% \begin{verbatim}
+%</phfnotepreset-xpkgdoc>
+% \end{verbatim}
+% \iffalse
+%<*package>
+% \fi
%
%
%
-% Process the options:
-%
-% \begin{macrocode}
-\ProcessKeyvalOptions*
-% \end{macrocode}
-%
-%
-% Take action according to the user options.
-%
-% \begin{macrocode}
-\phfnote@do@pkgset{\phfnote@opt@pkgset}
-
-\phfnote@do@notetitle{\phfnote@opt@title}
-
-\phfnote@do@noteabstract{\phfnote@opt@abstract}
-
-\phfnote@do@secfmt{\phfnote@opt@secfmt}
-
-\ifphfnote@opt@pagegeomdefs
- \phfnote@do@pagegeomdefs{\phfnote@opt@pagegeom}
-\fi
-
-\ifphfnote@opt@spacingdefs
- \phfnote@do@spacing
-\fi
-
-\phfnote@do@par{\phfnote@opt@par}
-
-\ifphfnote@opt@hyperrefdefs
- \phfnote@do@pdfhyperrefdefs
-\fi
-
-\ifphfnote@opt@fontdefs
- \phfnote@do@fontdefs
-\fi
-
-\ifphfnote@opt@bibliographydefs
- \phfnote@do@bibliographydefs
-\fi
-
-\ifphfnote@opt@footnotedefs
- \phfnote@do@footnotedefs
-\fi
-% \end{macrocode}
-%
-% Finally, execute the hook we set up for definitions at the end of the package
-% loading:
-% \begin{macrocode}
-\phfnote@hook@atendload
-% \end{macrocode}
%
%\Finale
+%</package>
\endinput
diff --git a/macros/latex/contrib/phfnote/phfnote.ins b/macros/latex/contrib/phfnote/phfnote.ins
index 5c32c654a1..a9a380be5e 100644
--- a/macros/latex/contrib/phfnote/phfnote.ins
+++ b/macros/latex/contrib/phfnote/phfnote.ins
@@ -1,5 +1,5 @@
%%
-%% Copyright (C) 2016 by Philippe Faist <philippe.faist@bluewin.ch>
+%% Copyright (C) 2016 by Philippe Faist, philippe.faist@bluewin.ch
%%
%% This file may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3 of this license
@@ -21,7 +21,7 @@
This is a generated file.
-Copyright (C) 2016 by Philippe Faist <philippe.faist@bluewin.ch>
+Copyright (C) 2016 by Philippe Faist, philippe.faist@bluewin.ch
This file may be distributed and/or modified under the conditions of
the LaTeX Project Public License, either version 1.3 of this license
@@ -36,6 +36,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
\endpreamble
\generate{\file{phfnote.sty}{\from{phfnote.dtx}{package}}}
+\generate{\file{phfnotepreset-xpkgdoc.def}{\from{phfnote.dtx}{phfnotepreset,phfnotepreset-xpkgdoc}}}
\obeyspaces
\Msg{*************************************************************}
@@ -44,6 +45,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
\Msg{* file into a directory searched by TeX: *}
\Msg{* *}
\Msg{* phfnote.sty *}
+\Msg{* phfnotepreset-xpkgdoc.def *}
\Msg{* naturemagdoi.bst *}
\Msg{* *}
\Msg{* To produce the documentation run the .dtx file through *}
diff --git a/macros/latex/contrib/phfnote/phfnote.pdf b/macros/latex/contrib/phfnote/phfnote.pdf
index 1150b2ba4e..c1085d4cf5 100644
--- a/macros/latex/contrib/phfnote/phfnote.pdf
+++ b/macros/latex/contrib/phfnote/phfnote.pdf
Binary files differ
diff --git a/macros/latex/contrib/phfnote/pkg.mk b/macros/latex/contrib/phfnote/pkg.mk
index 3cc121ce5e..328b5fc36d 100644
--- a/macros/latex/contrib/phfnote/pkg.mk
+++ b/macros/latex/contrib/phfnote/pkg.mk
@@ -4,7 +4,9 @@
#
LATEX = latex
-PDFLATEX = TEXINPUTS="$$TEXINPUTS:../phfnote" pdflatex
+PDFLATEXNAME = pdflatex
+
+PDFLATEX = TEXINPUTS="$$TEXINPUTS:../phfnote" $(PDFLATEXNAME)
PDFLATEXOPTS = -interaction=batchmode
PDFLATEXOPTSLAST = -interaction=batchmode --synctex=1
@@ -29,29 +31,38 @@ PKGREADME = README.md
#
DIST_ADDITIONAL_FILES ?=
+#
+# Additional files automatically generated by the .ins file, such as .def files
+# (by default empty)
+#
+ADDITIONAL_GENERATED_FILES ?=
+
+
+# By default, the generated style file is a '.sty' latex package. If it's a
+# '.cls' class file instead, the local Makefile will redefine this to 'cls'.
+PKGSTYEXT ?= sty
PKGDTX = $(PKG).dtx
+PKGSTY = $(PKG).$(PKGSTYEXT)
PKGINS = $(PKG).ins
-PKGSTY = $(PKG).sty
PKGPDF = $(PKG).pdf
PKGTDSZIP = $(PKG).tds.zip
PKGZIP = $(PKG).zip
-
-.PHONY: help sty pdf install install_sty install_doc tdszip dist clean cleanall cleansty cleanaux cleanpdf cleantdszip cleandist
+.PHONY: help sty cls pdf install install_sty install_cls install_doc tdszip dist clean cleanall cleansty cleancls cleanaux cleanpdf cleantdszip cleandist
help:
@echo "Targets for $(PKG):"
- @echo "make sty -- generate LaTeX package file $(PKG).sty"
+ @echo "make $(PKGSTYEXT) -- generate LaTeX package file $(PKG).$(PKGSTYEXT)"
@echo "make pdf -- generate pdf documentation"
- @echo "make install -- install style and documentation files to TEXMF tree"
- @echo "make install PREFIX=[specify texmf directory]"
- @echo "make $(PKG).tds.zip -- create TDS.ZIP to include in CTAN upload"
+ @echo "make install -- install style and documentation files to $(DEFAULT_PREFIX)"
+ @echo "make install PREFIX=[specify texmf directory destination]"
+ @echo "make $(PKG).tds.zip -- create TDS.ZIP package for distribution"
@echo "make dist -- create distribution ZIP, ready for upload to CTAN"
@echo "make clean -- remove LaTeX auxiliary files"
- @echo "make cleansty -- remove generated style file"
+ @echo "make clean$(PKGSTYEXT) -- remove generated style file"
@echo "make cleanpdf -- remove generated pdf documentation"
@echo "make cleanall -- remove all generated files, incl. distribution zip"
@@ -66,11 +77,17 @@ cleanall: cleansty cleanaux cleanpdf cleantdszip cleandist
sty: $(PKGSTY)
+# synonym of `sty` in case of LaTeX classes, we use same commands etc.
+cls: $(PKGSTY)
+
$(PKGSTY): $(PKGINS) $(PKGDTX)
$(LATEX) $<
cleansty:
- @rm -f $(PKGSTY)
+ @rm -f $(PKGSTY) $(ADDITIONAL_GENERATED_FILES)
+
+cleancls: cleansty
+
# ------------------------------------------------
# make pdf
@@ -121,7 +138,9 @@ cleanpdf:
install_sty: $(PKGSTY)
mkdir -p $(DESTDIR)$(PREFIX)/tex/latex/$(PKG)
- cp $(PKGSTY) $(DESTDIR)$(PREFIX)/tex/latex/$(PKG)
+ cp $(PKGSTY) $(ADDITIONAL_GENERATED_FILES) $(DESTDIR)$(PREFIX)/tex/latex/$(PKG)
+
+install_cls: install_sty
install_doc: $(PKGPDF)
mkdir -p $(DESTDIR)$(PREFIX)/doc/latex/$(PKG)
@@ -155,12 +174,14 @@ DISTTMPDIR = $(CURDIR)/_install_dist_zip.make.tmp
dist: $(PKGZIP)
-$(PKGZIP): $(PKGTDSZIP)
+# feedback from CTAN upload manager: prefer not to provide tds.zip in CTAN upload
+$(PKGZIP): #$(PKGTDSZIP)
rm -rf $(DISTTMPDIR)
mkdir -p $(DISTTMPDIR)/$(PKG)
- cp $(PKGTDSZIP) $(DISTTMPDIR)
+# cp $(PKGTDSZIP) $(DISTTMPDIR)
cp $(PKGDTX) $(PKGINS) $(PKGPDF) $(PKGREADME) Makefile pkg.mk $(DIST_ADDITIONAL_FILES) $(DISTTMPDIR)/$(PKG)
- cd $(DISTTMPDIR) && zip -r $(CURDIR)/$(PKGZIP) $(PKGTDSZIP) $(PKG)
+# cd $(DISTTMPDIR) && zip -r $(CURDIR)/$(PKGZIP) $(PKG) $(PKGTDSZIP)
+ cd $(DISTTMPDIR) && zip -r $(CURDIR)/$(PKGZIP) $(PKG)
rm -rf $(DISTTMPDIR)
cleandist:
diff --git a/macros/latex/contrib/phfqit/README.md b/macros/latex/contrib/phfqit/README.md
index e7af9a9cd5..008fa7de17 100644
--- a/macros/latex/contrib/phfqit/README.md
+++ b/macros/latex/contrib/phfqit/README.md
@@ -14,8 +14,9 @@ etc.).
# Documentation
-Run 'make sty' to generate the style file and 'make pdf' to generate the package
-documentation. Run 'make' or 'make help' for more info.
+Run `make sty` to generate the style file, `make pdf` to generate the package
+documentation, and `make install` to install the package in your local texmf
+tree. Run 'make' or 'make help' for more info.
# Author and License
diff --git a/macros/latex/contrib/phfqit/phfqit.dtx b/macros/latex/contrib/phfqit/phfqit.dtx
index 60833cd48e..5ccc6cdade 100644
--- a/macros/latex/contrib/phfqit/phfqit.dtx
+++ b/macros/latex/contrib/phfqit/phfqit.dtx
@@ -22,7 +22,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<package>\ProvidesPackage{phfqit}
%<*package>
- [2017/08/16 v2.0 phfqit package]
+ [2021/10/08 v4.1 phfqit package]
%</package>
%
%<*driver>
@@ -75,9 +75,9 @@
% \maketitle
%
% \begin{abstract}
-% \pkgname{phfqit}---Utilities to typeset stuff in Quantum Information Theory
-% (quite biased towards theory), in particular general mathematical symbols,
-% operators, and shorthands for entropy measures.
+% \pkgname{phfqit}---Utilities to typeset stuff in Quantum Information Theory,
+% in particular general mathematical symbols, operators, and shorthands for
+% entropy measures.
% \end{abstract}
%
% \inlinetoc
@@ -98,6 +98,7 @@
% (\autoref{sec:Lie-groups-algebras})
% \item Bra-ket notation, and delimited expressions such as average, norm,
% \ldots (\autoref{sec:delimited})
+% \item Double bra-ket notation for operators (\autoref{sec:delimited})
% \item Typesetting entropy measures, including the Shannon/von Neumann entropy,
% the smooth entropies, relative entropies, as well as my coherent relative
% entropy
@@ -123,6 +124,19 @@
% \item[newReIm=\metatruefalsearg] Do not override \LaTeX{}'s default
% {\makeatletter $\phfqit@Re$ and $\phfqit@Im$} symbols by $\Re$ and $\Im$.
% See \autoref{sec:description-newReIm}.
+% \item[llanglefrommnsymbolfonts=\metatruefalsearg] In order to define the
+% operator-kets and operator-bra symbols, we need to have double-angle bracket
+% symbol delimiters loaded as |\llangle| and |\rrangle|. Unlike |\langle| and
+% |\rangle|, they are not provided by default by \pkgname{latex},
+% \pkgname{amsmath} or \pkgname{amssymb}. What we do is that we load the
+% |\llangle| and |\rrangle| symbols from the MnSymbol fonts in order to define
+% |\oket| and friends. If you would like to provide your own definitions for
+% |\llangle| and |\rrangle|, or if you have problems loading the MnSymbol
+% fonts and don't need the operator-ket symbols, then you can specify
+% |llanglefrommnsymbolfonts=false| and we won't bother loading the MnSymbol
+% fonts. (Note that if you provide your own definitions for |\llangle| and
+% |\rrangle|, they have to be valid delimiters, such that for example the
+% syntax |\left\llangle| is valid.)
% \end{pkgoptions}
%
% \changed[v2.0-pkg-opt-qitobjdef]{v2.0}{2017/08/16}{Added the
@@ -178,7 +192,7 @@
%
%
%
-% \section{General Symbols (and Math Operators)}
+% \section{General Symbols and Math Operators}
% \label{sec:symbols}
%
% \DescribeMacro{\Hs}
@@ -210,6 +224,14 @@
% symbol, or even to change the notation to |\exp{<ARGUMENT>}| if needed for
% inline math.
%
+% \DescribeMacro{\phfqitExpPowerExpression}
+% To change the appearance of whatever you typed as |\ee^{XYZ}|, you can
+% redefine |\phfqitExpPowerExpression|; for instance, to use an upright
+% ``$\mathrm{e}$'' symbol, you could type:
+% \begin{verbatim}
+% \renewcommand\phfqitExpPowerExpression[1]{\mathrm{e}^{#1}}
+% \end{verbatim}
+%
%
% \subsection{Math/Linear Algebra Operators}
% \label{sec:math-operators}
@@ -267,26 +289,60 @@
% \needspace{7\baselineskip}
% \DescribeMacro{\uu(N)} \DescribeMacro{\UU(N)} \DescribeMacro{\su(N)}
% \DescribeMacro{\SU(N)} \DescribeMacro{\so(N)} \DescribeMacro{\SO(N)}
-% \DescribeMacro{\SN(N)} Format some common Lie groups and algebras.
+% \DescribeMacro{\slalg(N)} \DescribeMacro{\SL(N)}
+% \DescribeMacro{\GL(N)} \DescribeMacro{\SN(N)}
+% Format some common Lie groups and algebras. Note the use of |\slalg| instead
+% of |\sl| because of name conflict with \TeX's font command {\sl producing
+% slanted text}.
%
% |\SN(N)| is the symmetric group of $N$ items, and formats by default as
-% $\SN(N)$. \vspace{4\baselineskip}
-%
+% $\SN(N)$.
+%
+% \DescribeMacro{\phfqitLieGroup} \DescribeMacro{\phfqitLieAlgebra}
+% \DescribeMacro{\phfqitDiscreteGroup}
+% The macros |\phfqitLieGroup|, |\phfqitLieAlgebra|, and |\phfqitDiscreteGroup|
+% format the name for a standard Lie group, Lie algebra or discrete group along
+% with its argument. Redefine these macros with |\renewcommand| to change the
+% formatting font for Lie groups and algebras for instance. For instance, to
+% format standard Lie groups/algebras and the permutation group with simple
+% italic letters, you can use:
+% \begin{verbatim}
+% \renewcommand\phfqitLieAlgebra[2]{\mathit{#1}({#2})}
+% \renewcommand\phfqitLieGroup[2]{\mathit{#1}({#2})}
+% \renewcommand\phfqitDiscreteGroup[2]{\mathit{#1}_{#2}}
+% \end{verbatim}
+%
+% \verbdef\GLNverbatim=\GL(N)=
+% \changed[v2.0]{v2.0}{2018/02/28}{Added the macro \GLNverbatim}
+% \verbdef\SLNverbatim=\slalg(n),\SL(N)=
+% \changed[v3.0]{v3.0}{2020/07/31}{Added the macros \SLNverbatim, as well
+% as \phfverb{\phfqitLieAlgebra}, \phfverb{\phfqitLieGroup}, and
+% \phfverb{\phfqitDiscreteGroup}}
+%
+% \iffalse \vspace{3\baselineskip} <-- space for all the \SU(xx) listings in margin \fi
+%
% \section{Bra-Ket Notation and Delimited Expressions}
-% \label{sec:bra-ket} \label{sec:delimited}
%
-% All commands here work in math mode only. They all accept an optional
-% argument, which is a size modifier. Use the starred form to enclose the
-% delimiters with |\left...\right| and have the size determined automatically.
-% Usage for example is:
+% \subsection{Bras and kets}
+% \label{sec:bra-ket}
+%
+% All commands here work in math mode only. They all accept a size modifier as
+% described in \autoref{topic:size-specification-backtick}. (The size may also
+% be provided as an optional argument; the starred form of the command may also
+% be used to enclose the delimiters with |\left...\right| and have the size
+% determined automatically.) Example usage is:
% \begin{center}
% \begin{tabular}{lc}
-% |\ket{\psi}| & $\ket{\psi}$ \\[1em]
-% |\ket[\big]{\psi}| & $\ket[\big]{\psi}$ \\[1em]
-% |\ket[\Big]{\psi}| & $\ket[\Big]{\psi}$ \\[1em]
-% |\ket[\bigg]{\psi}| & $\ket[\bigg]{\psi}$ \\[1em]
-% |\ket[\Bigg]{\psi}| & $\ket[\Bigg]{\psi}$ \\[1em]
-% |\ket*{\displaystyle\sum_k \psi_k}| & $\ket*{\displaystyle\sum_k \psi_k}$ \\
+% |\ket{\psi}| & $\ket{\psi}$ \\[1em]
+% |\ket`\big{\psi}|~,~~|\ket[\big]{\psi}| & $\ket`\big{\psi}$ \\[1em]
+% |\ket`\Big{\psi}|~,~~|\ket[\Big]{\psi}| & $\ket`\Big{\psi}$ \\[1em]
+% |\ket`\bigg{\psi}|~,~~|\ket[\bigg]{\psi}| & $\ket`\bigg{\psi}$ \\[1em]
+% |\ket`\Bigg{\psi}|~,~~|\ket[\Bigg]{\psi}| & $\ket`\Bigg{\psi}$ \\[1em]
+% \begin{minipage}{7cm}\relax
+% \noindent|\ket`*{\displaystyle\sum_k \psi_k}|,\\
+% \hspace*{2em}|\ket*{\displaystyle\sum_k \psi_k}|
+% \end{minipage}
+% & $\ket*{\displaystyle\sum_k \psi_k}$
% \end{tabular}
% \end{center}
%
@@ -315,17 +371,53 @@
% |\innerprod{\phi}{\psi}| gives $\innerprod{\phi}{\psi}$.
%
%
-% There are also some further delimited expressions defined, for convenience.
+% \DescribeMacro{\oket} \DescribeMacro{\obra} \DescribeMacro{\obraket}
+% \DescribeMacro{\oketbra} \DescribeMacro{\oproj} \DescribeMacro{\omatrixel}
+% \DescribeMacro{\odmatrixel} This package also provides associated
+% double-bra-ket commands as is occasionally used to write ``vectors'' in
+% Hilbert-Schmidt operator space, such as $\oket{A}$, $\obraket{A}{\Ident}$,
+% $\oketbra{\Ident}{E_k}$, etc. The commands are named |\oket|, |\obra|,
+% |\obraket|, |\oketbra|, |\oproj|, |\omatrixel|, and |\odmatrixel|.
+%
+% The commands |\oket|, |\obra|, |\obraket|, etc.\@ offer the same syntax as
+% their corresponding |\ket|, |\bra|, etc.\@ counterparts. For instance, you can
+% type |\obra`\Big{\sum A_i}| to obtain $\obra`\Big{\sum A_i}$.
+%
+% \DescribeMacro{\llangle} \DescribeMacro{\rrangle} The \pkgname{phfqit} package
+% defines the |\llangle| and |\rrangle| delimiters, by taking the relevant
+% symbols from the \pkgname{MnSymbol} fonts. These double-angle bracket symbols
+% are used for the double-bra-ket type constructs (|\oket| and friends).
+%
+% If you'd like to provide your own definition of |\llangle| and |\rrangle|, or
+% if for any reason you would not want us to attempt to load the
+% \pkgname{MnSymbol} fonts at all, then you can set the package option
+% |llanglefrommnsymbolfonts=false|.
+%
+% If you provide your own definition of |\llangle| and |\rrangle|, then make
+% sure that they are proper \TeX\ delimiters, i.e., constructs of the form
+% |\left\llangle ... \right\rrangle| or |\bigl\llangle ... \bigr\rrangle| must
+% work.
+%
+% If your document never uses the double-bra-ket macros (i.e., none of the
+% |\oket|, |\obra|, and friends), then you may safely specifiy
+% |llanglefrommnsymbolfonts=false| to avoid loading the relevant symbols.
+%
+%
+% \subsection{Delimited expressions: norms, absolute value, etc.}
+% \label{sec:delimited}
+%
+% There are also some commonly used delimited expressions defined for
+% convenience.
%
% \DescribeMacro{\abs} The absolute value of an expression. |\abs{A}| gives
% $\abs{A}$.
%
-% \DescribeMacro{\avg} The average of an expression. |\avg[\big]{\sum_k A_k}|
-% gives $\avg[\big]{\sum_k A_k}$.
+% \DescribeMacro{\avg} The average of an expression. |\avg`\big{\sum_k A_k}|
+% gives $\avg`\big{\sum_k A_k}$.
%
% \DescribeMacro{\norm} The norm of an expression. |\norm{A_k}| gives
-% $\norm{A_k}$. (You can add subscripts, e.g.\@ |\norm{A_k}_\infty| is
-% $\norm{A_k}_\infty$.)
+% $\norm{A_k}$. (If you'd like to define customized norms, e.g., to add
+% subscripts, then check out the |\phfqitDefineNorm| command discussed below.)
%
% \DescribeMacro{\intervalc} A closed interval. |\intervalc{x}{y}| gives
% $\intervalc{x}{y}$.
@@ -340,6 +432,26 @@
% and closed on the upper bound. |\intervaloc{x}{y}| gives $\intervaloc{x}{y}$.
%
%
+% \DescribeMacro{\phfqitDefineNorm} The handy command |\phfqitDefineNorm| can be
+% used to define custom norms (e.g. 1-norm, infinity-norm, p/q-norms, etc.).
+% The syntax is |\phfqitDefineNorm|\meta{command name}\meta{before}\meta{after},
+% for example:
+% \begin{verbatim}
+% \phfqitDefineNorm\onenorm{}{_1}
+% \phfqitDefineNorm\opnorm{}{_\infty}
+% \end{verbatim}
+%
+% \DescribeMacro{\phfqitDeclarePairedDelimiterXWithAltSizing}
+% \DescribeMacro{\phfqitDeclarePairedDelimiterXPPWithAltSizing} For defining
+% more advanced custom delimited expressions, you can use the
+% |\phfqitDeclarePairedDelimiterXWithAltSizing| and
+% |\phfqitDeclarePairedDelimiterXPPWithAltSizing| helpers. These macros wrap
+% the \pkgname{mathtools} package's |\DeclarePairedDelimiterX| and
+% |\DeclarePairedDelimiterX| macros, by furthermore enabling the newly defined
+% command to accept the size argument using the backtick syntax described in
+% \autoref{topic:size-specification-backtick}. These helpers are used
+% internally to define the commands for kets, bras, norms, etc.
+%
%
% \section{Entropy Measures and Other ``Qit Objects''}
%
@@ -456,9 +568,9 @@
% \label{sec:entropy-function}
%
% \DescribeMacro{\Hfn} The entropy, written as a mathematical function. It is
-% useful to write, e.g., $\Hfunc(p_1\rho_1 + p_2\rho_2)$ as \relax
-% |\Hfunc(p_1\rho_1 + p_2\rho_2)|. Sizing specifications also work, e.g.\@
-% |\Hfunc`\big(x)| or |\Hfunc`*(x)|.
+% useful to write, e.g., $\Hfn(p_1\rho_1 + p_2\rho_2)$ as \relax
+% |\Hfn(p_1\rho_1 + p_2\rho_2)|. Sizing specifications also work, e.g.\@
+% |\Hfn`\big(x)| or |\Hfn`*(x)|.
%
% Usage is: |\Hfn|\hspace{0pt}\meta{size-spec}\hspace{0pt}|(|\meta{argument}|)|
%
@@ -547,16 +659,21 @@
% \DescribeMacro{\Dr} The Rob-relative entropy. The syntax is the same as for
% |\Dmax|.
%
-% \DescribeMacro{\DHyp} The hypothesis testing relative entropy. The syntax is
-% the same as for |\Dmax|, except that by default the optional argument is
-% |\eta|. That is, |\DHyp{\rho}{\sigma}| gives $\DHyp{\rho}{\sigma}$. (This is
-% because this quantity is directly defined with a $\eta$ (or $\epsilon$) built
-% in, and it is not a zero-error quantity which is smoothed with the purified
-% distance.)
+% \DescribeMacro{\DHyp} \DescribeMacro{\Dhyp} The hypothesis testing relative
+% entropy (two possible variants). The syntax is the same as for |\Dmax|,
+% except that by default the optional argument is |\eta|. The symbols
+% `$\mathrm{H}$' and `$\mathrm{h}$' are used as subscripts, respectively, for
+% |\DHyp| and |\Dhyp|. Examples: The code |\DHyp{\rho}{\sigma}| gives
+% $\DHyp{\rho}{\sigma}$ and |\Dhyp[\eta']{\rho}{\sigma}| gives
+% $\Dhyp[\eta']{\rho}{\sigma}$. (This is because this quantity is directly
+% defined with a $\eta$ (or $\epsilon$) built in, and it is not a zero-error
+% quantity which is smoothed with the purified distance.)
+%
+% The commands |\DD|, |\Dmax|, |\Dminz|, |\Dminf|, |\Dr|, |\DHyp| and |\Dhyp|
+% are defined only if the package option \pkgoptionfmt{qitobjdef=stdset} is set
+% (which is the default).
%
-% The commands |\DD|, |\Dmax|, |\Dminz|, |\Dminf|, |\Dr| and |\DHyp| are defined
-% only if the package option \pkgoptionfmt{qitobjdef=stdset} is set (which is
-% the default).
+% \changedreftext{v3.1-added-Dhyp-qitobjdef-stdset}
%
% \DescribeMacro{\DSym} The symbol to use to denote a relative entropy. You
% may redefine this command to change the symbol. (This works like |\HSym|
@@ -847,6 +964,7 @@
\RequirePackage{calc}
\RequirePackage{etoolbox}
\RequirePackage{amsmath}
+\RequirePackage{amssymb}
\RequirePackage{dsfont}
\RequirePackage{mathrsfs}
\RequirePackage{mathtools}
@@ -929,8 +1047,24 @@
% \begingroup\catcode`\^=12\relax
% \begin{macro}{\ee^...}
% Macro for the exponential.
+%
+% Because the character |^| might have different catcodes (e.g. with the
+% \pkgname{breqn} package), we use a hack with |\detokenize|. Basically this
+% boils down to |\def\ee^#1{\phfqitExpPowerExpression{#1}}| and
+% |\def\phfqitExpPowerExpression#1{e^{#1}}|, up to making sure that all the
+% |^| symbols are compared without catcodes.
+%
+% \changed[v4.0-fixed-ee-for-catcodes]{v4.0}{2021/10/07}{Fixed the definition
+% of \phfverb{\ee} in order to support the case where the catcode of
+% \phfverb{^} changes}
% \begin{macrocode}
-\def\ee^#1{e^{#1}} % we could imagine that in inlines, we replace this by exp()...
+\edef\phfqit@def@hat{\detokenize{^}}
+\expandafter\def\expandafter\phfqit@ee@gobblehat\phfqit@def@hat{%
+ \phfqitExpPowerExpression}
+\def\phfqitExpPowerExpression#1{e^{#1}}
+\def\ee#1{\expandafter\phfqit@ee@gobblehat\detokenize{#1}}
+\robustify\phfqitExpPowerExpression
+\robustify\ee
% \end{macrocode}
% \end{macro}
% \endgroup
@@ -1084,16 +1218,22 @@
% \begin{macro}{\SU(N)}
% \begin{macro}{\so(N)}
% \begin{macro}{\SO(N)}
+% \begin{macro}{\slalg(N)}
+% \begin{macro}{\SL(N)}
+% \begin{macro}{\GL(N)}
% \begin{macro}{\SN(N)}
% Some Lie Groups \& Algebras. See \autoref{sec:Lie-groups-algebras}
% \begin{macrocode}
-\def\uu(#1){\phfqit@fmtLieAlgebra{u}(#1)}
-\def\UU(#1){\phfqit@fmtGroup{U}(#1)}
-\def\su(#1){\phfqit@fmtLieAlgebra{su}(#1)}
-\def\SU(#1){\phfqit@fmtGroup{SU}(#1)}
-\def\so(#1){\phfqit@fmtLieAlgebra{so}(#1)}
-\def\SO(#1){\phfqit@fmtGroup{SO}(#1)}
-\def\SN(#1){\mathrm{S}_{#1}}
+\def\uu(#1){\phfqitLieAlgebra{u}{#1}}
+\def\UU(#1){\phfqitLieGroup{U}{#1}}
+\def\su(#1){\phfqitLieAlgebra{su}{#1}}
+\def\SU(#1){\phfqitLieGroup{SU}{#1}}
+\def\so(#1){\phfqitLieAlgebra{so}{#1}}
+\def\SO(#1){\phfqitLieGroup{SO}{#1}}
+\def\slalg(#1){\phfqitLieAlgebra{sl}{#1}} % \sl is "slanted font" in TeX
+\def\SL(#1){\phfqitLieGroup{SL}{#1}}
+\def\GL(#1){\phfqitLieGroup{GL}{#1}}
+\def\SN(#1){\phfqitDiscreteGroup{S}{#1}}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1102,26 +1242,131 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\phfqit@fmtLieAlgebra}
-% \begin{macro}{\phfqit@fmtLieGroup}
-% Override these to change the appearance of the group names or algebra names. The
-% argument is the name of the group or algebra (e.g. |su| or |SU|).
+% \begin{macro}{\phfqitLieAlgebra}
+% \begin{macro}{\phfqitLieGroup}
+% \begin{macro}{\phfqitDiscreteGroup}
+% Override these to change the appearance of the group names or algebra names.
+% The first argument is the name of the group or algebra (e.g. |su| or |SU|),
+% and the second argument is the parenthesized argument e.g. ``N''.
% \begin{macrocode}
-\def\phfqit@fmtLieAlgebra#1{\mathrm{#1}}
-\def\phfqit@fmtGroup#1{\mathrm{#1}}
+\newcommand\phfqitLieAlgebra[2]{\mathfrak{#1}({#2})}
+\newcommand\phfqitLieGroup[2]{\mathrm{#1}({#2})}
+\newcommand\phfqitDiscreteGroup[2]{\mathrm{#1}_{#2}}
% \end{macrocode}
% \end{macro}
% \end{macro}
+% \end{macro}
+%
+%
%
%
%
+% \subsection{Helper for parsing a size argument}
+%
+% \begin{macro}{\phfqit@parsesizearg}
+% Utility to parse size argument with the backtick specification
+% (\autoref{topic:size-specification-backtick}).
+%
+% Parses a size argument, if any, and stores it into |\phfqit@val@sizearg|.
+% The value stored can directly be expanded as an optional argument to a
+% |\DeclarePairedDelimiter|-compatible command (see \pkgname{mathtools} package).
+%
+% |#1| should be a command token. It is the next action to take, after
+% argument has been parsed.
+% \begin{macrocode}
+\def\phfqit@parsesizearg#1{%
+ \begingroup%
+ \mathcode`\`="0060\relax%
+ \gdef\phfqit@val@sizearg{}%
+ \def\phfqit@tmp@contwithsize{\phfqit@parsesizearg@withsize{#1}}%
+ \@ifnextchar`{\phfqit@tmp@contwithsize}{\endgroup#1}%
+}
+\def\phfqit@parsesizearg@withsize#1`#2{%
+ \def\phfqit@tmp@x{#2}%
+ \def\phfqit@tmp@star{*}%
+ \ifx\phfqit@tmp@x\phfqit@tmp@star%
+ \gdef\phfqit@val@sizearg{*}%
+ \def\phfqit@tmp@cont{\endgroup#1}%
+ \expandafter\phfqit@tmp@cont%
+ \else%
+ \gdef\phfqit@val@sizearg{[#2]}%
+ \def\phfqit@tmp@cont{\endgroup#1}%
+ \expandafter\phfqit@tmp@cont%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\phfqitDeclarePairedDelimiterXWithAltSizing}
+% \begin{macro}{\phfqitDeclarePairedDelimiterXPPWithAltSizing}
+% Macros that behave exactly like \pkgname{mathtools}'
+% |\DeclarePairedDelimiterX| and |\DeclarePairedDelimiterXPP|, except that
+% their size argument can also be specified by a backtick as for entropy
+% measures or other objects in this package (e.g., to define |\abs| such that
+% |$\abs`\Big{x - y}$| gives $\abs`\Big{x - y}$).
+% \changed[v4.0-new-phfqitDeclarePairedDelimiterxxx]{v4.0}{2021/10/07}{Added
+% \phfverb{\phfqitDeclarePairedDelimiterXWithAltSizing} and
+% \phfverb{\phfqitDeclarePairedDelimiterXPPWithAltSizing}}
+% \begin{macrocode}
+\def\phfqitDeclarePairedDelimiterXWithAltSizing{%
+ \phfqitDeclareMathtoolsPairedDelimiterCmdWithAltSizing\DeclarePairedDelimiterX
+}
+\def\phfqitDeclarePairedDelimiterXPPWithAltSizing{%
+ \phfqitDeclareMathtoolsPairedDelimiterCmdWithAltSizing\DeclarePairedDelimiterXPP
+}
+\def\phfqitDeclareMathtoolsPairedDelimiterCmdWithAltSizing#1#2{%
+ \begingroup
+ \escapechar=-1\relax
+ \xdef\phfqit@tmp@thecmd{%
+ \expandafter\noexpand\csname phfqit@paireddelim@def@\string#2\endcsname}%
+ \endgroup
+ \edef\x{%
+ \noexpand\phfqit@paireddelim@parsesizearg{\expandonce\phfqit@tmp@thecmd}%
+ }%
+ \expandafter\DeclareRobustCommand\expandafter#2\expandafter{\x}%
+ \expandafter#1\phfqit@tmp@thecmd
+}
+\def\phfqit@paireddelim@parsesizearg#1{%
+ \phfqit@parsesizearg{\expandafter#1\phfqit@val@sizearg}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
%
%
% \subsection{Bra-Ket Notation}
%
-%
-% \needspace{8\baselineskip}
+%
+% \begin{macro}{\phfqitKetsBarSpace}
+% \begin{macro}{\phfqitKetsRLAngleSpace}
+% These macros can be redefined to fine-tune the space that is inserted in
+% some of the ket/bra constructs.
+%
+% |\phfqitKetsBarSpace| is the space around the vertical bars, e.g., in a
+% bra-ket, or in matrix elements. (Previously, this space was hard-coded to
+% |\hspace*{0.2ex}|. Now, the spacing can be specified in this macro. We
+% furthermore use ``math units'' (|mu|), which are more suitable for
+% specifying space in math mode; recall that $1\,\mathrm{mu}$ is
+% $1/18\,\mathrm{em}$ in the math font.)
+% \begin{macrocode}
+\def\phfqitKetsBarSpace{\mkern 1.5mu\relax}
+% \end{macrocode}
+% The macro |\phfqitKetsRLAngleSpace| specifies the space between the right
+% angle bracket and the left angle bracket in ket-bra type constructs
+% ($\ketbra\phi\psi$). By default, it expands to negative space to bring the
+% angle brackets closer together. (Previously, this space was hard-coded to
+% |\hspace*{-0.25ex}|.)
+% \begin{macrocode}
+\def\phfqitKetsRLAngleSpace{\mkern -1.8mu\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \needspace{7\baselineskip}
% \begin{macro}{\ket}
% \begin{macro}{\bra}
% \begin{macro}{\braket}
@@ -1129,36 +1374,105 @@
% \begin{macro}{\proj}
% \begin{macro}{\matrixel}
% \begin{macro}{\dmatrixel}
-% \begin{macro}{\innerprod}
% Bras, kets, norms, some delimiter stuff. User documentation in
% \autoref{sec:bra-ket}.
% \begin{macrocode}
-\DeclarePairedDelimiterX\ket[1]{\lvert}{\rangle}{{#1}}
-\DeclarePairedDelimiterX\bra[1]{\langle}{\rvert}{{#1}}
-\DeclarePairedDelimiterX\braket[2]{\langle}{\rangle}{%
- {#1}\hspace*{0.2ex}\delimsize\vert\hspace*{0.2ex}{#2}%
+\phfqitDeclarePairedDelimiterXWithAltSizing\ket[1]{\lvert}{\rangle}{{#1}}
+\phfqitDeclarePairedDelimiterXWithAltSizing\bra[1]{\langle}{\rvert}{{#1}}
+\phfqitDeclarePairedDelimiterXWithAltSizing\braket[2]{\langle}{\rangle}{%
+ {#1}\phfqitKetsBarSpace\delimsize\vert\phfqitKetsBarSpace{#2}%
}
-\DeclarePairedDelimiterX\ketbra[2]{\lvert}{\rvert}{%
- {#1}\delimsize\rangle\hspace*{-0.25ex}\delimsize\langle{#2}%
+\phfqitDeclarePairedDelimiterXWithAltSizing\ketbra[2]{\lvert}{\rvert}{%
+ {#1}\delimsize\rangle\phfqitKetsRLAngleSpace\delimsize\langle{#2}%
}
-\DeclarePairedDelimiterX\proj[1]{\lvert}{\rvert}{%
- {#1}\delimsize\rangle\hspace*{-0.25ex}\delimsize\langle{#1}%
+\phfqitDeclarePairedDelimiterXWithAltSizing\proj[1]{\lvert}{\rvert}{%
+ {#1}\delimsize\rangle\phfqitKetsRLAngleSpace\delimsize\langle{#1}%
}
-\DeclarePairedDelimiterX\matrixel[3]{\langle}{\rangle}{%
- {#1}\hspace*{0.2ex}\delimsize\vert\hspace*{0.2ex}{#2}%
- \hspace*{0.2ex}\delimsize\vert\hspace*{0.2ex}{#3}%
+\phfqitDeclarePairedDelimiterXWithAltSizing\matrixel[3]{\langle}{\rangle}{%
+ {#1}\phfqitKetsBarSpace\delimsize\vert\phfqitKetsBarSpace{#2}%
+ \phfqitKetsBarSpace\delimsize\vert\phfqitKetsBarSpace{#3}%
}
-\DeclarePairedDelimiterX\dmatrixel[2]{\langle}{\rangle}{%
- {#1}\hspace*{0.2ex}\delimsize\vert\hspace*{0.2ex}{#2}%
- \hspace*{0.2ex}\delimsize\vert\hspace*{0.2ex}{#1}%
+\phfqitDeclarePairedDelimiterXWithAltSizing\dmatrixel[2]{\langle}{\rangle}{%
+ {#1}\phfqitKetsBarSpace\delimsize\vert\phfqitKetsBarSpace{#2}%
+ \phfqitKetsBarSpace\delimsize\vert\phfqitKetsBarSpace{#1}%
}
-\DeclarePairedDelimiterX\innerprod[2]{\langle}{\rangle}{%
- {#1},\hspace*{0.2ex}{#2}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\phfqitKetsBeforeCommaSpace}
+% \begin{macro}{\phfqitKetsAfterCommaSpace}
+% \begin{macro}{\innerprod}
+% We also provide the |\innerprod| macro at this point. Customize the inner
+% spacing before and after the comma with |\phfqitKetsBeforeCommaSpace| and
+% |\phfqitKetsAfterCommaSpace|.
+% \begin{macrocode}
+\def\phfqitKetsBeforeCommaSpace{}
+\def\phfqitKetsAfterCommaSpace{\mkern 1.5mu\relax}
+\phfqitDeclarePairedDelimiterXWithAltSizing\innerprod[2]{\langle}{\rangle}{%
+ {#1}\phfqitKetsBeforeCommaSpace,\phfqitKetsAfterCommaSpace{#2}%
}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
+%
+% \begin{macro}{\phfqitOKetsBarSpace}
+% \begin{macro}{\phfqitOKetsRLAngleSpace}
+% These macros are the same as |\phfqitKetsBarSpace| and
+% |\phfqitKetsRLAngleSpace|, except that they specify the corresponding
+% spacing for the |\oket| family of bra/ket-type constructs.
+% \begin{macrocode}
+\def\phfqitOKetsBarSpace{\phfqitKetsBarSpace}
+\def\phfqitOKetsRLAngleSpace{\phfqitKetsRLAngleSpace}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \needspace{8\baselineskip}
+% \begin{macro}{\oket}
+% \begin{macro}{\obra}
+% \begin{macro}{\obraket}
+% \begin{macro}{\oketbra}
+% \begin{macro}{\oproj}
+% \begin{macro}{\omatrixel}
+% \begin{macro}{\odmatrixel}
+% Again Bras, kets, but for operator space this time. User documentation in
+% \autoref{sec:bra-ket}. These definitions depend on |\llangle| and
+% |\rrangle| being available and expanding to valid delimiter symbols. See
+% also the |llanglefrommnsymbolfonts| option.
+%
+% \changed[v4.1-okets-obras]{v4.1}{2021/10/08}{Added support for
+% \phfverb{\oket} and friends}
+% \begin{macrocode}
+\phfqitDeclarePairedDelimiterXWithAltSizing\oket[1]{\lvert}{\rrangle}{{#1}}
+\phfqitDeclarePairedDelimiterXWithAltSizing\obra[1]{\llangle}{\rvert}{{#1}}
+\phfqitDeclarePairedDelimiterXWithAltSizing\obraket[2]{\llangle}{\rrangle}{%
+ {#1}\phfqitOKetsBarSpace\delimsize\vert\phfqitOKetsBarSpace{#2}%
+}
+\phfqitDeclarePairedDelimiterXWithAltSizing\oketbra[2]{\lvert}{\rvert}{%
+ {#1}\delimsize\rrangle\phfqitOKetsRLAngleSpace\delimsize\llangle{#2}%
+}
+\phfqitDeclarePairedDelimiterXWithAltSizing\oproj[1]{\lvert}{\rvert}{%
+ {#1}\delimsize\rrangle\phfqitOKetsRLAngleSpace\delimsize\llangle{#1}%
+}
+\phfqitDeclarePairedDelimiterXWithAltSizing\omatrixel[3]{\llangle}{\rrangle}{%
+ {#1}\phfqitOKetsBarSpace\delimsize\vert\phfqitOKetsBarSpace{#2}%
+ \phfqitOKetsBarSpace\delimsize\vert\phfqitOKetsBarSpace{#3}%
+}
+\phfqitDeclarePairedDelimiterXWithAltSizing\odmatrixel[2]{\llangle}{\rrangle}{%
+ {#1}\phfqitOKetsBarSpace\delimsize\vert\phfqitOKetsBarSpace{#2}%
+ \phfqitOKetsBarSpace\delimsize\vert\phfqitOKetsBarSpace{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
@@ -1174,14 +1488,30 @@
% \begin{macro}{\norm}
% Other delimited expressions.
% \begin{macrocode}
-\DeclarePairedDelimiterX\abs[1]{\lvert}{\rvert}{{#1}}
-\DeclarePairedDelimiterX\avg[1]{\langle}{\rangle}{{#1}}
-\DeclarePairedDelimiterX\norm[1]{\lVert}{\rVert}{{#1}}
+\phfqitDeclarePairedDelimiterXWithAltSizing\abs[1]{\lvert}{\rvert}{{#1}}
+\phfqitDeclarePairedDelimiterXWithAltSizing\avg[1]{\langle}{\rangle}{{#1}}
+\phfqitDeclarePairedDelimiterXWithAltSizing\norm[1]{\lVert}{\rVert}{{#1}}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\phfqitDefineNorm}
+% Use |\phfqitDefineNorm\opnorm{}{_\infty}| to define specific norms, with the
+% syntax |\phfqitDefineNorm|\meta{new command name}\meta{tokens
+% before}\meta{tokens after}. If you need arguments in the before/after
+% tokens, then your norm starts to be more complicated than what
+% |\phfqitDefineNorm| can handle, perhaps it's best you use
+% |\phfqitDeclarePairedDelimiterXPPWithAltSizing| directly.
+%
+% \changed[v4.0-new-phfqitDefineNorm]{v4.0}{2021/10/07}{Added
+% \phfverb{\phfqitDefineNorm}}
+% \begin{macrocode}
+\def\phfqitDefineNorm#1#2#3{%
+ \phfqitDeclarePairedDelimiterXPPWithAltSizing#1[1]{#2}{\lVert}{\rVert}{#3}{{##1}}%
+}
+% \end{macrocode}
+% \end{macro}
%
% \begin{macro}{\phfqit@insideinterval}
% Format the contents of an interval. Utility for defining |\intervalc| and
@@ -1198,10 +1528,14 @@
% \begin{macro}{\intervaloc}
% Open/Closed/Semi-Open Intervals
% \begin{macrocode}
-\DeclarePairedDelimiterX\intervalc[2]{[}{]}{\phfqit@insideinterval{#1}{#2}}
-\DeclarePairedDelimiterX\intervalo[2]{]}{[}{\phfqit@insideinterval{#1}{#2}}
-\DeclarePairedDelimiterX\intervalco[2]{[}{[}{\phfqit@insideinterval{#1}{#2}}
-\DeclarePairedDelimiterX\intervaloc[2]{]}{]}{\phfqit@insideinterval{#1}{#2}}
+\phfqitDeclarePairedDelimiterXWithAltSizing\intervalc[2]{[}{]}{%
+ \phfqit@insideinterval{#1}{#2}}
+\phfqitDeclarePairedDelimiterXWithAltSizing\intervalo[2]{]}{[}{%
+ \phfqit@insideinterval{#1}{#2}}
+\phfqitDeclarePairedDelimiterXWithAltSizing\intervalco[2]{[}{[}{%
+ \phfqit@insideinterval{#1}{#2}}
+\phfqitDeclarePairedDelimiterXWithAltSizing\intervaloc[2]{]}{]}{%
+ \phfqit@insideinterval{#1}{#2}}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1218,43 +1552,9 @@
%
% \subsubsection{Some Internal Utilities}
%
-% \begin{macro}{\phfqit@parsesizearg}
-% Internal utility to parse size argument with the backtick specification
-% (\autoref{topic:size-specification-backtick}).
-%
-% Parses a size argument, if any, and stores it into |\phfqit@val@sizearg|.
-% The value stored can directly be expanded as an optional argument to a
-% |\DeclarePairedDelimiter|-compatible command (see \pkgname{mathtools} package).
-%
-% |#1| should be a command token. It is the next action to take, after
-% argument has been parsed.
-% \begin{macrocode}
-\def\phfqit@parsesizearg#1{%
- \begingroup%
- \mathcode`\`="0060\relax%
- \gdef\phfqit@val@sizearg{}%
- \def\phfqit@tmp@contwithsize{\phfqit@parsesizearg@withsize{#1}}%
- \@ifnextchar`{\phfqit@tmp@contwithsize}{\endgroup#1}%
-}
-\def\phfqit@parsesizearg@withsize#1`#2{%
- \def\phfqit@tmp@x{#2}%
- \def\phfqit@tmp@star{*}%
- \ifx\phfqit@tmp@x\phfqit@tmp@star%
- \gdef\phfqit@val@sizearg{*}%
- \def\phfqit@tmp@cont{\endgroup#1}%
- \expandafter\phfqit@tmp@cont%
- \else%
- \gdef\phfqit@val@sizearg{[#2]}%
- \def\phfqit@tmp@cont{\endgroup#1}%
- \expandafter\phfqit@tmp@cont%
- \fi%
-}
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}{\phfqitParens}
% Simple parenthesis-delimited expression, with
-% |\DeclarePairedDelimiter|-compatible syntax. For example,
+% |\DeclarePairedDelimiterX|-compatible syntax. For example,
% \par |\phfqitParens|\marg{content} \quad$\to$\quad
% \fbox{\phfverb( \meta{content} \phfverb)}
% \par |\phfqitParens*|\marg{content} \quad$\to$\quad
@@ -1269,7 +1569,7 @@
%
% \begin{macro}{\phfqitSquareBrackets}
% Simple bracket-delimited expression, with
-% |\DeclarePairedDelimiter|-compatible syntax. For example,
+% |\DeclarePairedDelimiterX|-compatible syntax. For example,
% \par |\phfqitSquareBrackets|\marg{content} \quad$\to$\quad
% \fbox{\phfverb[ \meta{content} \phfverb]}
% \par |\phfqitSquareBrackets*|\marg{content} \quad$\to$\quad
@@ -1284,7 +1584,7 @@
%
% \begin{macro}{\phfqitCurlyBrackets}
% Simple bracket-delimited expression, with
-% |\DeclarePairedDelimiter|-compatible syntax. For example,
+% |\DeclarePairedDelimiterX|-compatible syntax. For example,
% \par |\phfqitSquareBrackets|\marg{content} \quad$\to$\quad
% \fbox{\phfverb\{ \meta{content} \phfverb\}}
% \par |\phfqitSquareBrackets*|\marg{content} \quad$\to$\quad
@@ -1940,10 +2240,19 @@
% \end{macrocode}
% \ldots{} add conditional system, if specified:
% \begin{macrocode}
- \notblank{#3#4}{%
+ \notblank{#3}{%
\DCohbase@addtoks\mathclose{}\,\delimsize\Vert\,\mathopen{}%
- #3\mathclose{},\mathopen{}#4\@DCohbase@END@ADD@TOKS%
- }{}%
+ #3\@DCohbase@END@ADD@TOKS%
+ \notblank{#4}{%
+ \DCohbase@addtoks\mathclose{},\mathopen{}%
+ #4\@DCohbase@END@ADD@TOKS%
+ }{}%
+ }{%
+ \notblank{#4}{%
+ \PackageWarning{phfqit}{Value `#4' ignored because previous parameter
+ was blank}%
+ }{}%
+ }
% \end{macrocode}
% The tokens are ready now. Prepare the argument to the command
% |\DCohbaseRenderContentsInnerParens| (by default just |\phfqitParens|), and go:
@@ -2041,6 +2350,12 @@
\DeclareStringOption[stdset]{qitobjdef}
% \end{macrocode}
%
+% Whether we should load the |\llangle| and |\rrangle| delimiters from the
+% MnSymbol fonts.
+% \begin{macrocode}
+\DeclareBoolOption[true]{llanglefrommnsymbolfonts}
+% \end{macrocode}
+%
% Whether to override \LaTeX{}'s default {\makeatletter $\phfqit@Re$ and
% $\phfqit@Im$} symbols by our more readable $\Re$ and $\Im$.
% \begin{macrocode}
@@ -2069,6 +2384,44 @@
% \end{macro}
% \end{macro}
%
+% \subsubsection{Load \phfverb{\llangle} and \phfverb{\rrangle} from the
+% \emph{MnSymbol} fonts}
+%
+% We need to import |\llangle| and |\rrangle| from the |MnSymbol|
+% fonts.\footnote{see e.g. \url{https://tex.stackexchange.com/a/79701/32188}}
+%
+% \begin{macrocode}
+\ifphfqit@opt@llanglefrommnsymbolfonts
+ \DeclareFontFamily{OMX}{MnSymbolE}{}
+ \DeclareSymbolFont{phfqit@MnLargeSymbols}{OMX}{MnSymbolE}{m}{n}
+ \SetSymbolFont{phfqit@MnLargeSymbols}{bold}{OMX}{MnSymbolE}{b}{n}
+ \DeclareFontShape{OMX}{MnSymbolE}{m}{n}{
+ <-6> MnSymbolE5
+ <6-7> MnSymbolE6
+ <7-8> MnSymbolE7
+ <8-9> MnSymbolE8
+ <9-10> MnSymbolE9
+ <10-12> MnSymbolE10
+ <12-> MnSymbolE12
+ }{}
+ \DeclareFontShape{OMX}{MnSymbolE}{b}{n}{
+ <-6> MnSymbolE-Bold5
+ <6-7> MnSymbolE-Bold6
+ <7-8> MnSymbolE-Bold7
+ <8-9> MnSymbolE-Bold8
+ <9-10> MnSymbolE-Bold9
+ <10-12> MnSymbolE-Bold10
+ <12-> MnSymbolE-Bold12
+ }{}
+ \let\llangle\@undefined
+ \let\rrangle\@undefined
+ \DeclareMathDelimiter{\llangle}{\mathopen}%
+ {phfqit@MnLargeSymbols}{'164}{phfqit@MnLargeSymbols}{'164}
+ \DeclareMathDelimiter{\rrangle}{\mathclose}%
+ {phfqit@MnLargeSymbols}{'171}{phfqit@MnLargeSymbols}{'171}
+\fi
+% \end{macrocode}
+%
% \subsubsection{Standard entropy measures}
%
% Load the requested set of qit objects.
@@ -2150,6 +2503,15 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\Dhyp}
+% Hypothesis testing relative entropy (alternative definition).
+% \changed[v3.1-added-Dhyp-qitobjdef-stdset]{v3.1}{2021/07/27}{Added the
+% \phfverb{\Dhyp} variant of the hypothesis testing relative entropy}
+% \begin{macrocode}
+\newcommand\Dhyp[1][\eta]{\Dbase{\DSym}_{\mathrm{h}}^{#1}}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\DCoh}
% Coherent relative entropy (old style).
% \begin{macrocode}
diff --git a/macros/latex/contrib/phfqit/phfqit.pdf b/macros/latex/contrib/phfqit/phfqit.pdf
index b95d9287cc..5f60e45ce4 100644
--- a/macros/latex/contrib/phfqit/phfqit.pdf
+++ b/macros/latex/contrib/phfqit/phfqit.pdf
Binary files differ
diff --git a/macros/latex/contrib/phfqit/pkg.mk b/macros/latex/contrib/phfqit/pkg.mk
index aca9223514..328b5fc36d 100644
--- a/macros/latex/contrib/phfqit/pkg.mk
+++ b/macros/latex/contrib/phfqit/pkg.mk
@@ -4,7 +4,9 @@
#
LATEX = latex
-PDFLATEX = TEXINPUTS="$$TEXINPUTS:../phfnote" pdflatex
+PDFLATEXNAME = pdflatex
+
+PDFLATEX = TEXINPUTS="$$TEXINPUTS:../phfnote" $(PDFLATEXNAME)
PDFLATEXOPTS = -interaction=batchmode
PDFLATEXOPTSLAST = -interaction=batchmode --synctex=1
@@ -29,29 +31,38 @@ PKGREADME = README.md
#
DIST_ADDITIONAL_FILES ?=
+#
+# Additional files automatically generated by the .ins file, such as .def files
+# (by default empty)
+#
+ADDITIONAL_GENERATED_FILES ?=
+
+
+# By default, the generated style file is a '.sty' latex package. If it's a
+# '.cls' class file instead, the local Makefile will redefine this to 'cls'.
+PKGSTYEXT ?= sty
PKGDTX = $(PKG).dtx
+PKGSTY = $(PKG).$(PKGSTYEXT)
PKGINS = $(PKG).ins
-PKGSTY = $(PKG).sty
PKGPDF = $(PKG).pdf
PKGTDSZIP = $(PKG).tds.zip
PKGZIP = $(PKG).zip
-
-.PHONY: help sty pdf install install_sty install_doc tdszip dist clean cleanall cleansty cleanaux cleanpdf cleantdszip cleandist
+.PHONY: help sty cls pdf install install_sty install_cls install_doc tdszip dist clean cleanall cleansty cleancls cleanaux cleanpdf cleantdszip cleandist
help:
@echo "Targets for $(PKG):"
- @echo "make sty -- generate LaTeX package file $(PKG).sty"
+ @echo "make $(PKGSTYEXT) -- generate LaTeX package file $(PKG).$(PKGSTYEXT)"
@echo "make pdf -- generate pdf documentation"
- @echo "make install -- install style and documentation files to TEXMF tree"
- @echo "make install PREFIX=[specify texmf directory]"
- @echo "make $(PKG).tds.zip -- create TDS.ZIP to include in CTAN upload"
+ @echo "make install -- install style and documentation files to $(DEFAULT_PREFIX)"
+ @echo "make install PREFIX=[specify texmf directory destination]"
+ @echo "make $(PKG).tds.zip -- create TDS.ZIP package for distribution"
@echo "make dist -- create distribution ZIP, ready for upload to CTAN"
@echo "make clean -- remove LaTeX auxiliary files"
- @echo "make cleansty -- remove generated style file"
+ @echo "make clean$(PKGSTYEXT) -- remove generated style file"
@echo "make cleanpdf -- remove generated pdf documentation"
@echo "make cleanall -- remove all generated files, incl. distribution zip"
@@ -66,11 +77,17 @@ cleanall: cleansty cleanaux cleanpdf cleantdszip cleandist
sty: $(PKGSTY)
+# synonym of `sty` in case of LaTeX classes, we use same commands etc.
+cls: $(PKGSTY)
+
$(PKGSTY): $(PKGINS) $(PKGDTX)
$(LATEX) $<
cleansty:
- @rm -f $(PKGSTY)
+ @rm -f $(PKGSTY) $(ADDITIONAL_GENERATED_FILES)
+
+cleancls: cleansty
+
# ------------------------------------------------
# make pdf
@@ -121,7 +138,9 @@ cleanpdf:
install_sty: $(PKGSTY)
mkdir -p $(DESTDIR)$(PREFIX)/tex/latex/$(PKG)
- cp $(PKGSTY) $(DESTDIR)$(PREFIX)/tex/latex/$(PKG)
+ cp $(PKGSTY) $(ADDITIONAL_GENERATED_FILES) $(DESTDIR)$(PREFIX)/tex/latex/$(PKG)
+
+install_cls: install_sty
install_doc: $(PKGPDF)
mkdir -p $(DESTDIR)$(PREFIX)/doc/latex/$(PKG)
@@ -161,7 +180,8 @@ $(PKGZIP): #$(PKGTDSZIP)
mkdir -p $(DISTTMPDIR)/$(PKG)
# cp $(PKGTDSZIP) $(DISTTMPDIR)
cp $(PKGDTX) $(PKGINS) $(PKGPDF) $(PKGREADME) Makefile pkg.mk $(DIST_ADDITIONAL_FILES) $(DISTTMPDIR)/$(PKG)
- cd $(DISTTMPDIR) && zip -r $(CURDIR)/$(PKGZIP) $(PKG) #$(PKGTDSZIP)
+# cd $(DISTTMPDIR) && zip -r $(CURDIR)/$(PKGZIP) $(PKG) $(PKGTDSZIP)
+ cd $(DISTTMPDIR) && zip -r $(CURDIR)/$(PKGZIP) $(PKG)
rm -rf $(DISTTMPDIR)
cleandist:
diff --git a/macros/latex/contrib/phfthm/README.md b/macros/latex/contrib/phfthm/README.md
index 8f0aece3fe..f97a2e62d6 100644
--- a/macros/latex/contrib/phfthm/README.md
+++ b/macros/latex/contrib/phfthm/README.md
@@ -11,5 +11,14 @@ and "Proof of Theorem 4: ..."
# Documentation
-Run 'make sty' to generate the style file and 'make pdf' to generate the package
-documentation. Run 'make' or 'make help' for more info.
+Run `make sty` to generate the style file, `make pdf` to generate the package
+documentation, and `make install` to install the package in your local texmf
+tree. Run 'make' or 'make help' for more info.
+
+
+# Author and License
+
+(C) 2016 Philippe Faist, philippe.faist@bluewin.ch
+
+License: [LaTeX project public license](http://www.ctan.org/license/lppl1.3),
+version 1.3 or above
diff --git a/macros/latex/contrib/phfthm/phfthm.dtx b/macros/latex/contrib/phfthm/phfthm.dtx
index 6e9656689b..87495d9d9c 100644
--- a/macros/latex/contrib/phfthm/phfthm.dtx
+++ b/macros/latex/contrib/phfthm/phfthm.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2016 by Philippe Faist <philippe.faist@bluewin.ch>
+% Copyright (C) 2016 by Philippe Faist, philippe.faist@bluewin.ch
% -------------------------------------------------------
%
% This file may be distributed and/or modified under the
@@ -22,7 +22,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<package>\ProvidesPackage{phfthm}
%<*package>
- [2016/08/15 v1.0 phfthm package]
+ [2021/03/01 v1.2 phfthm package]
%</package>
%
%<*driver>
@@ -31,6 +31,9 @@
\usepackage{phfthm}
\usepackage[preset=xpkgdoc]{phfnote}
\usepackage{needspace}
+\expandafter\def\csname eqsign@\endcsname{=}
+\def\eqsign{\expandafter\protect\csname eqsign@\endcsname}
+\robustify\eqsign
\EnableCrossrefs
\CodelineIndex
\RecordChanges
@@ -150,7 +153,7 @@
% style adjustments; this allows you to enable features individually and
% selectively:
% \begin{verbatim}
-% \usepackage[resetstyle,prooftitleitbf=true]{../phfthm}
+% \usepackage[resetstyle,prooftitleitbf=true]{phfthm}
% \end{verbatim}
%
%
@@ -168,10 +171,9 @@
%
% Possible theorem sets are:
% \begin{pkgoptions}
-% \item[thmset=]\pkgoptionscombineitem
-% \item[thmset=empty] Do not define any environment at package loading. You may
-% of course invoke |\phfLoadThmSet| or |\phfMakeTheorem| manually at any
-% later point.
+% \item[thmset=,thmset=empty] Do not define any environment at package loading.
+% You may of course invoke |\phfLoadThmSet| or |\phfMakeTheorem| manually at
+% any later point.
% \item[thmset=simple]
% \DescribeEnv{theorem} \DescribeEnv{proposition}
% \DescribeEnv{lemma} \DescribeEnv{corollary} \DescribeEnv{definition}
@@ -182,14 +184,17 @@
% environments |theorem|, |proposition|, |lemma|, |corollary|, |conjecture|,
% |remark| as theorem-like environments, and |definition| as a definition-like
% environment.
-% \item[thmset=shortnames] For if you like typing less: the same environments
+% \item[thmset=shortnames] \iffalse\DescribeEnv{thm}\DescribeEnv{prop}
+% \DescribeEnv{lem}\DescribeEnv{cor}\DescribeEnv{conj}\DescribeEnv{rem}
+% \DescribeEnv{defn}\fi In case you prefer to type less: the same environments
% are defined as the default set, but with shorter names. Define the
% environments |thm|, |prop|, |lem|, |cor|, |conj|, |rem| as theorem-like
% environments, and |defn| as a definition-like environment.
% \item[thmset=rich] \DescribeEnv{idea} \DescribeEnv{question}
-% \DescribeEnv{problem} Provides the same environments as the |default|
-% theorem set, as well as in addition: |idea|, |question| and |problem| as
-% theorem-like environments.
+% \DescribeEnv{claim} \DescribeEnv{observation} \DescribeEnv{problem} Provides
+% the same environments as the |default| theorem set, as well as in addition:
+% |idea|, |question|, |claim|, |observation|, and |problem| as theorem-like
+% environments.
% \end{pkgoptions}
%
% You may also load a theorem set at a later
@@ -222,21 +227,28 @@
% \pkgoptionfmt{thmset} package option will use a separate counter if this
% option is set; otherwise (the default), there is a single counter which is
% shared by all those theorem environments.
+% \item[parentcounter=\meta{counter name}] Theorem counters will reset each time
+% the parent counter is increased. Use this option for per-chapter or
+% per-section numbering (use parent counter |parentcounter=chapter| or
+% |parentcounter=section|). See also the \pkgoptionfmt{countpersection}
+% package option.
% \end{pkgoptions}
%
% The \pkgoptionfmt{proofref} package option allows to specify a comma-separated
% list of attributes to apply to the proof reference (``proof on page XYZ'')
% displayed along with the theorem. The following attributes may be specified:
% \begin{pkgoptions}
-% \item[proofref=\pkgoptattribempty{}]\pkgoptionscombineitem
-% \item[proofref=\pkgoptattribnodots{default}] Do not change the default
-% proof reference appearance.
+% \item[proofref=\pkgoptattribempty{},proofref=\pkgoptattribnodots{default}] Do
+% not change the default proof reference appearance.
%
% \item[proofref=false] Deactivate the proof-ref mechanism.
%
% \item[proofref=\pkgoptattrib{margin}] The proof reference is displayed in
% the margin, instead of after the theorem.
%
+% \item[proofref=\pkgoptattrib{marginbottom}] The proof reference is displayed
+% in the margin, but aligned with the bottom of the theorem statement.
+%
% \item[proofref=\pkgoptattrib{longref}] The proof reference is displayed as
% a full sentence (``The proof of this \meta{Theorem Name} can be found on
% page \meta{XYZ}.'').
@@ -430,8 +442,10 @@
% the margin, long sentence, ...). Possible styles are
% \cmdoptionfmt{proofrefstyle=default} (the default),
% \cmdoptionfmt{proofrefstyle=margin} (display the proof ref in the margin of
-% the page) and \cmdoptionfmt{proofrefstyle=longref} (as by default but with a
-% full sentence). See \autoref{sec:proof-ref-customize-appearance} for how to
+% the page), \cmdoptionfmt{proofrefstyle=marginbottom} (display the proof ref
+% in the margin of the page aligned with the bottom of the theorem statement)
+% and \cmdoptionfmt{proofrefstyle=longref} (as by default but with a full
+% sentence). See \autoref{sec:proof-ref-customize-appearance} for how to
% further customize the appearance of the proof reference.
%
% \end{cmdoptions}
@@ -456,8 +470,8 @@
% |\phfLoadThmSet| is:
%
% \noindent |\phfLoadThmSet|\hspace{0pt}\marg{options to
-% \phfverb{\phfLoadThmSet} for theorem-like
-% environments}\hspace{0pt}\marg{options to \phfverb{\phfLoadThmSet} for
+% \phfverb{\phfMakeTheorem} for theorem-like
+% environments}\hspace{0pt}\marg{options to \phfverb{\phfMakeTheorem} for
% definition-like environments}\hspace{0pt}\marg{name of theorem set to load}
%
% The first and second argument to this macro are tokens to expand in front of
@@ -490,6 +504,7 @@
% \DescribeMacro{\definitionname}
% \DescribeMacro{\ideaname}
% \DescribeMacro{\questionname}
+% \DescribeMacro{\claimname}
% \DescribeMacro{\problemname}
%
% This package is language agnostic (with titles defined by default in English),
@@ -498,9 +513,9 @@
% the relevant names to the corresponding |\captions|\meta{language name} macro,
% for example:
% \begin{verbatim}
-% \usepackage[francais,...]{babel}
+% \usepackage[french,...]{babel}
% ...
-% \addto\captionsfrancais{%
+% \addto\captionsfrench{%
% \def\theoremname{Th\'eor\`eme}%
% \def\propositionname{Proposition}%
% \def\lemmaname{Lemme}%
@@ -510,9 +525,10 @@
% \def\definitionname{D\'efinition}%
% \def\ideaname{Id\'ee}%
% \def\questionname{Question}%
+% \def\claimname{Affirmation}%
% \def\problemname{Probl\`eme}%
% }
-% ... \selectlanguage{francais} ...
+% ... \selectlanguage{french} ...
% \end{verbatim}
%
%
@@ -690,12 +706,16 @@
% \newcommand\proofofname[1]{\proofname{} of #1}
% \end{verbatim}
% You may override this to obtain something fancier, of you wish to display the
-% document in a different language:
+% document in a different language. For instance, you might want to display
+% (``D\'emonstration (Th\'eor\`eme 5)'' in french:
% \begin{verbatim}
-% \def\proofofnamefrancais#1{\proofname{} (#1)}
-% \addto\captionsfrancais{\let\proofofname\proofofnamefrancais}
+% \def\proofofnameinparentheses#1{\proofname\ (#1)}
+% \addto\captionsfrench{%
+% \def\proofname{D\'emonstration}%
+% \let\proofofname\proofofnameinparentheses%
+% }
% ...
-% \selectlanguage{francais} ...
+% \selectlanguage{french} ...
% \end{verbatim}
%
%
@@ -799,9 +819,9 @@
% \begin{minipage}{\dimexpr\textwidth-2\fboxsep-2\fboxrule\relax}
% \textbf{Theorem 17} (Gauss). For a closed surface $S$ enclosing a
% volume $V$, we have
-% \setcounter{equation}{41}
% \begin{equation}
% \oint_S\vec u\cdot d\vec S = \int_V(\vec\nabla\cdot\vec u)\,dV\ .
+% \tag*{(41)}
% \end{equation}
% \hfill{\small\itshape (Proof on page XXX.)}\hfilneg
% {\par\vspace{1ex}\relax
@@ -810,6 +830,41 @@
% \end{minipage}
% }\endgroup
%
+% A positive side-effect is that in your LaTeX source, if you consistently
+% label your proofs then you always know what theorem a proof refers to. If
+% you would like to simply output ``Proof.'' instead of ``Proof of Theorem
+% X.'', for instance, because the proof immediately succeeds the theorem in
+% question, you may use the syntax |[**thm:label]| instead. In this case, the
+% proof-reference mechanism will know that this is the proof of the theorem
+% labeled |thm:label| and will avoid undefined references. For example,
+% the following code:
+% \begin{verbatim}
+% \begin{theorem}[Gauss]
+% \label{thm:Gauss}
+% For a closed surface $S$ enclosing a volume $V$, we have
+% \begin{equation}
+% \oint_S\vec u\cdot d\vec S = \int_V(\vec\nabla\cdot\vec u)\,dV\ .
+% \end{equation}
+% \end{theorem}
+% \begin{proof}[**thm:Gauss]
+% ...
+% \end{proof}
+% \end{verbatim}
+% might output:
+% \begingroup\setlength{\fboxsep}{1em}
+% \par\noindent\fbox{%
+% \begin{minipage}{\dimexpr\textwidth-2\fboxsep-2\fboxrule\relax}
+% \textbf{Theorem 17} (Gauss). For a closed surface $S$ enclosing a
+% volume $V$, we have
+% \begin{equation}
+% \oint_S\vec u\cdot d\vec S = \int_V(\vec\nabla\cdot\vec u)\,dV\ .
+% \tag*{(41)}
+% \end{equation}
+% \par\textit{Proof.}\hspace{2em}\ldots
+% \end{minipage}
+% }\endgroup
+%
+%
% \subsection{On the theorem side}
%
% On the theorem side, the proof-ref mechanism works by hacking into the
@@ -875,6 +930,17 @@
% \ldots},'' where the page number corresponds to the page on which this proof
% is located.
%
+% You may also use the syntax |\begin{proof}[**|\meta{label}|]|, which has the
+% effect of producing the simple output ``Proof.'' (this is desirable e.g.\@
+% if the proof immediately follows the theorem statement) but which still
+% informs the proof-reference mechanism that this proof is associated with the
+% given theorem labeled by \meta{label}. This can avoid undefined references,
+% and can simplify your job if you want to move proofs around in your document.
+%
+% (It would be nice, of course, to have the package automatically output
+% ``Proof'' only if the proof immediately follows the theorem and output ``Proof
+% of XXX'' if the proof is further away. Unfortunately this is hard to detect
+% in \LaTeX\ and I currently have no plans to try to implement this.)
%
% \subsection{Customizing appearance of the proof reference text}
% \label{sec:proof-ref-customize-appearance}
@@ -1048,6 +1114,7 @@
\define@boolkey{phfmkthm}{defnostar}[true]{}
\define@boolkey{phfmkthm}{defstar}[true]{}
\define@boolkey{phfmkthm}{proofref}[true]{}
+\define@cmdkey{phfmkthm}{parentcounter}{}
\define@cmdkey{phfmkthm}{proofrefstyle}{}
% \end{macrocode}
%
@@ -1067,6 +1134,7 @@
\KV@phfmkthm@defnostartrue%
\KV@phfmkthm@defstartrue%
\KV@phfmkthm@proofreftrue%
+ \def\cmdKV@phfmkthm@parentcounter{}%
\def\cmdKV@phfmkthm@proofrefstyle{default}%
\setkeys{phfmkthm}{#1}%
% \end{macrocode}
@@ -1096,9 +1164,16 @@
\ifKV@phfmkthm@defnostar%
\if\relax\detokenize\expandafter{\cmdKV@phfmkthm@counter}\relax%
% \end{macrocode}
-% ---in case we use a separate counter (if \cmdoptionfmt{counter=}):
+% ---in case we use a separate given counter (if \cmdoptionfmt{counter=} is
+% given empty or not specified). Also check if we want a parent counter
+% (per-section or per-chapter numbering) and take that into account:
% \begin{macrocode}
- \newtheorem{phfthm@#2}{#3}%
+ \if\relax\detokenize\expandafter{\cmdKV@phfmkthm@parentcounter}\relax%
+ \edef\x{\noexpand\newtheorem{phfthm@#2}{#3}}%
+ \else
+ \edef\x{\noexpand\newtheorem{phfthm@#2}{#3}[\expandonce\cmdKV@phfmkthm@parentcounter]}%
+ \fi
+ \x
\csdef{phfthm@#2autorefname}{#3}%
\else%
\ifKV@phfmkthm@aliascounter%
@@ -1111,7 +1186,8 @@
\csdef{#2autorefname}{#3}%
\else%
% \end{macrocode}
-% ---in case we directly instruct |\newtheorem| to use the other counter (does not work with |\autoref|):
+% ---in case we directly instruct |\newtheorem| to use the other counter (does
+% not work with |\autoref|):
% \begin{macrocode}
\newtheorem{phfthm@#2}[\cmdKV@phfmkthm@counter]{#3}%
\fi%
@@ -1121,7 +1197,7 @@
% And also define the actual theorem environment, adding calls to hooks.
% \begin{macrocode}
\newenvironment{#2}[1][]{%
- \begin{phfthm@#2}[##1]%
+ \begin{phfthm@#2}[{##1}]%
\begingroup%
\csname phfthm@hook@start@#2\endcsname{##1}%
}{%
@@ -1430,10 +1506,15 @@
\else
\noexpand\phfthm@proof@noparselabel{##1}%
\fi
- \noexpand\def\noexpand\phfthm@val@displayargs{[{%
- \expandafter\noexpand\csname phfthm@prfenv@#2@val@proofofname\endcsname
- {\noexpand\phfthm@val@prooftitle}%
- }]}%
+ \noexpand\if\noexpand\relax\noexpand\detokenize%
+ \noexpand\expandafter{\noexpand\phfthm@val@prooftitle}\noexpand\relax
+ \noexpand\def\noexpand\phfthm@val@displayargs{}
+ \noexpand\else
+ \noexpand\def\noexpand\phfthm@val@displayargs{[{%
+ \expandafter\noexpand\csname phfthm@prfenv@#2@val@proofofname\endcsname
+ {\noexpand\phfthm@val@prooftitle}%
+ }]}%
+ \noexpand\fi
}
% \end{macrocode}
%
@@ -1645,16 +1726,30 @@
\def\phfthm@proof@parselabel#1{%
\phfthm@proof@parselabel@maybelabel#1\phfthm@proof@parselabel@END%
}
+% \end{macrocode}
+% If the argument is |[*thm-label]| we want ``Proof of \meta{ref to
+% thm-label}.''. If the argument is |[**thm-label]| we want ``Proof.'' but
+% we're informing the proofref-system that this is the proof of \meta{thm-label}
+% (e.g., to avoid undefined references to proofs). Otherwise if we get %
+% |[Some Custom Theorem]| then we want ``Proof of Some Custom Theorem.''.
+% \begin{macrocode}
\def\phfthm@proof@parselabel@maybelabel{%
\@ifnextchar*\phfthm@proof@parselabel@label\phfthm@proof@parselabel@title%
}
-\def\phfthm@proof@parselabel@label*#1\phfthm@proof@parselabel@END{%
+\def\phfthm@proof@parselabel@label*{%
+ \@ifnextchar*\phfthm@proof@parselabel@labelsilent\phfthm@proof@parselabel@labelnormal%
+}
+\def\phfthm@proof@parselabel@labelsilent*#1\phfthm@proof@parselabel@END{%
% \end{macrocode}
% The use of |\detokenize| here is a trick to make sure that all chars in the
% label text have a non-active category (e.g.\@ we would have problems, e.g., if
% in the label ``|thm:gauss|'' the ``|:|'' is an active char---such as in French):
% \begin{macrocode}
\edef\phfthm@val@proofoflabel{\detokenize{#1}}%
+ \def\phfthm@val@prooftitle{}%
+}
+\def\phfthm@proof@parselabel@labelnormal#1\phfthm@proof@parselabel@END{%
+ \edef\phfthm@val@proofoflabel{\detokenize{#1}}%
\def\phfthm@val@prooftitle{\phfthm@autoref{#1}}%
}
\def\phfthm@proof@parselabel@title#1\phfthm@proof@parselabel@END{%
@@ -1679,12 +1774,14 @@
%
%
% In order to look up what we are a proof of, we use |\autoref| provided by the
-% \pkgname{hyperref} package. If it is not available, fall back to the regular
-% |\ref| command.
+% \pkgname{hyperref} package. Crucially, it is NOT the job of \pkgname{phfthm}
+% to load this package, and we should only use them if they are available (we
+% don't want to depend on it). If it is not available, then we fall back to the
+% regular |\ref| command.
% \begin{macrocode}
\def\phfthm@autoref{\ref}
\AtBeginDocument{%
- \@ifpackageloaded{hyperref}{\def\phfthm@autoref{\autoref}}{}
+ \@ifpackageloaded{hyperref}{\def\phfthm@autoref{\autoref}}{}%
}
% \end{macrocode}
%
@@ -1983,11 +2080,53 @@
% \end{macro}
%
%
-% \subsubsection{Other proof-ref styles: only \phfverb{margin} for now}
+% \subsubsection{Other proof-ref styles: \phfverb{margin} and \phfverb{marginbottom}}
%
% These styles simply use the same mechanism as the default style, but plug in
% different sub-callbacks.
%
+% Here's a command that actually places the marginpar:
+% \begin{macro}{\phfthmproofref@placemarginpar}
+% \begin{macrocode}
+\newcommand\phfthmproofref@placemarginpar[2]{%
+ \marginpar[%
+ \raggedleft #1%
+ ]{%
+ \raggedright #2%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\phfthmproofref@placephantommarginpar}
+% In the |marginbottom| proof-ref style, we place an invisible |\marginpar| at
+% the top of the proof so that the proof-ref margin note will not be shifted
+% too high when we try to align it to the bottom of the theorem statement. To
+% work around a weird bug in Rev\TeX, where I get the error message `command
+% sequence undefined: |\@captype|', I have found that a fix is to override
+% this local invisible |\marginpar| to locally make sure the |\@captype| is
+% defined. The wild fix I've found---no guarantees, there are dark magic
+% forces at work here---is the following, which you can include in your
+% document preamble if you're banging your head against this problem and
+% you're desperate:
+% \begin{verbatim}
+% \makeatletter
+% \renewcommand\phfthmproofref@placephantommarginpar{%
+% \begingroup\csdef{@captype}{figure}\marginpar{%
+% \vspace{-\baselineskip}\rule{0pt}{0pt}}\endgroup%
+% }
+% \makeatother
+% \end{verbatim}
+% \begin{macrocode}
+\newcommand\phfthmproofref@placephantommarginpar{%
+ \leavevmode\marginpar{\vspace{-\baselineskip}\rule{\z@}{\z@}}%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \paragraph{The \phfverb{margin} style}
+%
% \begin{macro}{\phfthm@proofrefstyle@margin@setup}
% Set-up macro for the ``|margin|'' proof-ref style (displays the proof
% reference in the margin of the page).
@@ -2011,12 +2150,65 @@
% \url{http://tex.stackexchange.com/a/16161/32188}}
% \begin{macrocode}
\def\phfthm@proofref@impl@fmt##1##2{%
- \leavevmode\marginpar{\proofrefsize{\proofonname{##1}{##2}}}%
+ \leavevmode\phfthmproofref@placemarginpar{%
+ \proofrefsize{\proofonname{##1}{##2}}%
+ }{%
+ \proofrefsize{\proofonname{##1}{##2}}%
+ }%
}%
}
% \end{macrocode}
% \end{macro}
%
+% \paragraph{The \phfverb{marginbottom} style}
+%
+% \begin{macro}{\phfthm@proofrefstyle@marginbottom@setup}
+% Set-up macro for the ``|marginbottom|'' proof-ref style (displays the proof
+% reference in the margin of the page).
+% \begin{macrocode}
+\def\phfthm@proofrefstyle@marginbottom@setup{%
+ \phfthm@proofrefstyle@default@setup
+% \end{macrocode}
+%
+% The proof reference should be displayed directly at the bottom, not at the end
+% of the theorem, so plug in |\phfthm@proofref@default@main| onto |...@end| and
+% not onto |...@afterlabel|. Don't forget that these macros accept one
+% argument, the theorem label. In |...@afterlabel| we place a dummy marginpar
+% with an invisible rule one |\baselineskip| upwards, so that we force any
+% proof-ref marginpar not to extend above the top of the theorem statement.
+% \begin{macrocode}
+ \def\phfthm@proofref@impl@afterlabel##1{%
+ \phfthmproofref@placephantommarginpar
+ }%
+ \let\phfthm@proofref@impl@end\phfthm@proofrefstyle@default@main
+% \end{macrocode}
+%
+% Define the formatting callback to put the note in the margin of the page using
+% a |\marginpar|. We use a trick to align the margin note with the bottom of
+% the paragraph.\footnote{\url{https://tex.stackexchange.com/a/388018/32188}}
+% \begin{macrocode}
+ \def\phfthm@proofref@impl@fmt##1##2{%
+ \phfthmproofref@marginbottom@domarginpar{##1}{##2}%
+ }%
+}
+\def\phfthmproofref@marginbottom@domarginpar#1#2{%
+ \setbox\phfthm@tmp@boxa=\hbox to \marginparwidth{%
+ \parbox[b]{\marginparwidth}{\raggedleft\sloppy
+ \proofrefsize{\strut\proofonname{#1}{#2}\strut}}}%
+ \setbox\phfthm@tmp@box=\hbox to \marginparwidth{%
+ \parbox[b]{\marginparwidth}{\raggedright\sloppy
+ \proofrefsize{\strut\proofonname{#1}{#2}\strut}}}%
+ \phfthmproofref@placemarginpar{%
+ \box\phfthm@tmp@boxa%
+ }{%
+ \box\phfthm@tmp@box%
+ }%
+}
+\newbox\phfthm@tmp@box
+\newbox\phfthm@tmp@boxa
+% \end{macrocode}
+% \end{macro}
+%
%
% \subsection{Thmheading definition-like environments}
%
@@ -2150,6 +2342,8 @@
\def\definitionname{Definition}
\def\ideaname{Idea}
\def\questionname{Question}
+\def\claimname{Claim}
+\def\observationname{Observation}
\def\problemname{Problem}
% \end{macrocode}
%
@@ -2230,6 +2424,8 @@
\phfthm@thmset@default
\phfthm@def@thmset@mktheorem{idea}{\ideaname}
\phfthm@def@thmset@mktheorem{question}{\questionname}
+ \phfthm@def@thmset@mktheorem{claim}{\claimname}
+ \phfthm@def@thmset@mktheorem{observation}{\observationname}
\phfthm@def@thmset@mktheorem{problem}{\problemname}
}
% \end{macrocode}
@@ -2291,6 +2487,7 @@
\KV@phfthmpkg@qedsymbolblacksquarefalse%
\KV@phfthmpkg@prooftitleitbffalse%
\KV@phfthmpkg@sepcountersfalse%
+ \KV@phfthmpkg@countpersectionfalse%
\KV@phfthmpkg@proofreffalse%
\if\relax\detokenize{#1}\relax\else%
\PackageError{phfthm}{'resetstyle' does not take any argument.}{You
@@ -2312,13 +2509,18 @@
\KV@phfthmpkg@sepcountersfalse
% \end{macrocode}
%
+% The \pkgoptionfmt{countpersection} option, off by default.
+% \begin{macrocode}
+\define@boolkey{phfthmpkg}{countpersection}[true]{}
+\KV@phfthmpkg@countpersectionfalse
+% \end{macrocode}
+%
%
-% The \pkgoptionfmt{proofref} option. The proof-ref is off initially by
-% default.
+% The \pkgoptionfmt{proofref} option. The proof-ref is on initially by default.
% \begin{macrocode}
\newif\ifKV@phfthmpkg@proofref
-\KV@phfthmpkg@proofreffalse
-\def\cmdKV@phfthmpkg@proofref@style{}
+\KV@phfthmpkg@proofreftrue
+\def\cmdKV@phfthmpkg@proofref@style{default}
% \end{macrocode}
% Actually define the option itself. Here we do some customized parsing of the
% value of the |proofref=...| option, to treat the cases |proofref=| (empty
@@ -2451,6 +2653,9 @@
\def\phfthm@proofref@style@margin{
\def\phfthm@val@mkthmopt@proofrefstyle{proofrefstyle=margin}
}
+ \def\phfthm@proofref@style@marginbottom{
+ \def\phfthm@val@mkthmopt@proofrefstyle{proofrefstyle=marginbottom}
+ }
\def\phfthm@proofref@style@longref{
% \end{macrocode}
% For |longref|: by setting |\proofonname| globally, this option can be combined
@@ -2476,6 +2681,16 @@
\def\x{%
\phfthm@internal@execattribs{phfthm@proofref@style@}{ProofRef Style}}
\expandafter\x\expandafter{\cmdKV@phfthmpkg@proofref@style}
+% \end{macrocode}
+%
+% Prepare the proof-ref option in case we don't want any proof reference
+% mechanism on.
+%
+% \changed[chg-bugfix-pkgopt-proofreffalse]{v1.1}{2019/03/12}{Bug fix: package
+% option \texttt{proofref\eqsign false} didn't have any effect}
+% \begin{macrocode}
+\else
+ \def\phfthm@val@mkthmopt@proofrefstyle{proofref=false}
\fi
% \end{macrocode}
%
@@ -2490,12 +2705,28 @@
% \end{macrocode}
%
% Prepare an argument to |\phfMakeTheorem| according to the
-% \pkgoptionfmt{sepcounters} option.
+% \pkgoptionfmt{countpersection} and \pkgoptionfmt{sepcounters} options. First
+% determine the parent counter in case \pkgoptionfmt{countpersection} is set
+% (|chapter| if |chapter| counter exists, else |section|).
% \begin{macrocode}
+\ifKV@phfthmpkg@countpersection
+ \ifcsname c@chapter\endcsname
+ \def\phfthm@tmp@parentcountername{chapter}
+ \else
+ \def\phfthm@tmp@parentcountername{section}
+ \fi
+\fi
\ifKV@phfthmpkg@sepcounters
- \def\phfthm@val@mkthmopt@counteropts{}
+ \ifKV@phfthmpkg@countpersection
+ \edef\phfthm@val@mkthmopt@counteropts{parentcounter=\phfthm@tmp@parentcountername}
+ \else
+ \def\phfthm@val@mkthmopt@counteropts{}
+ \fi
\else
\def\phfthm@val@mkthmopt@counteropts{counter=phfthmcounter}
+ \ifKV@phfthmpkg@countpersection
+ \numberwithin{phfthmcounter}{\phfthm@tmp@parentcountername}
+ \fi
\fi
% \end{macrocode}
%
@@ -2525,19 +2756,19 @@
\fi
}
\ifKV@phfthmpkg@smallproofs
- \phfthm@pkgopterr@require@proofenv{smallproofs}
+ %\phfthm@pkgopterr@require@proofenv{smallproofs}
\apptocmd\phfthm@hookproof@startcommon{%
\def\baselinestretch{1.2}\footnotesize}{}{%
Failed to change command \string\phfthm@hook@start@proof}
\fi
\ifKV@phfthmpkg@qedsymbolblacksquare
- \phfthm@pkgopterr@require@proofenv{qedsymbolblacksquare}
+ %\phfthm@pkgopterr@require@proofenv{qedsymbolblacksquare}
\RequirePackage{amssymb}
\providecommand\filledsquare{\ensuremath{\blacksquare}}
\renewcommand\qedsymbol{\text{\tiny\ensuremath{\filledsquare}}}
\fi
\ifKV@phfthmpkg@prooftitleitbf
- \phfthm@pkgopterr@require@proofenv{prooftitleitbf}
+ %\phfthm@pkgopterr@require@proofenv{prooftitleitbf}
\def\phfthm@ProofTitleFmt#1{{\itshape\bfseries#1.}}
\fi
% \end{macrocode}
diff --git a/macros/latex/contrib/phfthm/phfthm.ins b/macros/latex/contrib/phfthm/phfthm.ins
index 133090b213..566fc7ee40 100644
--- a/macros/latex/contrib/phfthm/phfthm.ins
+++ b/macros/latex/contrib/phfthm/phfthm.ins
@@ -1,5 +1,5 @@
%%
-%% Copyright (C) 2016 by Philippe Faist <philippe.faist@bluewin.ch>
+%% Copyright (C) 2016 by Philippe Faist, philippe.faist@bluewin.ch
%%
%% This file may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3 of this license
@@ -21,7 +21,7 @@
This is a generated file.
-Copyright (C) 2016 by Philippe Faist <philippe.faist@bluewin.ch>
+Copyright (C) 2016 by Philippe Faist, philippe.faist@bluewin.ch
This file may be distributed and/or modified under the conditions of
the LaTeX Project Public License, either version 1.3 of this license
diff --git a/macros/latex/contrib/phfthm/phfthm.pdf b/macros/latex/contrib/phfthm/phfthm.pdf
index ce5c5ecce3..9a4c7af7b6 100644
--- a/macros/latex/contrib/phfthm/phfthm.pdf
+++ b/macros/latex/contrib/phfthm/phfthm.pdf
Binary files differ
diff --git a/macros/latex/contrib/phfthm/pkg.mk b/macros/latex/contrib/phfthm/pkg.mk
index 3cc121ce5e..328b5fc36d 100644
--- a/macros/latex/contrib/phfthm/pkg.mk
+++ b/macros/latex/contrib/phfthm/pkg.mk
@@ -4,7 +4,9 @@
#
LATEX = latex
-PDFLATEX = TEXINPUTS="$$TEXINPUTS:../phfnote" pdflatex
+PDFLATEXNAME = pdflatex
+
+PDFLATEX = TEXINPUTS="$$TEXINPUTS:../phfnote" $(PDFLATEXNAME)
PDFLATEXOPTS = -interaction=batchmode
PDFLATEXOPTSLAST = -interaction=batchmode --synctex=1
@@ -29,29 +31,38 @@ PKGREADME = README.md
#
DIST_ADDITIONAL_FILES ?=
+#
+# Additional files automatically generated by the .ins file, such as .def files
+# (by default empty)
+#
+ADDITIONAL_GENERATED_FILES ?=
+
+
+# By default, the generated style file is a '.sty' latex package. If it's a
+# '.cls' class file instead, the local Makefile will redefine this to 'cls'.
+PKGSTYEXT ?= sty
PKGDTX = $(PKG).dtx
+PKGSTY = $(PKG).$(PKGSTYEXT)
PKGINS = $(PKG).ins
-PKGSTY = $(PKG).sty
PKGPDF = $(PKG).pdf
PKGTDSZIP = $(PKG).tds.zip
PKGZIP = $(PKG).zip
-
-.PHONY: help sty pdf install install_sty install_doc tdszip dist clean cleanall cleansty cleanaux cleanpdf cleantdszip cleandist
+.PHONY: help sty cls pdf install install_sty install_cls install_doc tdszip dist clean cleanall cleansty cleancls cleanaux cleanpdf cleantdszip cleandist
help:
@echo "Targets for $(PKG):"
- @echo "make sty -- generate LaTeX package file $(PKG).sty"
+ @echo "make $(PKGSTYEXT) -- generate LaTeX package file $(PKG).$(PKGSTYEXT)"
@echo "make pdf -- generate pdf documentation"
- @echo "make install -- install style and documentation files to TEXMF tree"
- @echo "make install PREFIX=[specify texmf directory]"
- @echo "make $(PKG).tds.zip -- create TDS.ZIP to include in CTAN upload"
+ @echo "make install -- install style and documentation files to $(DEFAULT_PREFIX)"
+ @echo "make install PREFIX=[specify texmf directory destination]"
+ @echo "make $(PKG).tds.zip -- create TDS.ZIP package for distribution"
@echo "make dist -- create distribution ZIP, ready for upload to CTAN"
@echo "make clean -- remove LaTeX auxiliary files"
- @echo "make cleansty -- remove generated style file"
+ @echo "make clean$(PKGSTYEXT) -- remove generated style file"
@echo "make cleanpdf -- remove generated pdf documentation"
@echo "make cleanall -- remove all generated files, incl. distribution zip"
@@ -66,11 +77,17 @@ cleanall: cleansty cleanaux cleanpdf cleantdszip cleandist
sty: $(PKGSTY)
+# synonym of `sty` in case of LaTeX classes, we use same commands etc.
+cls: $(PKGSTY)
+
$(PKGSTY): $(PKGINS) $(PKGDTX)
$(LATEX) $<
cleansty:
- @rm -f $(PKGSTY)
+ @rm -f $(PKGSTY) $(ADDITIONAL_GENERATED_FILES)
+
+cleancls: cleansty
+
# ------------------------------------------------
# make pdf
@@ -121,7 +138,9 @@ cleanpdf:
install_sty: $(PKGSTY)
mkdir -p $(DESTDIR)$(PREFIX)/tex/latex/$(PKG)
- cp $(PKGSTY) $(DESTDIR)$(PREFIX)/tex/latex/$(PKG)
+ cp $(PKGSTY) $(ADDITIONAL_GENERATED_FILES) $(DESTDIR)$(PREFIX)/tex/latex/$(PKG)
+
+install_cls: install_sty
install_doc: $(PKGPDF)
mkdir -p $(DESTDIR)$(PREFIX)/doc/latex/$(PKG)
@@ -155,12 +174,14 @@ DISTTMPDIR = $(CURDIR)/_install_dist_zip.make.tmp
dist: $(PKGZIP)
-$(PKGZIP): $(PKGTDSZIP)
+# feedback from CTAN upload manager: prefer not to provide tds.zip in CTAN upload
+$(PKGZIP): #$(PKGTDSZIP)
rm -rf $(DISTTMPDIR)
mkdir -p $(DISTTMPDIR)/$(PKG)
- cp $(PKGTDSZIP) $(DISTTMPDIR)
+# cp $(PKGTDSZIP) $(DISTTMPDIR)
cp $(PKGDTX) $(PKGINS) $(PKGPDF) $(PKGREADME) Makefile pkg.mk $(DIST_ADDITIONAL_FILES) $(DISTTMPDIR)/$(PKG)
- cd $(DISTTMPDIR) && zip -r $(CURDIR)/$(PKGZIP) $(PKGTDSZIP) $(PKG)
+# cd $(DISTTMPDIR) && zip -r $(CURDIR)/$(PKGZIP) $(PKG) $(PKGTDSZIP)
+ cd $(DISTTMPDIR) && zip -r $(CURDIR)/$(PKGZIP) $(PKG)
rm -rf $(DISTTMPDIR)
cleandist:
diff --git a/macros/latex/contrib/sttools/README.md b/macros/latex/contrib/sttools/README.md
index 3c48f3a113..4c2614473f 100644
--- a/macros/latex/contrib/sttools/README.md
+++ b/macros/latex/contrib/sttools/README.md
@@ -1,4 +1,4 @@
-README for sttools, v2.1 2020/10/16
+README for sttools, v3.0 2021/10/04
INTRODUCTION
============
@@ -9,50 +9,56 @@ and maintained by Sigitas Tolušis.
PACKAGES
========
-* cuted.sty, v1.5 2012/10/04:
- – puts some material page width wide at any place on twocolumn page
- with existing text reformatted under inserted material;
- TODO: add optional rules to separate from text;
-
-* floatpag.sty, v1.1 2012/05/29:
- – sets pagestyle for floats page;
-
-* flushend.sty, v3.5 2017/10/16:
- – balances page in twocolumn mode;
- (2014/03/03): totally rewritten with new algorithm to support footnotes,
- top floats and column break before one line section title;
- (2014/04/24): bugfix version;
- (2015/04/08): bugfix version with improved funcionality:
- - spreaded or fixed right column height;
- - optional old algorithm for backward compatability;
- (2015/04/14): set debug option off by default; keeplastbox modified;
- (2016/06/21): bugfix compatibility with luatexja package;
- (2017/03/27): bugfix version with new options for some checks on/off;
- (2020/10/14): bugfix development and test;
- (2020/10/16): bugfix version: modern with noautobase;
-
-* marginal.sty, v1.1 2012/05/29:
- – enlarges room for marginal inserts;
- (2016/06/28): removed from the bundle;
-
-* midfloat.sty, v1.1 2012/05/29:
- – inserts onecolumn stuff in twocolumn page;
- TODO: extend to work on both columns;
-
-* stabular.sty, v2.0 2014/03/20:
- – modifies tabular environment;
- (2014/03/20): removed extra stuff and left only possibility to break
- on page boundary;
- added tabular variant from array package;
-
-* stfloats.sty, v3.3 2017/03/27:
- – enriches floats output mechanism;
- (2016/06/28): compatibility bugfix with 2015 latexrelease;
- (2017/03/27): compatibility bugfix with 2017-05-01 latexrelease;
-
-* texsort.sty, v1.1 2012/05/29:
- - sorts numerical values;
- TODO: extend (rewrite) to support alphanumerical values
+* cuted.sty, v2.0 2021/10/04:
+ – puts some material page width wide at any place on twocolumn page
+ with existing text reformatted under inserted material;
+ \preCutedStrip{h... i} and \postCutedStrip{h... i} can be used to add
+ extra stuff before and after the strip;
+ (2021/10/04): rewrite with new balance algorithm and options.
+
+* floatpag.sty, v2.0 2021/10/04:
+ – sets pagestyle for floats page;
+ (2021/10/04): removed latex209 compatibility; added rotated dblfloat
+ support;
+
+* flushend.sty, v4.0 2021/10/04:
+ – balances page in twocolumn mode;
+ (2014/03/03): totally rewritten with new algorithm to support footnotes,
+ top floats and column break before one line section title;
+ (2014/04/24): bugfix version;
+ (2015/04/08): bugfix version with improved funcionality:
+ - spreaded or fixed right column height;
+ - optional old algorithm for backward compatability;
+ (2015/04/14): set debug option off by default; keeplastbox modified;
+ (2016/06/21): bugfix compatibility with luatexja package;
+ (2017/03/27): bugfix version with new options for some checks on/off;
+ (2020/10/14): bugfix development and test;
+ (2020/10/16): bugfix version: modern with noautobase;
+ (2021/10/04): another rewrite with new balance algorithm and options;
+
+* marginal.sty, v1.1 2012/05/29:
+ – enlarges room for marginal inserts;
+ (2016/06/28): removed from the bundle;
+
+* midfloat.sty, v1.1 2012/05/29:
+ – inserts onecolumn stuff in twocolumn page;
+ TODO: extend to work on both columns;
+
+* stabular.sty, v2.1 2021/10/04:
+ – modifies tabular environment;
+ (2014/03/20): removed extra stuff and left only possibility to break
+ on page boundary;
+ added tabular variant from array package;
+ (2021/10/04): sync with array bugfix version for tabular;
+
+* stfloats.sty, v3.3 2017/03/27:
+ – enriches floats output mechanism;
+ (2016/06/28): compatibility bugfix with 2015 latexrelease;
+ (2017/03/27): compatibility bugfix with 2017-05-01 latexrelease;
+
+* texsort.sty, v1.1 2012/05/29:
+ - sorts numerical values;
+ TODO: extend (rewrite) to support alphanumerical values
for sorting.
INSTALLATION
@@ -74,7 +80,7 @@ and <package>.pdf for particular macro package.
LICENSE
=======
-
+```
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
of this license or (at your option) any later version.
@@ -82,6 +88,6 @@ The latest version of this license is in
http://www.latex-project.org/lppl.txt
and version 1.3 or later is part of all distributions of LaTeX
version 2005/12/01 or later.
-
+```
diff --git a/macros/latex/contrib/sttools/cuted.dtx b/macros/latex/contrib/sttools/cuted.dtx
index 453ba5d051..3f927c1046 100644
--- a/macros/latex/contrib/sttools/cuted.dtx
+++ b/macros/latex/contrib/sttools/cuted.dtx
@@ -1,6 +1,6 @@
-% \iffalse meta-comment
+% \iffalse meta-comment/*% \end{macrocode}*/
%
-% Copyright (C) 2012 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
+% Copyright (C) 2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
% ---------------------------------------------------------------------------
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -20,13 +20,35 @@
% \fi
%
% \iffalse
+%<*internal>
+\begingroup
+%</internal>
+%<*batchfile>
+\input docstrip.tex
+\keepsilent\askforoverwritefalse
+\preamble
+%%
+%% This is file `cuted.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cuted.dtx (with options: `package')
+%%
+\endpreamble
+\generate{\file{cuted.sty}{\from{cuted.dtx}{package}}}
+%</batchfile>
+%<batchfile>\endbatchfile
+%<*internal>
+\generate{\file{cuted.ins}{\from{cuted.dtx}{batchfile}}}
+\endgroup
+%</internal>
%<*driver>
\ProvidesFile{cuted.dtx}
%</driver>
%<*package>
-%% Copyright (C) 1997-2012 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
-%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania
-%% http://www.vtex.lt/tex/download/macros/
+%% Copyright (C) 1997-2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
+%% UAB VTeX, Mokslininkų 2A, LT-08412 Vilnius, Lithuania
%% --------------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -42,15 +64,16 @@
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{cuted}
%<*package>
- [2012/10/04 v1.5 Mixing onecolumn and twocolumn modes]
+ [2021/10/04 v2.0 Mixing onecolumn and twocolumn modes]
%</package>
%
%<*driver>
\documentclass{ltxdoc}
-\usepackage{cuted}[2012/10/04]
+\usepackage{cuted}[2021/10/04]
\EnableCrossrefs
\CodelineIndex
\RecordChanges
+\OnlyDescription
\begin{document}
\DocInput{cuted.dtx}
\PrintChanges
@@ -89,6 +112,7 @@
% \changes{}{2000/01/18}{pakeistas \cs{@outputdblcol}}
% \changes{}{2002/06/11}{added options unskipbreak and autobase}
% \changes{v1.4}{2012/05/29}{Converted to DTX file}
+% \changes{v2.0}{2021/10/04}{rewrite with new balance algorithm and options}
%
% \DoNotIndex{\newcommand,\newenvironment}
%
@@ -102,51 +126,82 @@
%
% \section{Introduction}
%
-% It is denoted to place some material in full-width at any place
-% on double-column page (|\twocolumn| mode). The part of material
-% can be placed on the next page. Existing text is placed
-% under inserted material in two columns (it is reformatted).
+% It is denoted to place some material in full-width at any place
+% on double-column page (|\twocolumn| mode). The part of material
+% can be placed on the next page. Existing text is placed
+% under inserted material in two columns (it is reformatted).
%
-% \section{Usage}
+% To compare with the previous version the package is rewritten
+% with new cropped balancing algorithm version and new options
+% from |flushend.sty, v4.0|.
%
+% \section{Usage}
%
% \DescribeMacro{strip}
% Provides new environment:
+% \begin{verbatim}
+% \begin{strip}
+% <wide onecolumn material>
+% \end{strip}
+% \end{verbatim}
+% Puts |\vbox|\marg{wide onecolumn material} in full-width on
+% double-column page.
%
-% \begin{verbatim}
-% \begin{strip}
-% <wide onecolumn material>
-% \end{strip}
-% \end{verbatim}
-%
-% Puts |\vbox|\marg{wide onecolumn material} in full-width on
-% double-column page.
+% \medskip
+% It can be problems with floats and footnotes. In the case of
+% problems with footnotes it is possible to correct the situation
+% using commands |\footnotemark| and |\footnotetext|.
%
-% \medskip
-% Adds |\stripsep| glue before and after
-% (by default: |15pt plus2pt minus 2pt|).
+% \medskip
+% \DescribeMacro{preCutedStrip}\marg{tokens}
+% \\\noindent Before the strip |\stripsep| glue and |\the\preCutedStrip| token list \meta{tokens} are added.
%
-% \medskip
-% It can be problems with floats and footnotes. In the case of
-% problems with footnotes it is possible to correct the situation
-% using commands |\footnotemark| and |\footnotetext|.
+% \medskip
+% \DescribeMacro{postCutedStrip}\marg{tokens}
+% \\\noindent After the strip |\the\postCutedStrip| token list \meta{tokens} and |\stripsep| glue are added.
+%
+% \medskip
+% \DescribeMacro{stripsep}
+% By default: |\stripsep=15pt plus2pt minus 2pt|.
%
% \medskip
% \DescribeMacro{\oldcolsbreak}
% \marg{adds}
-%
-% Adds \meta{adds} in place of original column break if strip is placed
-% on the right column.
+% \\\noindent Adds \meta{adds} in place of original column break if strip is placed
+% on the right column. Seems, it should be unnecessary as current version
+% uses |pagediscards| dimensions to restore original vertical skip.
%
% \subsection{Package options}
%
-% \DescribeMacro{unskipbreak}
-% \indent It is used to change |\hbox{}| to |\unskip| after leftcolumn break on striped page.
+% \begin{description}
+%
+% \item[\meta{|spread|}]
+% \texttt{[default]} It enables columns spreading trying to balance.
+%
+% \item[\meta{|nospread|}]
+% It disables columns spreading trying to balance.
+%
+% \item[\meta{|shrink|}]
+% \texttt{[default]} It enables columns shrinking trying to balance.
+%
+% \item[\meta{|noshrink|}]
+% It disables columns shrinking trying to balance.
%
% \medskip
-% \DescribeMacro{autobase}
-% It is used to guess |\baselineskip| value on original columns break.
+% \textit{Similiar options exist for single column separatly}:
+%
+% |lspread|, |nolspread|, |lshrink|, |nolshrink| -- for left column
%
+% |rspread|, |norspread|, |rshrink|, |norshrink| -- for right column
+%
+% \item[\meta{|debug|}]
+% Adds rules to the bottom of columns (just for debugging)
+% and some additional log info.
+%
+% \item[\meta{|nodebug|}]
+% \texttt{[default]} Skips putting debuging lines and additional info.
+%
+% \end{description}
%
% \StopEventually{}
%
@@ -156,479 +211,529 @@
%<*package>
% \fi
%
-%
-% \begin{macro}{unskipbreak}
+%/*% \begin{macrocode}*/
% \begin{macrocode}
-\def\on@stripcols@break{\hbox{}}
-\DeclareOption{unskipbreak}{\gdef\on@stripcols@break{\unskip}}
-% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{autobase}
-% \begin{macrocode}
-\newif\if@flushend@auto@baselineskip
-\DeclareOption{autobase}{\global\@flushend@auto@baselineskiptrue}
+
+\newif\if@right@column@spread \@right@column@spreadtrue
+\newif\if@right@column@shrink \@right@column@shrinktrue
+\newif\if@left@column@spread \@left@column@spreadtrue
+\newif\if@left@column@shrink \@left@column@shrinktrue
+\newif\ifcuted@@debug \cuted@@debugfalse
+
+\DeclareOption{spread}{%
+ \global\@left@column@spreadtrue
+ \global\@right@column@spreadtrue
+ }
+\DeclareOption{nospread}{%
+ \global\@left@column@spreadfalse
+ \global\@right@column@spreadfalse
+ }
+\DeclareOption{lspread}{\global\@left@column@spreadtrue}
+\DeclareOption{nolspread}{\global\@left@column@spreadfalse}
+\DeclareOption{rspread}{\global\@right@column@spreadtrue}
+\DeclareOption{norspread}{\global\@right@column@spreadfalse}
+
+\DeclareOption{shrink}{%
+ \global\@left@column@shrinktrue
+ \global\@right@column@shrinktrue
+ }
+\DeclareOption{noshrink}{%
+ \global\@left@column@shrinkfalse
+ \global\@right@column@shrinkfalse
+ }
+\DeclareOption{lshrink}{\global\@left@column@shrinktrue}
+\DeclareOption{nolshrink}{\global\@left@column@shrinkfalse}
+\DeclareOption{rshrink}{\global\@right@column@shrinktrue}
+\DeclareOption{norshrink}{\global\@right@column@shrinkfalse}
+
+\DeclareOption{debug}{\global\cuted@@debugtrue}
+\DeclareOption{nodebug}{\global\cutted@@debugfalse}
+
\ProcessOptions
+\newif\if@lastviper \@lastviperfalse
\newtoks\At@ViperColsBreak \At@ViperColsBreak{}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\oldcolsbreak}
-% \begin{macrocode}
+\newtoks\preCutedStrip \preCutedStrip{}
+\newtoks\postCutedStrip \postCutedStrip{}
+\newbox\cuted@@tempbox@a
+\newbox\cuted@@tempbox@c
+\newbox\cuted@@tempbox@var
+\@ifundefined{hold@viper}
+ {\newbox\hold@viper}{}
+\@ifundefined{@viper}
+ {\newbox\@viper}{}
+\newbox\cuted@@varbox@a
+\newbox\cuted@@varbox@c
+\newdimen\cuted@@tempdim@spread
+\newdimen\cuted@@tempdim@a
+\newdimen\cuted@@tempdim@b
+\newdimen\ht@hold@viper
+\newdimen\ht@viper
+\newdimen\var@@pagediscards@ht \var@@pagediscards@ht=\z@
+\@ifundefined{stripsep}
+ {\newskip\stripsep \stripsep 15\p@ plus 2\p@ minus 2\p@}{}
+\newcount\viper@penalty
+\mathchardef\@Mv=10005
+\def\cuted@@column@badness{101}
+\def\cuted@@page@rule{\z@}
+\savingvdiscards=\@ne
+
+\def\cuted@@wlog@debug#1{\ifcuted@@debug \wlog{#1}\fi}
+
+\def\set@split@topskip@to#1{%
+ \splittopskip=#1\relax
+ \vfuzz=\maxdimen
+ \vbadness=\maxdimen
+ }
+
\def\oldcolsbreak#1{\global\At@ViperColsBreak{#1}}
-\def\viper@top@hook{\splittopskip0pt plus 2pt}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\newbox\v@aaa
-\newbox\v@ccc
-\@ifundefined{lastskip@a}{\newskip\lastskip@a}{}
-\@ifundefined{lastskip@b}{\newskip\lastskip@b}{}
-\@ifundefined{lastskip@d}{\newskip\lastskip@d}{}
-\@ifundefined{lastbox@a}{\newbox\lastbox@a}{}
-\@ifundefined{stripsep}{\newskip\stripsep \stripsep 15pt plus 2pt minus 2pt}{}
+\def\on@stripcols@break{%
+ %%
+ %% adds original vertical page break skip
+ %%
+ \begingroup
+ \setbox\cuted@@tempbox@var\vbox{\pagediscards}%
+ \ifvoid\cuted@@tempbox@var
+ \else
+ \global\var@@pagediscards@ht=\ht\cuted@@tempbox@var
+ \global\advance\var@@pagediscards@ht by\dp\cuted@@tempbox@var
+ \fi
+ \endgroup
+ \ifdim\var@@pagediscards@ht=\z@
+ \else
+ \vskip\var@@pagediscards@ht
+ \fi
+ }
-\@ifundefined{@viper}{\newbox\@viper}{}
-\newif\if@lastviper \@lastviperfalse
-% \end{macrocode}
-%
-%
-% \begin{macro}{\@outputdblcol}
-% \begin{macrocode}
\def\@outputdblcol{%
- \if@firstcolumn
- \global \@firstcolumnfalse
- \global \setbox\@leftcolumn \box\@outputbox
- \else
- \global \@firstcolumntrue
- \setbox\@outputbox \vbox {%
- \hb@xt@\textwidth {%
- \hb@xt@\columnwidth {%
- \box\@leftcolumn \hss}%
- \hfil
- \vrule \@width\columnseprule
- \hfil
- \hb@xt@\columnwidth {%
- \box\@outputbox \hss}%
- }%
- }%
- \ifvoid\hold@viper
+ \if@firstcolumn
+ \global\@firstcolumnfalse
+ \global\setbox\@leftcolumn\copy\@outputbox
+ \splitmaxdepth\maxdimen
+ \vbadness\maxdimen
+ \setbox\@outputbox\vbox{\unvbox\@outputbox\unskip}%
+ \setbox\@outputbox\vsplit\@outputbox to\maxdimen
+ \toks@\expandafter{\topmark}%
+ \xdef\@firstcoltopmark{\the\toks@}%
+ \toks@\expandafter{\splitfirstmark}%
+ \xdef\@firstcolfirstmark{\the\toks@}%
+ \ifx\@firstcolfirstmark\@empty
+ \global\let\@setmarks\relax
+ \else
+ \gdef\@setmarks{%
+ \let\firstmark\@firstcolfirstmark
+ \let\topmark\@firstcoltopmark
+ }%
+ \fi
\else
- \setbox\@outputbox \vbox to\textheight{%
- \box\hold@viper
- \box\@outputbox
- \vss
- }%
+ \global\@firstcolumntrue
+ \setbox\@outputbox\vbox{%
+ \hb@xt@\textwidth{%
+ \hb@xt@\columnwidth{\box\@leftcolumn \hss}%
+ \hfil
+ {\normalcolor\vrule \@width\columnseprule}%
+ \hfil
+ \hb@xt@\columnwidth{\box\@outputbox \hss}%
+ }%
+ }%
+ \ifvoid\hold@viper
+ \else
+ \setbox\@outputbox\vbox to\textheight{%
+ \box\hold@viper
+ \box\@outputbox
+ \vss
+ }%
+ \fi
+ \@combinedblfloats
+ \@setmarks
+ \@outputpage
+ \begingroup
+ \@dblfloatplacement
+ \@startdblcolumn
+ \@whilesw\if@fcolmade \fi
+ {\@outputpage \@startdblcolumn}%
+ \ifvoid\@viper
+ \else
+ \global\setbox\@viper\vbox{%
+ \vskip-\stripsep
+ \unvbox\@viper
+ }%
+ \@viperoutput
+ \fi
+ \endgroup
\fi
- \@combinedblfloats
- \@outputpage
- \begingroup
- \@dblfloatplacement
- \@startdblcolumn
- \@whilesw\if@fcolmade \fi
- {\@outputpage
- \@startdblcolumn}%
- \ifvoid\@viper
- \else
- \global\setbox\@viper\vbox{%
- \vskip-\stripsep
- \unvbox\@viper
- }%
- \@viperoutput
- \fi
- \endgroup
- \fi
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\mathchardef\@Mv=10005
-\newcount\viper@penalty
-% \end{macrocode}
-%
-% \begin{macro}{\strip}
-% \begin{macrocode}
+ }
\def\strip{%
- \ifinner
- \@parmoderr\viper@penalty\z@
- \else
- \viper@penalty=-\@Mv\relax
- \fi
- \global \setbox\@viper\vbox\bgroup%
+ \ifinner
+ \@parmoderr
+ \viper@penalty\z@
+ \else
+ \viper@penalty=-\@Mv
+ \fi
+ \global\setbox\@viper\vbox\bgroup
\hsize\textwidth
\@parboxrestore
- \col@number \@ne
+ \col@number=\@ne
\vrule height\topskip width\z@ depth\z@
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\endstrip}
-% \begin{macrocode}
+ }
\def\endstrip{%
\egroup
- \ifnum\viper@penalty <-\@Mii
- \penalty -\@Miv
- \ifvmode
- \@tempdima\prevdepth %% saving and restoring \prevdepth added
- \vbox{}% %% 26 May 87 to prevent extra vertical
- \prevdepth\@tempdima %% space when used in vertical mode
- \penalty-\@Mv\relax
- \else
- \par
- \penalty-\@Mv\relax
- \noindent
- \fi
+ \ifnum\viper@penalty<-\@Mii
+ \penalty-\@Miv
+ \ifvmode
+ \@tempdima\prevdepth
+ \vbox{}%
+ \prevdepth\@tempdima
+ \penalty-\@Mv\relax
+ \else
+ \par
+ \penalty-\@Mv
+ \noindent
+ \fi
\fi
}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@viperoutput}
-% \begin{macrocode}
\gdef\@viperoutput{%
- \global \setbox\@holdpg \vbox{%
- \unvbox\@holdpg
- \unvbox\@cclv
- \setbox\@tempboxa \lastbox
- \unskip
- }%
- \@pagedp \dp\@holdpg
- \@pageht \ht\@holdpg
- \ifvoid\@viper\else
- \advance \@pageht \@pagedp
- \ifvoid\footins \else
- \advance \@pageht \ht\footins
- \advance \@pageht \skip\footins
- \advance \@pageht \dp\footins
- \fi
- \ifvbox \@kludgeins
- \ifdim \wd\@kludgeins=\z@
- \advance \@pageht \ht\@kludgeins
- \fi
- \fi
- \@reinserts
- \@addviper
- \fi
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@specialoutput}
-% \begin{macrocode}
+ \global\setbox\@holdpg\vbox{%
+ \unvbox\@holdpg
+ \unvbox\@cclv
+ \setbox\@tempboxa\lastbox
+ \unskip
+ }%
+ \@pagedp=\dp\@holdpg
+ \@pageht=\ht\@holdpg
+ \ifvoid\@viper
+ \else
+ \advance\@pageht by\@pagedp
+ \ifvoid\footins
+ \else
+ \advance\@pageht by\ht\footins
+ \advance\@pageht by\skip\footins
+ \advance\@pageht by\dp\footins
+ \fi
+ \ifvbox\@kludgeins
+ \ifdim\wd\@kludgeins=\z@
+ \advance\@pageht by\ht\@kludgeins
+ \fi
+ \fi
+ \@reinserts
+ \@addviper
+ \fi
+ }
\gdef\@specialoutput{%
- \ifnum \outputpenalty>-\@Mii
- \@doclearpage
- \else
- \ifnum \outputpenalty<-\@Miii
- \ifnum \outputpenalty<-\@MM \deadcycles \z@ \fi
- \ifnum \outputpenalty=-\@Mv
- \@viperoutput
- \ifnum \outputpenalty<\z@
- \if@nobreak
- \else
- \addpenalty \interlinepenalty
- \fi
- \fi
- \else
- \global \setbox\@holdpg \vbox {\unvbox\@cclv}%
- \fi
- \else
- \global \setbox\@holdpg \vbox{%
- \unvbox\@holdpg
- \unvbox\@cclv
- \setbox\@tempboxa \lastbox
- \unskip
- }%
- \@pagedp \dp\@holdpg
- \@pageht \ht\@holdpg
- \unvbox \@holdpg
- \@next\@currbox\@currlist{%
- \ifnum \count\@currbox>\z@
- \advance \@pageht \@pagedp
- \ifvoid\footins \else
- \advance \@pageht \ht\footins
- \advance \@pageht \skip\footins
- \advance \@pageht \dp\footins
- \fi
- \ifvbox \@kludgeins
- \ifdim \wd\@kludgeins=\z@
- \advance \@pageht \ht\@kludgeins
- \fi
- \fi
- \@reinserts
- \@addtocurcol
- \else
- \@reinserts
- \@addmarginpar
- \fi
- }\@latexbug
- \ifnum \outputpenalty<\z@
- \if@nobreak
- \else
- \addpenalty \interlinepenalty
- \fi
- \fi
- \fi
+ \ifnum\outputpenalty>-\@Mii
+ \@doclearpage
+ \else
+ \ifnum\outputpenalty<-\@Miii
+ \ifnum\outputpenalty<-\@MM \deadcycles \z@ \fi
+ \ifnum\outputpenalty=-\@Mv
+ \@viperoutput
+ \ifnum\outputpenalty<\z@
+ \if@nobreak
+ \else
+ \addpenalty \interlinepenalty
+ \fi
+ \fi
+ \else
+ \global\setbox\@holdpg\vbox{\unvbox\@cclv}%
+ \fi
+ \else
+ \global\setbox\@holdpg\vbox{%
+ \unvbox\@holdpg
+ \unvbox\@cclv
+ \setbox\@tempboxa\lastbox
+ \unskip
+ }%
+ \@pagedp=\dp\@holdpg
+ \@pageht=\ht\@holdpg
+ \unvbox\@holdpg
+ \@next\@currbox\@currlist{%
+ \ifnum\count\@currbox>\z@
+ \advance \@pageht \@pagedp
+ \ifvoid\footins
+ \else
+ \advance\@pageht by\ht\footins
+ \advance\@pageht by\skip\footins
+ \advance\@pageht by\dp\footins
+ \fi
+ \ifvbox\@kludgeins
+ \ifdim\wd\@kludgeins=\z@
+ \advance\@pageht by\ht\@kludgeins
+ \fi
+ \fi
+ \@reinserts
+ \@addtocurcol
+ \else
+ \@reinserts
+ \@addmarginpar
+ \fi
+ }\@latexbug
+ \ifnum\outputpenalty<\z@
+ \if@nobreak
+ \else
+ \addpenalty \interlinepenalty
+ \fi
+ \fi
+ \fi
\fi
}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\@ifundefined{hold@viper}{\newbox\hold@viper}{}
-\newdimen\ht@viper
-% \end{macrocode}
-%
-% \begin{macro}{\@addviper}
-% \begin{macrocode}
-\def \@addviper {%
- \if@firstcolumn
- \@insertfalse
- \@reqcolroom .5\@pageht
- \ht@viper\@reqcolroom
- \advance \@reqcolroom \ht\@viper
- \advance \@reqcolroom \stripsep
- \ifvoid\hold@viper\@tempdima=\z@\else\@tempdima\ht\hold@viper\fi
-%%
- \@tempdimb \ht@viper
- \loop
- \setbox\v@aaa\copy\@holdpg
- \setbox\v@ccc\vbox to\@tempdimb{%
- \vsplit\v@aaa to\@tempdimb\vss\vsplit\v@aaa to\@tempdimb}%
- \wlog{Extra height:\the\ht\v@aaa\space when \the\@tempdimb}%
- \ifvoid\v@aaa \else \advance\@tempdimb 1pt \repeat
- \loop
- \setbox\v@aaa\copy\@holdpg
- \setbox\v@ccc\vbox to\@tempdimb{%
- \vsplit\v@aaa to\@tempdimb\vss}%
- \wlog{(2)Left:\the\ht\v@ccc\space Right:\the\ht\v@aaa\space Output:\the\@tempdimb}%
- \ifdim \ht\v@ccc<\ht\v@aaa \@tempdimb \the\ht\v@aaa \repeat
- \wlog{- LAST -^^JLeft:\the\ht\v@ccc^^JRight:\the\ht\v@aaa^^JOutput:\the\@tempdimb}%
- \setbox\v@ccc\vbox to\@tempdimb{%
- \vsplit\@holdpg to\@tempdimb\vss}%
-%%
- \setbox\@tempboxa \vbox {%
- \hb@xt@\textwidth {%
- \hb@xt@\columnwidth {%
- \vbox to\ht@viper{\box\v@ccc\vss} \hss}%
- \hfil
- \vrule \@width\columnseprule
- \hfil
- \hb@xt@\columnwidth {%
- \vbox to\ht@viper{\box\@holdpg\vss} \hss}%
- }%
- }%
- \ifvoid\hold@viper
- \global\setbox\hold@viper \vbox {%
- \unvbox\@tempboxa
- \penalty\interlinepenalty
- \vskip\stripsep
- \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
- \outputpenalty \z@
- }%
- \else
- \global\setbox\hold@viper \vbox {%
- \unvbox\hold@viper
- \unvbox\@tempboxa
- \penalty\interlinepenalty
- \vskip\stripsep
- \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
- \outputpenalty \z@
+\def\@addviper{%
+ \@insertfalse
+ \def\var@@thecol@num{2}%
+ \if@firstcolumn
+ \def\var@@thecol@num{1}%
+ \@reqcolroom=.5\@pageht
+ \ht@viper=\@reqcolroom
+ \advance\@reqcolroom by\ht\@viper
+ \advance\@reqcolroom by\stripsep
+ \else
+ \@reqcolroom=\@colht
+ \advance\@reqcolroom by\@pageht
+ \ht@viper.5\@reqcolroom
+ \@reqcolroom=\ht@viper
+ \advance\@reqcolroom by\ht\@viper
+ \advance\@reqcolroom by\stripsep
+ \global\setbox\@holdpg\vbox{%
+ \setbox\cuted@@tempbox@a\vbox{%
+ \aftergroup\unvbox
+ \unvcopy\@leftcolumn
+ \unskip\unkern\unpenalty
+ \setbox\@tempboxa\lastbox
+ \ifdim\dimexpr\ht\@tempboxa+\wd\@tempboxa+\dp\@tempboxa>\z@
+ %% keeps lastbox
+ \aftergroup\@leftcolumn
+ \else
+ %% removes lastbox
+ \aftergroup\cuted@@tempbox@a
+ \fi
+ }%
+ \unskip\unkern\unpenalty
+ \on@stripcols@break
+ \the\At@ViperColsBreak
+ \unvbox\@holdpg
+ }%
+ \global\At@ViperColsBreak{}%
+ \ht@viper=.5\ht\@holdpg
+ \ifdim\ht@viper>\@colht
+ \ht@viper=\@colht
+ \fi
+ \fi
+ %%
+ %% calculations for breaking
+ %%
+ \ifvoid\hold@viper
+ \ht@hold@viper=\z@
+ \else
+ \ht@hold@viper=\ht\hold@viper
+ \fi
+ \cuted@@tempdim@b\ht@viper
+ \set@split@topskip@to\topskip
+ \loop
+ \xdef\saved@tempdimb{\the\cuted@@tempdim@b}%
+ \setbox\cuted@@varbox@a\copy\@holdpg
+ \setbox\cuted@@tempbox@a\vsplit\cuted@@varbox@a to\cuted@@tempdim@b
+ %% set leftcolumn boxes
+ \setbox\cuted@@tempbox@c\vbox{\unvbox\cuted@@tempbox@a}%
+ \setbox\cuted@@tempbox@a\vbox to\cuted@@tempdim@b{\unvcopy\cuted@@tempbox@c}%
+ \xdef\var@@leftcolumn@badness{\the\badness}%
+ %% set rightcolumn boxes
+ \setbox\cuted@@varbox@c\vbox{\unvbox\cuted@@varbox@a}%
+ \setbox\cuted@@varbox@a\vbox to\cuted@@tempdim@b{\unvcopy\cuted@@varbox@c}%
+ \xdef\var@@rightcolumn@badness{\the\badness}%
+ %% analyzing split goodness
+ \cuted@@tempdim@spread=\ht\cuted@@tempbox@c
+ \advance\cuted@@tempdim@spread by\dp\cuted@@tempbox@c
+ \advance\cuted@@tempdim@spread by-\ht\cuted@@varbox@c
+ \advance\cuted@@tempdim@spread by-\dp\cuted@@varbox@c
+ \cuted@@wlog@debug{CUTED [-----]%
+ ^^JLeft: \the\ht\cuted@@tempbox@c
+ +\the\dp\cuted@@tempbox@c\space/\var@@leftcolumn@badness
+ ^^JRight: \the\ht\cuted@@varbox@c
+ +\the\dp\cuted@@varbox@c\space/\var@@rightcolumn@badness
+ ^^JSplit: \the\cuted@@tempdim@b
+ ^^JExtra height: \the\cuted@@tempdim@spread
+ }%
+ \ifnum\var@@leftcolumn@badness<\cuted@@column@badness
+ \ifnum\var@@rightcolumn@badness<\cuted@@column@badness
+ \cuted@@tempdim@spread=\z@
+ \fi
+ \fi
+ \ifdim\cuted@@tempdim@spread<\z@
+ \if@left@column@spread
+ \if@right@column@shrink
+ \ifdim\dimexpr\cuted@@tempdim@spread+\pageshrink>\z@
+ \cuted@@tempdim@a=\dimexpr\ht\cuted@@tempbox@c-0.5\cuted@@tempdim@spread\relax
+ \else
+ \cuted@@tempdim@a=-\dimexpr\cuted@@tempdim@spread+.5\pageshrink\relax
+ \fi
+ \setbox\cuted@@varbox@a\vbox to\cuted@@tempdim@a{\unvcopy\cuted@@tempbox@c}%
+ \ifnum\badness<\cuted@@column@badness
+ \cuted@@tempdim@b=\cuted@@tempdim@a
+ \cuted@@tempdim@spread=\z@
+ \fi
+ \cuted@@wlog@debug{CUTED [leftcolumn badness]: \number\badness\space on \the\cuted@@tempdim@a}%
+ \setbox\cuted@@varbox@a\vbox to\cuted@@tempdim@a{\unvcopy\cuted@@varbox@c}%
+ \cuted@@wlog@debug{CUTED [rightcolumn badness]: \number\badness\space on \the\cuted@@tempdim@a}%
+ \else
+ \setbox\cuted@@varbox@a\vbox to\ht\cuted@@varbox@c{%
+ \unvcopy\cuted@@tempbox@c
}%
- \fi
- \ifdim \@colroom>\@reqcolroom
- \global\setbox\hold@viper \vbox {%
- \unvbox\hold@viper
- \box\@viper
- \penalty\interlinepenalty
- \vskip\stripsep
- \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
- \outputpenalty \z@
+ \ifnum\badness<\cuted@@column@badness
+ \@tempdimb=\ht\cuted@@varbox@c
+ \cuted@@tempdim@spread=\z@
+ \fi
+ \cuted@@wlog@debug{CUTED [leftcolumn badness]: \number\badness on \the\ht\cuted@@varbox@c}%
+ \setbox\cuted@@varbox@a\vbox to\ht\cuted@@varbox@c{%
+ \unvcopy\cuted@@varbox@c
}%
- \@inserttrue
- \advance\@tempdima by-\ht\hold@viper
- \global \advance \@colht \@tempdima
- \ifdim \@colht<2.5\baselineskip
- \@latex@warning@no@line {Optional argument of \noexpand\twocolumn
- too tall on page \thepage (1 stulpelis)}%
- \@emptycol
- \if@firstcolumn
- \else
- \@emptycol
- \fi
- \global\@lastvipertrue
+ \cuted@@wlog@debug{CUTED [rightcolumn badness]: \number\badness on \the\ht\cuted@@varbox@c}%
+ \fi
+ \else
+ \if@right@column@shrink
+ \ifdim\dimexpr\cuted@@tempdim@spread+\pageshrink<\z@
+ \else
+ \cuted@@tempdim@b=\ht\cuted@@tempbox@c
+ \cuted@@tempdim@spread=\z@
+ \fi
+ \fi
+ \fi
+ \else
+ \ifdim\cuted@@tempdim@spread>\z@
+ \ifdim\dimexpr\@tempdimb+\p@\relax>\@colht
+ \cuted@@tempdim@b=\@colht
+ \cuted@@tempdim@spread=\z@
+ \fi
+ \fi
+ \fi
+ \ifdim\cuted@@tempdim@spread<\z@
+ \advance\cuted@@tempdim@b 1\p@
+ \repeat
+ \wlog{CUTED [- LAST -]%
+ ^^JExtra skip:\the\cuted@@tempdim@spread
+ ^^JLeft:\the\ht\cuted@@tempbox@c/\the\dp\cuted@@tempbox@c
+ ^^JRight:\the\ht\cuted@@varbox@c/\the\dp\cuted@@varbox@c
+ ^^JSplit: \saved@tempdimb
+ ^^JOutput:\the\cuted@@tempdim@b
+ ^^JPageshrink: \the\pageshrink
+ ^^JPagestretch: \the\pagestretch
+ ^^J@colht:\the\@colht
+ }%
+ %%
+ %% final construction of the cuted page above strip
+ %%
+ \setbox\cuted@@tempbox@c\vsplit\@holdpg to\saved@tempdimb
+ \setbox\cuted@@tempbox@a\vbox to\cuted@@tempdim@b{%
+ \cuted@@tempdim@a=\dimexpr
+ \cuted@@tempdim@b-\ht\cuted@@tempbox@c
+ \relax
+ \cuted@@tempdim@spread=\dp\cuted@@tempbox@c
+ \unvbox\cuted@@tempbox@c
+ \ifdim\cuted@@tempdim@spread>\dp\strutbox
\else
- \global \vsize \@colht
- \global \@colroom \@colht
- \check@floats
- \ifdim\@tempdima>\z@
- \global\advance\@colroom by-\@tempdima
- \fi
- \ifdim\@colroom<\z@
- \global\@colroom 1pt
- \ifdim\@tempdima>\@colht
- \@latex@warning@no@line {TOP ir/ar BOT FLOAT's
- netelpa lape \thepage (1 stulpelis)}%
- \fi
- \@emptycol
- \if@firstcolumn
- \else
- \@emptycol
- \fi
- \global\@lastvipertrue
- \fi
+ \vskip-\cuted@@tempdim@spread
\fi
- \fi
- \else
- \@insertfalse
- \@reqcolroom\@colht
- \advance\@reqcolroom \@pageht
- \ht@viper.5\@reqcolroom
- \@reqcolroom\ht@viper
- \advance \@reqcolroom \ht\@viper
- \advance \@reqcolroom \stripsep
- \if@flushend@auto@baselineskip
- \setbox\@tempboxa\vbox{\unvcopy\@leftcolumn
- \global\lastskip@d\lastskip
- \global\lastskip@b\lastskip
- \loop
- \global\lastskip@a\lastskip@b
- \unskip\unpenalty
- \global\lastskip@b\lastskip
- \global\advance\lastskip@d by\lastskip
- \ifdim\lastskip@b=-\lastskip@a
- \global\advance\lastskip@d by-\lastskip
- \else
- \repeat
- \ifdim\lastskip@b=-\lastskip@a
- \ifdim\lastskip@b=\z@
- \setbox\lastbox@a\lastbox
- \global\advance\lastskip@d by\ht\lastbox@a
- \global\advance\lastskip@d by\lastskip
- \unskip\unpenalty
- \setbox\lastbox@a\lastbox
- \global\advance\lastskip@d by\dp\lastbox@a
+ \prevdepth\z@
+ \hrule\@height\cuted@@page@rule width\textwidth
+ \vskip-\cuted@@page@rule
+ \ifdim\cuted@@tempdim@a>\z@
+ \if@left@column@spread
\else
- \global\lastskip@d\lastskip
- \global\advance\lastskip@d by\topskip
+ \vss
\fi
- \fi
- \global\advance\lastskip@d by-\topskip
- }%
- \ifdim\ht\@holdpg>\@colht
- \global\setbox\@holdpg\vbox{\unvbox\@leftcolumn\unskip\unpenalty
- \par\eject
- \vbox to \@colht{\unvbox\@holdpg\unskip}%
- }%
- \else
- \global\setbox\@holdpg\vbox{%
- \unvbox\@leftcolumn\unskip\unpenalty
- \vskip\lastskip@d
- \the\At@ViperColsBreak
- \unvbox\@holdpg
- \unskip
- }%
- \fi
- \else
- \global\setbox\@holdpg\vbox{%
- \unvbox\@leftcolumn
- \setbox\@tempboxa\lastbox
- \on@stripcols@break
- \the\At@ViperColsBreak
- \unvbox\@holdpg
- }%
- \fi
- \global\At@ViperColsBreak{}%
- \ht@viper .5\ht\@holdpg
- \ifdim \ht@viper>\@colht
- \ht@viper \@colht
- \fi
- \ifvoid\hold@viper\@tempdima=\z@\else\@tempdima\ht\hold@viper\fi
-% \end{macrocode}
-%%
-% \begin{macrocode}
- \@tempdimb \ht@viper
- \loop
- \setbox\v@aaa\copy\@holdpg
- \setbox\v@ccc\vbox to\@tempdimb{%
- \vsplit\v@aaa to\@tempdimb
+ \else
+ \ifdim\cuted@@tempdim@a<\z@
+ \if@left@column@shrink
+ \else
+ \vss
+ \fi
+ \fi
+ \fi
+ }%
+ \wlog{CUTED [output]: \the\cuted@@tempdim@b
+ ^^JCUTED [leftcolumn badness]: \number\badness
+ }%
+ \setbox\cuted@@varbox@a\vbox to\cuted@@tempdim@b{%
+ \cuted@@tempdim@a=\dimexpr
+ \cuted@@tempdim@b-\ht\@holdpg
+ \relax
+ \unvbox\@holdpg
+ \ifdim\cuted@@tempdim@a>\z@
+ \if@right@column@spread
+ \else
\vss
- \vsplit\v@aaa to\@tempdimb
+ \fi
+ \else
+ \ifdim\cuted@@tempdim@a<\z@
+ \if@right@column@shrink
+ \else
+ \vss
+ \fi
+ \fi
+ \fi
+ }%
+ \wlog{CUTED [rightcolumn badness]: \number\badness}%
+ \setbox\cuted@@tempbox@var\vbox{%
+ \hb@xt@\textwidth{%
+ \hb@xt@\columnwidth{%
+ \vbox to\ht@viper{\box\cuted@@tempbox@a\vss}%
+ \hss
}%
- \wlog{Extra height:\the\ht\v@aaa\space when \the\@tempdimb}%
- \ifvoid\v@aaa
- \else
- \advance\@tempdimb 1\p@
- \repeat
- \loop
- \setbox\v@aaa\copy\@holdpg
- \setbox\v@ccc\vbox to\@tempdimb{\vsplit\v@aaa to\@tempdimb\vss}%
- \wlog{(2)Left:\the\ht\v@ccc\space
- Right:\the\ht\v@aaa\space
- Output:\the\@tempdimb
- }%
- \ifdim\ht\v@ccc<\ht\v@aaa
- \@tempdimb \the\ht\v@aaa
- \repeat
- \wlog{- LAST -^^JLeft:\the\ht\v@ccc
- ^^JRight:\the\ht\v@aaa
- ^^JOutput:\the\@tempdimb
- }%
- \setbox\v@ccc\vbox to\@tempdimb{\vsplit\@holdpg to\@tempdimb\vss}%
-% \end{macrocode}
-%
-% \begin{macrocode}
- \setbox\@tempboxa\vbox{%
- \hb@xt@\textwidth {%
- \hb@xt@\columnwidth{\vbox to\ht@viper{\box\v@ccc\vss} \hss}%
\hfil
- \vrule \@width\columnseprule
+ {\normalcolor\vrule \@width\columnseprule}%
\hfil
- \hb@xt@\columnwidth {\vbox to\ht@viper{\box\@holdpg\vss} \hss}%
+ \hb@xt@\columnwidth{%
+ \vbox to\ht@viper{\box\cuted@@varbox@a\vss}%
+ \hss
+ }%
}%
}%
- \ifvoid\hold@viper
- \global\setbox\hold@viper \vbox {%
- \unvbox\@tempboxa
- \penalty\interlinepenalty
- \vskip\stripsep
- \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
- \outputpenalty \z@
- }%
- \else
- \global\setbox\hold@viper \vbox {%
- \unvbox\hold@viper
- \unvbox\@tempboxa
- \penalty\interlinepenalty
- \vskip\stripsep
- \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
- \outputpenalty \z@
- }%
- \fi
- \ifdim \@colht>\@reqcolroom
- \global\setbox\hold@viper \vbox {%
- \unvbox\hold@viper
- \box\@viper
- \penalty\interlinepenalty
- \vskip\stripsep
- \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
- \outputpenalty \z@
- }%
+ %%
+ %% finalize cuted page
+ %%
+ \ifvoid\hold@viper
+ \global\setbox\hold@viper\vbox{%
+ \unvbox\cuted@@tempbox@var
+ \penalty\interlinepenalty
+ \vskip\stripsep
+ \the\preCutedStrip
+ \ifnum\outputpenalty<-\@Mii
+ \vskip -\parskip
+ \fi
+ \outputpenalty\z@
+ }%
+ \else
+ \global\setbox\hold@viper\vbox{%
+ \unvbox\hold@viper
+ \cuted@@tempbox@var
+ \penalty\interlinepenalty
+ \vskip\stripsep
+ \the\preCutedStrip
+ \ifnum\outputpenalty<-\@Mii
+ \vskip -\parskip
+ \fi
+ \outputpenalty\z@
+ }%
+ \fi
+ \ifdim\@colht>\@reqcolroom
+ \global\setbox\hold@viper\vbox{%
+ \unvbox\hold@viper
+ \box\@viper
+ \penalty\interlinepenalty
+ \the\postCutedStrip
+ \vskip\stripsep
+ \ifnum\outputpenalty<-\@Mii
+ \vskip -\parskip
+ \fi
+ \outputpenalty\z@
+ }%
\@inserttrue
\global\@firstcolumntrue
- \advance\@tempdima by-\ht\hold@viper
- \global \advance \@colht \@tempdima
- \ifdim \@colht<2.5\baselineskip
+ \advance\ht@hold@viper by-\ht\hold@viper
+ \global\advance\@colht by\ht@hold@viper
+ \ifdim\@colht<2.5\baselineskip
\@latex@warning@no@line {Optional argument of \noexpand\twocolumn
- too tall on page \thepage (2 stulpelis)}%
+ too tall on page \thepage (\var@@thecol@num column)}%
\@emptycol
\if@firstcolumn
\else
@@ -636,17 +741,17 @@
\fi
\global\@lastvipertrue
\else
- \global \vsize \@colht
- \global \@colroom \@colht
- \check@floats
- \ifdim\@tempdima>\z@
- \global\advance\@colroom by-\@tempdima
+ \global\vsize\@colht
+ \global\@colroom\@colht
+ \check@floats\cuted@@tempdim@a
+ \ifdim\cuted@@tempdim@a>\z@
+ \global\advance\@colroom by-\cuted@@tempdim@a
\fi
\ifdim\@colroom<\z@
- \global\@colroom 1pt
- \ifdim\@tempdima>\@colht
- \@latex@warning@no@line {TOP ir/ar BOT FLOAT's
- netelpa lape \thepage (2 stulpelis)}%
+ \global\@colroom1\p@
+ \ifdim\cuted@@tempdim@a>\@colht
+ \@latex@warning@no@line{TOP and/or BOT FLOAT's
+ to large on \thepage (\var@@thecol@num column)}%
\fi
\@emptycol
\if@firstcolumn
@@ -656,95 +761,81 @@
\global\@lastvipertrue
\fi
\fi
- \fi
- \fi
- \if@insert
- \else
- \advance\@tempdima by-\ht\hold@viper
- \global \advance \@colht \@tempdima
- \global\setbox\hold@viper \vbox {%
- \unvbox\hold@viper
- \csname viper@top@hook\endcsname
- \vsplit\@viper to \@colht
- \vss
- }%
- \vbox{}%
- \global\@firstcolumnfalse
- \newpage
- \fi
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\check@floats}
-% \begin{macrocode}
-
-\def\check@floats{%
- \global\@tempdima\z@
- \let\@elt\ht@comflelt
- \ifx\@toplist\@empty \else \@toplist \fi
- \ifx\@botlist\@empty \else \@botlist \fi
+ \fi
+ \if@insert
+ \else
+ \advance\ht@hold@viper by-\ht\hold@viper
+ \global\advance\@colht by\ht@hold@viper
+ \global\setbox\hold@viper\vbox{%
+ \unvbox\hold@viper
+ \set@split@topskip@to{\z@ plus2\p@}%
+ \vsplit\@viper to\@colht
+ \vss
+ }%
+ \vbox{}%
+ \global\@firstcolumnfalse
+ \newpage
+ \fi
}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\ht@comflelt}
-% \begin{macrocode}
-\def\ht@comflelt#1{%
- \setbox\@tempboxa\vbox{\copy #1\vskip\floatsep}%
- \global\advance\@tempdima by\ht\@tempboxa
- }
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{output}
-% \begin{macrocode}
-\output {%
- \let \par \@@par
- \ifnum \outputpenalty<-\@M
- \@specialoutput
- \else
- \@makecol
- \@opcol
- \@startcolumn
- \@whilesw \if@fcolmade \fi
- {%
- \@opcol\@startcolumn}%
- \fi
- \ifnum \outputpenalty>-\@Miv
- \ifdim \@colroom<1.5\baselineskip
- \ifdim \@colroom<\textheight
- \@latex@warning@no@line {Text page \thepage\space
- contains only floats}%
- \if@lastviper\else\@emptycol\fi
- \if@twocolumn
- \if@firstcolumn
- \else
- \@emptycol
- \fi
- \fi
- \global\@lastviperfalse
- \else
- \global \vsize \@colroom
- \fi
+\def\check@floats#1{%
+ \begingroup
+ \global#1\z@
+ \def\@elt##1{%
+ \setbox\@tempboxa\vbox{\copy #1\vskip\floatsep}%
+ \global\advance##1 by\ht\@tempboxa
+ }%
+ \ifx\@toplist\@empty \else \@toplist \fi
+ \ifx\@botlist\@empty \else \@botlist \fi
+ \endgroup
+ }
+\output{%
+ \let\par\@@par
+ \ifnum\outputpenalty<-\@M
+ \@specialoutput
\else
- \global \vsize \@colroom
+ \@makecol
+ \@opcol
+ \@startcolumn
+ \@whilesw\if@fcolmade\fi
+ {\@opcol \@startcolumn}%
\fi
- \else
- \ifnum\outputpenalty<-100005
- \global \vsize \maxdimen
+ \ifnum\outputpenalty>-\@Miv
+ \ifdim\@colroom<1.5\baselineskip
+ \ifdim\@colroom<\textheight
+ \@latex@warning@no@line{%
+ Text page \thepage\space contains only floats%
+ }%
+ \if@lastviper
+ \else
+ \@emptycol
+ \fi
+ \if@twocolumn
+ \if@firstcolumn
+ \else
+ \@emptycol
+ \fi
+ \fi
+ \global\@lastviperfalse
+ \else
+ \global\vsize\@colroom
+ \fi
+ \else
+ \global\vsize\@colroom
+ \fi
\else
- \global \vsize \@colroom
+ \ifnum\outputpenalty<-\@Mv
+ \global\vsize\maxdimen
+ \else
+ \global\vsize\@colroom
+ \fi
\fi
- \fi
- }
+ }
+\ifcuted@@debug
+ \xdef\cuted@@page@rule{.4\p@}
+\else
+ \xdef\cuted@@page@rule{\z@}
+\fi
% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-%\endinput
-% \end{macrocode}
%
% \iffalse
%</package>
diff --git a/macros/latex/contrib/sttools/cuted.pdf b/macros/latex/contrib/sttools/cuted.pdf
index 25cd7d49ad..c44a88c4ac 100644
--- a/macros/latex/contrib/sttools/cuted.pdf
+++ b/macros/latex/contrib/sttools/cuted.pdf
Binary files differ
diff --git a/macros/latex/contrib/sttools/floatpag.dtx b/macros/latex/contrib/sttools/floatpag.dtx
index 95d732b665..b40da49c9f 100644
--- a/macros/latex/contrib/sttools/floatpag.dtx
+++ b/macros/latex/contrib/sttools/floatpag.dtx
@@ -1,6 +1,7 @@
-% \iffalse meta-comment
+% \iffalse meta-comment/*% \end{macrocode}*/
%
% Copyright (C) 1999-2012 by Vytas Statulevi\v{c}ius <vytas@vtex.lt>
+% Copyright (C) 2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
% ---------------------------------------------------------------------------
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -20,12 +21,35 @@
% \fi
%
% \iffalse
+%<*internal>
+\begingroup
+%</internal>
+%<*batchfile>
+\input docstrip.tex
+\keepsilent\askforoverwritefalse
+\preamble
+%%
+%% This is file `floatpag.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% floatpag.dtx (with options: `package')
+%%
+\endpreamble
+\generate{\file{floatpag.sty}{\from{floatpag.dtx}{package}}}
+%</batchfile>
+%<batchfile>\endbatchfile
+%<*internal>
+\generate{\file{floatpag.ins}{\from{floatpag.dtx}{batchfile}}}
+\endgroup
+%</internal>
%<*driver>
\ProvidesFile{floatpag.dtx}
%</driver>
%% Copyright (C) 1999-2012 by Vytas Statulevi\v{c}ius <vytas@vtex.lt>
-%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania
-%% http://www.vtex.lt/tex/download/macros/
+%% Copyright (C) 2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
+%% UAB VTeX, Mokslininkų 2A, LT-08412 Vilnius, Lithuania
%% --------------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -46,12 +70,13 @@
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{floatpag}
%<*package>
- [2012/05/29 v1.1 Different pagestyles on float pages]
+ [2021/10/04 v2.0 Different pagestyles on float pages]
+
%</package>
%
%<*driver>
\documentclass{ltxdoc}
-\usepackage{floatpag}[2012/05/29]
+\usepackage{floatpag}[2021/10/04]
\EnableCrossrefs
\CodelineIndex
\RecordChanges
@@ -63,7 +88,7 @@
%</driver>
% \fi
%
-% \CheckSum{304}
+% \CheckSum{216}
%
% \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
@@ -83,6 +108,7 @@
%
%
% \changes{v1.1}{2012/05/29}{Converted to DTX file}
+% \changes{v2.0}{2021/10/04}{Removed latex209 compatibility; added rotated dblfloat support}
%
% \DoNotIndex{\newcommand,\newenvironment}
%
@@ -126,8 +152,8 @@
% |\@xfloat|, |\@vtryfc|.
%
% \medskip
-% The following command from the rotating.sty was redefined:
-% |\@xrotfloat|.
+% The following commands from the rotating.sty was redefined:
+% |\@xrotfloat|, |\@rotxdblfloat|.
%
% \StopEventually{}
%
@@ -137,13 +163,6 @@
%<*package>
% \fi
%
-% \begin{macrocode}
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{floatpag}
- [1999/04/29
- FLOAT PAGESTYLE]
-% \end{macrocode}
-%
% \begin{macro}{\floatpagestyle}
% \begin{macrocode}
\def\floatpagestyle#1{\gdef\at@float@page{\thispagestyle{#1}}}
@@ -153,10 +172,7 @@
%
% \begin{macro}{\rotfloatpagestyle}
% \begin{macrocode}
-\def\rotfloatpagestyle#1{%
- \gdef\@r@f@pagestyle{#1}%
- \gdef\at@rotfloat@page{\thispagestyle{#1}}%
- }
+\def\rotfloatpagestyle#1{\gdef\@r@f@pagestyle{#1}}
% \end{macrocode}
% \end{macro}
%
@@ -169,8 +185,7 @@
%
% \begin{macrocode}
\def\thisfloatpagestyle#1{%
- \expandafter\expandafter\expandafter\gdef\expandafter
- \csname\number\@currbox @float\endcsname{\thispagestyle{#1}}\relax
+ \global\@namedef{\number\@currbox @float}{\thispagestyle{#1}}\relax
}
% \end{macrocode}
% \end{macro}
@@ -215,28 +230,27 @@
\else
\advance \@tempcnta \@ne
\fi
- \fi
- \if \reserved@a t%
+ \else\if \reserved@a t%
\@setfpsbit \tw@
- \fi
- \if \reserved@a b%
+ \else\if \reserved@a b%
\@setfpsbit 4%
- \fi
- \if \reserved@a p%
+ \else\if \reserved@a p%
\@setfpsbit 8%
- \fi
- \if \reserved@a !%
+ \else\if \reserved@a !%
\ifnum \@tempcnta>15
\advance\@tempcnta -\sixt@@n\relax
\fi
- \fi
+ \else
+ \@latex@error{Unknown float option `\reserved@a'}%
+ {Option `\reserved@a' ignored and `p' used.}%
+ \@setfpsbit 8%
+ \fi\fi\fi\fi\fi
}%
\@tempcntb \csname ftype@\@captype \endcsname
\multiply \@tempcntb \@xxxii
\advance \@tempcnta \@tempcntb
\global \count\@currbox \@tempcnta
- \expandafter\expandafter\expandafter\gdef\expandafter
- \csname\number\@currbox @float\endcsname{\at@float@page}\relax
+ \global\@namedef{\number\@currbox @float}{\at@float@page}\relax
}%
\@fltovf
\fi
@@ -252,11 +266,11 @@
% \end{macro}
%
%
-% \begin{macro}{\e@xrotfloat}
+% \begin{macro}{\floatpag@@xrotfloat}
%
-%% 2e rotating.sty v. 2.10:
+% rotating.sty v. $>$2.10:
% \begin{macrocode}
-\def\e@xrotfloat#1[#2]{%
+\def\floatpag@@xrotfloat#1[#2]{%
\@float{#1}[#2]%
\thisfloatpagestyle{\@r@f@pagestyle}%
\begin{lrbox}\rot@float@box
@@ -266,57 +280,36 @@
% \end{macro}
%
%
-% \begin{macro}{\n@xrotfloat}
-%% 2.09 rotating.sty v. 1.6
+% \begin{macro}{\floatpag@@rotxdblfloat}
+%
+% rotating.sty v. $>$2.10:
% \begin{macrocode}
-\def\n@xrotfloat#1[#2]{%
- \ifhmode
- \@bsphack
- \@floatpenalty -\@Mii
- \else
- \@floatpenalty-\@Miii
- \fi
- \def\@captype{#1}%
- \ifinner
- \@parmoderr\@floatpenalty\z@
- \else
- \@next\@currbox\@freelist{\@tempcnta\csname ftype@#1\endcsname
- \multiply\@tempcnta\@xxxii\advance\@tempcnta\sixt@@n
- \@tfor \@tempa :=#2\do{%
- \if\@tempa h\advance\@tempcnta \@ne\fi
- \if\@tempa t\advance\@tempcnta \tw@\fi
- \if\@tempa b\advance\@tempcnta 4\relax\fi
- \if\@tempa p\advance\@tempcnta 8\relax\fi
- }%
- \global\count\@currbox\@tempcnta
- }%
- \@fltovf
- \fi
- \expandafter\expandafter\expandafter\gdef\expandafter
- \csname\number\@currbox @float\endcsname{\at@rotfloat@page}\relax
- \global\setbox\@currbox\vbox\bgroup
- \hsize\textheight
- \@parboxrestore
- }
+\def\floatpag@@rotxdblfloat#1[#2]{%
+ \@float{#1}[#2]%
+ \thisfloatpagestyle{\@r@f@pagestyle}%
+ \hsize\textwidth\linewidth\textwidth
+ \begin{lrbox}\rot@float@box
+ \begin{minipage}\textheight
+}
% \end{macrocode}
+% \end{macro}
+%
%
-%% Check for |rotating| version: 2e ar 209:
-%% 1999.02.08 To be sure check at begin document.
% \begin{macrocode}
\AtBeginDocument{%
-\@ifpackageloaded{rotating}%
-{\let\@xrotfloat\e@xrotfloat\let\n@xrotfloat\relax}%
-{\let\@xrotfloat\n@xrotfloat\let\e@xrotfloat\relax}}%
+ \let\@xrotfloat\floatpag@@xrotfloat
+ \let\@rotxdblfloat\floatpag@@rotxdblfloat
+ }%
% \end{macrocode}
-% \end{macro}
%
%
% \begin{macro}{\spec@float}
%
%% "Hook" in the output procedure.
% \begin{macrocode}
-\def\spec@float#1{\expandafter\csname\number#1@float\endcsname
- \expandafter\expandafter\expandafter\gdef\expandafter\csname\number#1@float\endcsname{}%
+\def\spec@float#1{%
+ \@nameuse{\number#1@float}%
+ \global\@namedef{\number#1@float}{}%
}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/sttools/floatpag.pdf b/macros/latex/contrib/sttools/floatpag.pdf
index 2e50df9411..03003e1977 100644
--- a/macros/latex/contrib/sttools/floatpag.pdf
+++ b/macros/latex/contrib/sttools/floatpag.pdf
Binary files differ
diff --git a/macros/latex/contrib/sttools/flushend.dtx b/macros/latex/contrib/sttools/flushend.dtx
index 20d20f396e..4270459384 100644
--- a/macros/latex/contrib/sttools/flushend.dtx
+++ b/macros/latex/contrib/sttools/flushend.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment/*% \end{macrocode}*/
%
-% Copyright (C) 2020 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
+% Copyright (C) 2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
% ---------------------------------------------------------------------------
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -47,8 +47,8 @@
\ProvidesFile{flushend.dtx}
%</driver>
%<*package>
-%% Copyright (C) 1997-2020 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
-%% VTeX Ltd., Mokslinink\k{u} 2a, Vilnius, Lithuania
+%% Copyright (C) 1997-2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
+%% UAB VTeX, Mokslininkų 2A, LT-08412 Vilnius, Lithuania
%% --------------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -64,16 +64,19 @@
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{flushend}
%<*package>
- [2020/10/16 v3.5 Balancing columns in twocolumn mode]
+ [2021/10/04 v4.0 Balancing columns in twocolumn mode]
%</package>
%
%<*driver>
\documentclass{ltxdoc}
-\usepackage{flushend}[2020/10/16]
+\usepackage{flushend}[2021/10/04]
+\usepackage{geometry}
+\geometry{a4paper}
+\setlength\marginparwidth{5pc}
\EnableCrossrefs
\CodelineIndex
%%\RecordChanges
-%\OnlyDescription
+\OnlyDescription
\begin{document}
\DocInput{flushend.dtx}
%%\PrintChanges
@@ -117,6 +120,7 @@
% \changes{v3.3}{2017/03/27}{bugfix for get@@footnoterule@@box; options for some checks on/off}
% \changes{v3.4}{2020/10/14}{bugfix development and test}
% \changes{v3.5}{2020/10/16}{bugfix version: modern with noautobase}
+% \changes{v4.0}{2021/10/04}{another rewrite with new balance algorithm and options}
%
% \DoNotIndex{\newcommand,\newenvironment}
%
@@ -132,8 +136,11 @@
%
% The package is used to balance columns on any page in twocolumn
% mode. By default it is switched on at the end of document. It is
-% expected to work with footnotes, top floats and column break
-% before one line section title.
+% expected to work with leftcolumn footnotes (option checkfootnote)
+% and rightcolumn top floats (option checkfloat).
+%
+% To compare with the previous version the package is completely rewritten
+% with new balancing algorithm and new options, removed dependency on other packages.
%
% \section{Usage}
%
@@ -142,145 +149,167 @@
% \cs{flushcolsend} at that page.
%
% \medskip
-% \DescribeMacro{\flushend}
+% \leftline{\textbf{\textit{Available commands}}:}
+%
+% \begin{description}
%
+% \item[\cs{flushend}]
% This macro switches on column balancing on the last page. It is used
% by default.
%
-% \medskip
-% \DescribeMacro{\raggedend}
-%
+% \item[\cs{raggedend}]
% This macro switches off column balancing on the last page.
%
-% \medskip
-% \DescribeMacro{\flushcolsend}
-%
+% \item[\cs{flushcolsend}]
% This macro switches on column balancing on the current page.
%
-% \medskip
-% \DescribeMacro{\raggedcolsend}
-%
+% \item[\cs{raggedcolsend}]
% This macro switches off column balancing on the current page.
%
-% \medskip
-% \DescribeMacro{\atColsBreak}
-% \marg{tokens}
-%
+% \item[\cs{atColsBreak}\meta{tokens}]
% Adds \meta{tokens} in place of the original column break (made without balancing).
%
% \medskip
% \textit{Example}: |\atColsBreak{\vskip-2pt}|
%
-% \medskip
-% \DescribeMacro{\atColsEnd}
-% \marg{tokens}
-%
+% \item[\cs{atColsEnd}\meta{tokens}]
% Adds \meta{tokens} at the end of right column.
%
-% \medskip
-% \textit{Example}: |\atColsEnd{\vfil}|.
-%
-% \medskip
-% \DescribeMacro{\showcolsendrule}
-%
+% \item[\cs{showcolsendrule}]
% It can be used just for debugging: adds rule to the bottom of columns.
%
+% \end{description}
+%
% \subsection{Package options}
%
-% \medskip
-% \DescribeMacro{ancient}
-% It is used to switch on old version of balancing algorithm.
-% This version is not so accurate or "clever" but quite safe.
+% \begin{description}
+%
+% \item[\meta{|spread|}]
+% \texttt{[default]} It enables columns spreading trying to balance.
%
-% \medskip
-% \DescribeMacro{modern}
-% [default] It is used to switch on new version of balancing algorithm.
-% This version has some heuristic guesses for footnotes, floats
-% and section like head skip. So it is more dangerous in the case
-% for text misplace or disappear.
+% \item[\meta{|nospread|}]
+% It disables columns spreading trying to balance.
%
-% \medskip
-% \DescribeMacro{autobase}
-% [default] It is used to guess |\baselineskip| value on original columns
-% break. On failure just use |\atColsBreak{...}|.
+% \item[\meta{|shrink|}]
+% \texttt{[default]} It enables columns shrinking trying to balance.
%
-% \medskip
-% \DescribeMacro{noautobase}
-% It is used to switch off the previous option behaviour.
+% \item[\meta{|noshrink|}]
+% It disables columns shrinking trying to balance.
%
% \medskip
-% \DescribeMacro{spread}
-% [default] It adds extra glue to the rightcolumn trying to balance.
+% \textit{Similiar options exist for single column separatly}:
%
-% \medskip
-% \DescribeMacro{nospread}
-% It skips adding extra glue to the last column.
+% |lspread|, |nolspread|, |lshrink|, |nolshrink| -- for left column
%
-% \medskip
-% \DescribeMacro{removelastbox}
-% [default] It tries to remove an empty box (some more material) from the last column bottom.
+% |rspread|, |norspread|, |rshrink|, |norshrink| -- for right column
%
-% \medskip
-% \DescribeMacro{keeplastbox}
-% It skips removing anything from the last column. As example it is usefull and can be used
-% then document ends by reference item and last line of text should be with indend.
+% \item[\meta{|checkfootnote|}]
+% \texttt{[default]} Adds guess and checking for possible footnote on left column.
%
-% \medskip
-% \DescribeMacro{checkfootnote}
-% [default] Adds guess for footnote on left column then modern balancing algorithm is in use.
+% \item[\meta{|nocheckfootnote|}]
+% Skips guess for possible footnote and ignores any existing one.
%
-% \medskip
-% \DescribeMacro{nocheckfootnote}
-% Skips guess for footnote then modern balansing algorithm is in use.
+% \item[\meta{|checkfloat|}]
+% Adds guess for top float on right column. Any box with height bigger then 5|\topskip|
+% is considered as float. There are no user interface to change this limit except
+% internal macro definition: |\gdef\top@@floatbox@min@default{5\topskip}|
%
-% \medskip
-% \DescribeMacro{checkfloat}
-% [default] Adds guess for top float on right column then modern balancing algorithm is in use.
+% As guess is too brutal, not accurate, and somehow dangerous in case for text misplacement
+% it is switched off by default.
%
-% \medskip
-% \DescribeMacro{nocheckfloat}
-% Skips guess for top float on right column then modern balancing algorithm is in use.
+% \item[\meta{|nocheckfloat|}]
+% \texttt{[default]} Skips guess for top float on right column.
%
-% \medskip
-% \DescribeMacro{debug}
+% \item[\meta{|debug|}]
% Adds rules to the bottom of columns (just for debugging) and leftcolumn break place.
% Adds some additional log info.
%
-% \medskip
-% \DescribeMacro{nodebug}
-% [default] Skips putting debuging lines.
+% \item[\meta{|nodebug|}]
+% \texttt{[default]} Skips putting debuging lines and additional info.
%
-% \StopEventually{}
+% \end{description}
%
% \section{Implementation}
%
+% Improved balancing (at least it is expected so) is based on using possible spread and shrink
+% in both columns checking constructed columns badness.
+% Hard coded limit for badness is |101|. Available only as internal macro: |\def\flushend@@column@badness{101}|.
+% |\pagediscards| material dimensions are used to restore original vertical skip at original columns break.
+%
+% \bigskip
+% \leftline{\textbf{\textit{Expected usecase}} \texttt{(with options [checkfootnote,checkfloat])}:}
+%
+% \begin{verbatim}
+%
+% -------------------------- --------------------------
+% |xxxxxxxxxx ++++++++++| |xxxxxxxxxx ++++++++++|
+% |xxxxxxxxxx + +| |xxxxxxxxxx + +|
+% |xxxxxxxxxx + +| |xxxxxxxxxx + +|
+% |xxxxxxxxxx ++++++++++| |xxxxxxxxxx ++++++++++|
+% |xxxxxxxxxx figure | |xxxxxxxxxx figure |
+% | | | |
+% |section xxxxxxxxxx| |section yyyyyyyyyy|
+% | xxxxxxxxxx| -----> | yyyyyyyyyy|
+% |xxxxxxxxxx xxxxxxxxxx| |xxxxxxxxxx xxxxxxxxxx|
+% |xxxxxxxxxx xxxxxxxxxx| |xxxxxxxxxx xxxxxxxxxx|
+% |yyyyyyyyyy xxxxxxxxxx| | xxxxxxxxxx|
+% |yyyyyyyyyy | |--- xxxxxxxxxx|
+% | | |footnote xxxxxxxxxx|
+% |--- | | |
+% |footnote | | |
+% -------------------------- --------------------------
+%
+% \end{verbatim}
+% \StopEventually{}
+%
% \iffalse
%<*package>
% \fi
%
%/*% \begin{macrocode}*/
% \begin{macrocode}
-\newif\if@auto@baselineskip \@auto@baselineskiptrue
-\newif\if@ancient@balance@version \@ancient@balance@versionfalse
+
+\newif\if@footnote@check \@footnote@checktrue
\newif\if@right@column@spread \@right@column@spreadtrue
-\newif\if@remove@lastbox@at@balancing \@remove@lastbox@at@balancingtrue
+\newif\if@right@column@shrink \@right@column@shrinktrue
+\newif\if@left@column@spread \@left@column@spreadtrue
+\newif\if@left@column@shrink \@left@column@shrinktrue
\newif\if@balance@debug \@balance@debugfalse
-\DeclareOption{autobase}{\global\@auto@baselineskiptrue}
-\DeclareOption{noautobase}{\global\@auto@baselineskipfalse}
-\DeclareOption{ancient}{\global\@ancient@balance@versiontrue}
-\DeclareOption{modern}{\global\@ancient@balance@versionfalse}
-\DeclareOption{spread}{\global\@right@column@spreadtrue}
-\DeclareOption{nospread}{\global\@right@column@spreadfalse}
-\DeclareOption{removelastbox}{\global\@remove@lastbox@at@balancingtrue}
-\DeclareOption{keeplastbox}{\global\@remove@lastbox@at@balancingfalse}
+
+\DeclareOption{spread}{%
+ \global\@left@column@spreadtrue
+ \global\@right@column@spreadtrue
+ }
+\DeclareOption{nospread}{%
+ \global\@left@column@spreadfalse
+ \global\@right@column@spreadfalse
+ }
+\DeclareOption{lspread}{\global\@left@column@spreadtrue}
+\DeclareOption{nolspread}{\global\@left@column@spreadfalse}
+\DeclareOption{rspread}{\global\@right@column@spreadtrue}
+\DeclareOption{norspread}{\global\@right@column@spreadfalse}
+\DeclareOption{shrink}{%
+ \global\@left@column@shrinktrue
+ \global\@right@column@shrinktrue
+ }
+\DeclareOption{noshrink}{%
+ \global\@left@column@shrinkfalse
+ \global\@right@column@shrinkfalse
+ }
+\DeclareOption{lshrink}{\global\@left@column@shrinktrue}
+\DeclareOption{nolshrink}{\global\@left@column@shrinkfalse}
+\DeclareOption{rshrink}{\global\@right@column@shrinktrue}
+\DeclareOption{norshrink}{\global\@right@column@shrinkfalse}
\DeclareOption{checkfootnote}{%
\AtEndOfPackage{%
\let\check@@footnoterule@@box\initial@check@@footnoterule@@box
+ \@footnote@checktrue
}%
}
\DeclareOption{nocheckfootnote}{%
\AtEndOfPackage{%
\let\check@@footnoterule@@box\@gobblethree
+ \@footnote@checkfalse
}%
}
\DeclareOption{checkfloat}{%
@@ -295,240 +324,151 @@
}
\DeclareOption{debug}{\global\@balance@debugtrue}
\DeclareOption{nodebug}{\global\@balance@debugfalse}
+
\ProcessOptions
-% \end{macrocode}
-%
-% \begin{macrocode}
+
\newskip\flushend@@lastskip@a
\newskip\flushend@@lastskip@b
-\newskip\flushend@@lastskip@c
-\newcount\flushend@@penalty@a
+\newcount\flushend@@lastnode
\newcount\var@@loop@iter
-\newdimen\flushend@@lastkern@a
\newdimen\var@@temp@spread
\newdimen\var@@temp@a
\newdimen\var@@temp@loop
-\def\top@@skip@@limit{.7\topskip}
\newdimen\flushend@@page@rule \flushend@@page@rule\z@
\def\showcolsendrule{\global\flushend@@page@rule=.4\p@}
-% \end{macrocode}
-%
-% \begin{macro}{\top@@floatbox@min}\marg{float size}
-% This value is used to catch possible float on right column top.
-% \begin{macrocode}
-\gdef\top@@floatbox@min@default{4\topskip}
-\let\top@@floatbox@min\top@@floatbox@min@default
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
+\gdef\top@@floatbox@min@default{5\topskip}
+\let\top@@floatbox@min\maxdimen
+\def\flushend@@column@badness{101}
+\newbox\flushend@@varbox@lastpage
\newbox\flushend@@varbox@a
\newbox\flushend@@varbox@c
\newbox\flushend@@tempbox@a
\newbox\flushend@@tempbox@c
+\newbox\flushend@@floatbox
\@ifundefined{@viper}{\newbox\@viper}{}
\@ifundefined{hold@viper}{\newbox\hold@viper}{}
-% \end{macrocode}
-%
-% \begin{macrocode}
\newtoks\atColsBreak \atColsBreak={}
\newtoks\atColsEnd \atColsEnd={}
-% \end{macrocode}
-%
-% \begin{macrocode}
\@ifundefined{fmt@box@adds}{\def\fmt@box@adds#1{#1}}{}
\@ifundefined{fmt@vbox@adds}{\def\fmt@vbox@adds[#1]#2{#2}}{}
-% \end{macrocode}
-%
-% \begin{macro}{\remove@lastbox@at@balancing}
-% It is used to remove empty box at the right column end.
-% \begin{macrocode}
+\def\wlog@balance@debug#1{\if@balance@debug \wlog{#1}\fi}
+\def\log@box@info#1{<box\the#1>(\the\ht#1+\the\dp#1)x\the\wd#1}
+
\def\unskip@three@kern@penalty{%
\unskip\unkern\unpenalty
\unskip\unkern\unpenalty
\unskip\unkern\unpenalty
}
-\gdef\remove@lastbox@at@balancing{%
- \unskip@three@kern@penalty
- \if@remove@lastbox@at@balancing
- \else
- \expandafter\null
- \fi
- \bgroup
+
+\gdef\remove@empty@lastbox@at@balancing#1{%
+ %%
+ %% Removes lastbox without dimensions.
+ %% Removes latest skip, kern, penalty.
+ %% Cuts the lastbox's depth bigger then strutbox's depth.
+ %%
+ \var@@temp@a=\z@
+ \setbox\flushend@@tempbox@a\vbox{%
+ \unvcopy#1%
+ \unskip@three@kern@penalty
+ \global\flushend@@lastnode=\lastnodetype
+ }%
+ \setbox#1\vbox{%
+ \unvcopy\flushend@@tempbox@a
\setbox\z@\lastbox
- \ifdim\wd\z@>\z@
- \box\z@
+ \ifdim\dimexpr\ht\z@+\dp\z@+\wd\z@\relax>\z@
+ %% not empty lastbox - store depth of the lastbox
+ \global\var@@temp@a=\dp\z@
\else
- \aftergroup\unskip@three@kern@penalty
+ %% empty lastbox
+ \setbox\z@\box\flushend@@tempbox@a
+ \expandafter\unskip@three@kern@penalty
\fi
- \egroup
+ }%
+ \ifvoid\flushend@@tempbox@a\else
+ %% not empty lastbox - restore original
+ \setbox#1\box\flushend@@tempbox@a
+ \fi
+ \ifdim\var@@temp@a>\z@
+ %% cut the depth of the lastbox with the negative skip
+ \ifdim\var@@temp@a>\dp\strutbox
+ %% it is something more than single line depth
+ \else
+ \setbox#1\vbox{\unvbox#1\vskip-\var@@temp@a}%
+ \fi
+ \fi
}
+
\def\set@split@topskip@to#1{%
- \splittopskip#1\relax \vfuzz\maxdimen \vbadness\maxdimen
- }
-% \end{macrocode}
-% \end{macro}
-%
-% Macros used in debug mode.
-%
-% \begin{macrocode}
-\def\show@@box#1{%
- \bgroup
- \showboxbreadth=20000\showboxdepth=20000%
- \showbox#1\relax
- \egroup
- }
-\def\wlog@balance@debug#1{\if@balance@debug \wlog{#1}\fi}
-\def\log@box@info#1{<box\the#1>(\the\ht#1+\the\dp#1)x\the\wd#1}
-\let\show@@box@next\@gobble
-% \end{macrocode}
-%
-% To get more or less proper result we need to know about footnotes at
-% the left column end, top floats at the right column top, skips and
-% so on. This part of the package is responsible for such analysis.
-%
-% \begin{macrocode}
-\gdef\analyze@lastbox@box#1{%
- \setbox\flushend@@varbox@a\vbox{%
- \unvbox#1%
- \global\flushend@@lastskip@a\lastskip
- \unskip
- \global\var@@temp@a\lastkern
- \unkern
- \global\flushend@@penalty@a\lastpenalty
- \unpenalty
- \ifdim\lastskip>\z@
- \global\flushend@@lastskip@a\lastskip
- \fi
- \unskip
- \ifdim\lastkern>\z@
- \global\var@@temp@a\lastkern
- \fi
- \unkern
- \ifnum\lastpenalty>\z@
- \global\flushend@@penalty@a\lastpenalty
- \fi
- \unpenalty
- \global\setbox\flushend@@tempbox@a\lastbox
- }%
- \wlog@balance@debug{^^J::analyze@lastbox@box::\log@box@info{#1}%
- ^^J ::unvbox: \log@box@info{\flushend@@varbox@a}%
- ^^J::lastbox: \log@box@info{\flushend@@tempbox@a}%
- ^^J::lastskip: \the\flushend@@lastskip@a;
- lastkern: \the\var@@temp@a;
- lastpenalty: \the\flushend@@penalty@a
- }%
+ \splittopskip=#1\relax
+ \vfuzz=\maxdimen
+ \vbadness=\maxdimen
}
-% \end{macrocode}
-%
-% \begin{macro}{\analyze@leftcolumn@box}\marg{box}
-%
-% Fills:
-% \begin{itemize}
-% \item baselineskip skip from the last boxes to |\flushend@@lastskip@c|
-% \item leftcolumn height without the footnote to |\main@box@height|
-% \item footnote skip to |\main@box@skip|
-% \end{itemize}
-%
-% \begin{macrocode}
+
\gdef\analyze@leftcolumn@box#1{%
+ %%
+ %% Try to find footnotes on the leftcolumn
+ %%
\set@split@topskip@to\z@
\flushend@@lastskip@b\ht#1%
- \wlog@balance@debug{^^Jmainbox: \log@box@info{#1}}%
+ \advance\flushend@@lastskip@b\dp#1%
\setbox\flushend@@varbox@a\vbox{%
\unvbox#1%
\global\flushend@@lastskip@a\lastskip
- \unskip
- \global\flushend@@lastkern@a\lastkern
- \unkern
- \global\flushend@@penalty@a\lastpenalty
- \unpenalty
+ \unskip\unkern\unpenalty
\global\setbox\flushend@@tempbox@a\lastbox
}%
\advance\flushend@@lastskip@b -\ht\flushend@@varbox@a
\advance\flushend@@lastskip@b -\ht\flushend@@tempbox@a
- \wlog@balance@debug{.-box: \log@box@info{\flushend@@varbox@a}%
- ^^J.-lastbox: \log@box@info{\flushend@@tempbox@a}%
- ^^J.-lastskip: \the\flushend@@lastskip@a;
- lastkern: \the\flushend@@lastkern@a;
- lastpenalty: \the\flushend@@penalty@a
- ^^J.-diff: \the\flushend@@lastskip@b
- }%
- \check@@footnoterule@@box\flushend@@tempbox@a\flushend@@lastskip@b\flushend@@varbox@a
- \check@@baselineskip@@skip
- \flushend@@lastskip@a
- \flushend@@lastskip@b
- \flushend@@lastskip@c
- \ifx\check@@footnoterule@@box\check@@baselineskip@@skip
- \else
- \ifvoid\flushend@@tempbox@a
- \ifdim\ht\flushend@@varbox@a>\topskip
- \flushend@@lastskip@b\ht\flushend@@varbox@a
- \var@@temp@a\ht\flushend@@varbox@a
- \loop
- \setbox\flushend@@tempbox@c\vsplit\flushend@@varbox@a to\var@@temp@a
- \ifvoid\flushend@@varbox@a
- \setbox\flushend@@varbox@a\vbox{\unvbox\flushend@@tempbox@c}%
- \advance \var@@temp@a -3\p@
- \else
- \var@@temp@a=-1\p@
- \fi
- \ifdim \var@@temp@a>\z@
- \repeat
- \setbox\flushend@@varbox@a\vbox{\unvbox\flushend@@varbox@a}%
- \setbox\flushend@@tempbox@c\vbox{\unvbox\flushend@@tempbox@c}%
- \advance\flushend@@lastskip@b -\ht\flushend@@varbox@a
- \advance\flushend@@lastskip@b -\ht\flushend@@tempbox@c
- \wlog@balance@debug{..--box: \log@box@info{\flushend@@tempbox@c}%
- ^^J..--lastbox: \log@box@info{\flushend@@varbox@a}%
- ^^J..--diff: \the\flushend@@lastskip@b
- }%
- \check@@footnoterule@@box\flushend@@varbox@a\flushend@@lastskip@b
- \flushend@@tempbox@c
- \check@@baselineskip@@skip\flushend@@lastskip@a\flushend@@lastskip@b
- \flushend@@lastskip@c
- \ifx\check@@footnoterule@@box\check@@baselineskip@@skip
- \else
- \ifdim\ht\flushend@@varbox@a>.5\topskip
- \analyze@lastbox@box\flushend@@varbox@a
- \fi
+ \ifvoid\flushend@@tempbox@a
+ \ifdim\ht\flushend@@varbox@a>\topskip
+ \flushend@@lastskip@b\ht\flushend@@varbox@a
+ \var@@temp@a\ht\flushend@@varbox@a
+ \loop
+ \setbox\flushend@@tempbox@c\vsplit\flushend@@varbox@a to\var@@temp@a
+ \ifvoid\flushend@@varbox@a
\setbox\flushend@@varbox@a\vbox{\unvbox\flushend@@tempbox@c}%
+ \advance\var@@temp@a -3\p@
+ \else
+ \var@@temp@a=-1\p@
\fi
- \else
- \wlog@balance@debug{lastbox: \log@box@info{\flushend@@varbox@a}}%
- \fi
+ \ifdim \var@@temp@a>\z@
+ \repeat
+ \setbox\flushend@@varbox@a\vbox{\unvbox\flushend@@varbox@a}%
+ \setbox\flushend@@tempbox@c\vbox{\unvbox\flushend@@tempbox@c}%
+ \advance\flushend@@lastskip@b -\ht\flushend@@varbox@a
+ \advance\flushend@@lastskip@b -\ht\flushend@@tempbox@c
+ \check@@footnoterule@@box\flushend@@varbox@a\flushend@@lastskip@b
+ \flushend@@tempbox@c
+ \setbox\flushend@@varbox@a\vbox{\unvbox\flushend@@tempbox@c}%
+ \else
+ \global\@footnote@checkfalse
\fi
+ \else
+ \check@@footnoterule@@box\flushend@@tempbox@a\flushend@@lastskip@b\flushend@@varbox@a
+ \fi
+ \if@footnote@check
\ifdim\var@@temp@loop=\ht\flushend@@varbox@a\relax
- \global\advance\var@@loop@iter\@ne
+ \global\advance\var@@loop@iter\@ne
\fi
\var@@temp@loop=\ht\flushend@@varbox@a\relax
\ifnum\var@@loop@iter<3\relax
- \wlog@balance@debug{analyze left col: iteration \number\var@@loop@iter; ht \the\var@@temp@loop}%
+ %% next iteration
\else
- \wlog@balance@debug{analyze left col loop limit!}%
- \ht\flushend@@varbox@a\z@
+ %% loop limit, break loop
+ \ht\flushend@@varbox@a=\z@
\fi
\ifdim\ht\flushend@@varbox@a>\topskip
\expandafter\analyze@leftcolumn@box\expandafter\flushend@@varbox@a
\fi
\fi
}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\get@@footnoterule@@box}
-%
-% Gets dimensions of the box made by |footnoterule| and writes to:
-% |\footnoterule@@box@@ht|, |\footnoterule@@box@@dp|, |\footnoterule@@box@@wd|.
-%
-% \begin{macrocode}
+
\def\get@@footnoterule@@box{%
\set@split@topskip@to\z@
\setbox\flushend@@varbox@a\vbox{\strut
\vskip\z@
\footnoterule
- \unskip\unkern\unpenalty
- \unskip\unkern\unpenalty
+ \unskip@three@kern@penalty
}%
\setbox\flushend@@tempbox@c\vsplit\flushend@@varbox@a to\p@
\xdef\footnoterule@@box@@ht{\the\ht\flushend@@varbox@a}%
@@ -537,19 +477,9 @@
\wlog@balance@debug{:footnoterule: \log@box@info{\flushend@@varbox@a}}%
\setbox\flushend@@tempbox@c\vbox{\unvbox\flushend@@varbox@a}%
}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\check@@footnoterule@@box}\marg{box1}\marg{skip}\marg{box2}
-%
-% Checks if \marg{box1} dimensions equals to |footnoterule| box dimensions.
-% If so and if \marg{skip} is not |\topskip| we guess it is footnote.
-% In that case we define |leftcolumn| height without |footnote| as
-% \marg{box2} height and save it as |\main@box@height|. Skip from text to
-% footnote define as |\main@box@skip|.
-%
-% \begin{macrocode}
+
\long\def\@gobblethree#1#2#3{}
+
\def\check@@footnoterule@@box#1#2#3{%
\ifdim\ht#1=\footnoterule@@box@@ht
\ifdim\dp#1=\footnoterule@@box@@dp
@@ -557,456 +487,400 @@
\ifdim#2=\topskip
\else
\xdef\main@box@height{\the\ht#3}%
+ \xdef\main@box@depth{\the\dp#3}%
\xdef\main@box@skip{\the#2}%
\wlog@balance@debug{^^J:footnoterule found:
main@box <ht=\main@box@height,
skip=\main@box@skip>
}%
\global\let\check@@footnoterule@@box\@gobblethree
- \global\let\check@@baselineskip@@skip\reset@check@@baselineskip@@skip
+ \global\@footnote@checkfalse
\fi
\fi
\fi
\fi
}
+
\let\initial@check@@footnoterule@@box\check@@footnoterule@@box
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\check@@baselineskip@@skip}\marg{dimension1}\marg{dimension2}\marg{var}
-%
-% If both dimensions: \marg{dimension1} and \marg{dimension2} are positive we
-% define by \marg{var} value of \marg{dimension1} as last skip between text lines
-% and deactivate |\check@@baselineskip@@skip| itself.
-%
-% \begin{macrocode}
-\def\check@@baselineskip@@skip#1#2#3{%
- \ifdim#1>\z@
- \ifdim#2>\z@
- \global#3=\the#1%
- \global\let\check@@baselineskip@@skip\@gobblethree
- \fi
- \fi
- }
-\let\initial@check@@baselineskip@@skip\check@@baselineskip@@skip
-% \end{macrocode}
-%
-% In the case we found footnote it is necessary to look for the last skip
-% between text lines again. For that we use
-% |\reset@check@@baselineskip@@skip|. It activates |\check@@baselineskip@@skip|.
-%
-% \begin{macrocode}
-\def\reset@check@@baselineskip@@skip#1#2#3{%
- \global#3=\z@
- \global\let\check@@baselineskip@@skip\initial@check@@baselineskip@@skip
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\analyze@rightcolumn@box}\marg{box}
-%
-% Some guess of possible float or section title at the top of right column.\break
-% Fills:
-% \begin{itemize}
-% \item float height to |\top@@floatbox@ht|
-% \item float skip to |\top@@floatbox@skip|
-% \item head skip to |\top@@section@skip|
-% \end{itemize}
-%
-% \begin{macrocode}
+
\def\analyze@rightcolumn@box#1{%
+ %%
+ %% Looking for the top floats on the right column.
+ %%
+ %% Top box is considered as float if box's height
+ %% is larger then \top@@floatbox@min.
+ %% So, it is a dangerous feature to be used carefully.
+ %%
\bgroup
\xdef\top@@floatbox@ht{\z@}%
- \xdef\top@@floatbox@skip{\z@}%
- \xdef\top@@section@skip{\z@}%
\set@split@topskip@to\z@
\setbox\flushend@@varbox@a\vbox{\strut
\vskip\z@
\unvcopy#1%
}%
\setbox\flushend@@tempbox@c\vsplit\flushend@@varbox@a to\p@
- \wlog@balance@debug{^^J(R)mainbox: \log@box@info{#1}}%
\flushend@@lastskip@a\ht\flushend@@varbox@a
\advance\flushend@@lastskip@a\dp\flushend@@varbox@a
\ifdim\flushend@@lastskip@a>\z@
- \analyze@nonempty@rightcolumn@box
- \fi
- \egroup
- }
-\def\analyze@nonempty@rightcolumn@box{%
- \bgroup
- \var@@temp@a3\p@
- \loop
- \flushend@@lastskip@b\ht\flushend@@varbox@a
- \advance\flushend@@lastskip@b\dp\flushend@@varbox@a
- \setbox\flushend@@tempbox@c\vsplit\flushend@@varbox@a to\var@@temp@a
- \ifvoid\flushend@@tempbox@c
- \advance \var@@temp@a 3\p@
- \ifdim\var@@temp@a>\flushend@@lastskip@b
- \var@@temp@a=-1\p@
- \fi
- \else
- \setbox\flushend@@tempbox@c\vbox{\unvbox\flushend@@tempbox@c}%
- \ifdim\ht\flushend@@tempbox@c>\top@@floatbox@min
- \advance\flushend@@lastskip@b -\ht\flushend@@tempbox@c
- \advance\flushend@@lastskip@b -\dp\flushend@@tempbox@c
- \advance\flushend@@lastskip@b -\ht\flushend@@varbox@a
- \advance\flushend@@lastskip@b -\dp\flushend@@varbox@a
- \xdef\top@@floatbox@skip{\the\flushend@@lastskip@b}%
- \flushend@@lastskip@b\flushend@@lastskip@a
- \advance\flushend@@lastskip@b -\ht\flushend@@varbox@a
- \advance\flushend@@lastskip@b -\top@@floatbox@skip
- \xdef\top@@floatbox@ht{\the\flushend@@lastskip@b}%
- \var@@temp@a=3\p@
- \else
- \advance\flushend@@lastskip@b -\ht\flushend@@tempbox@c
- \advance\flushend@@lastskip@b -\dp\flushend@@tempbox@c
- \advance\flushend@@lastskip@b -\ht\flushend@@varbox@a
- \advance\flushend@@lastskip@b -\dp\flushend@@varbox@a
- \ifdim\ht\flushend@@tempbox@c>\topskip
- \else
- \xdef\top@@section@skip{\the\flushend@@lastskip@b}%
- \fi
- \var@@temp@a=-1\p@
- \fi
- \fi
- \ifdim \var@@temp@a>\z@
- \repeat
- \ifvoid\flushend@@tempbox@c
- \else
- \ifdim\top@@section@skip>\z@
- \else
- \ifdim\ht\flushend@@tempbox@c>\z@
- \setbox\flushend@@varbox@a\vbox{\unvbox\flushend@@tempbox@c}%
- \fi
+ %% analyze non empty rightcolumn box
+ \var@@temp@a=3\p@
+ \loop
+ \setbox\flushend@@tempbox@c\vsplit\flushend@@varbox@a to\var@@temp@a
\flushend@@lastskip@b\ht\flushend@@varbox@a
- \var@@temp@a=3\p@
- \loop
- \setbox\flushend@@tempbox@c\vsplit\flushend@@varbox@a to\var@@temp@a
- \ifvoid\flushend@@tempbox@c
- \advance \var@@temp@a 3\p@
- \ifdim\var@@temp@a>\flushend@@lastskip@b
- \var@@temp@a=-1\p@
- \fi
- \else
- \ifdim\ht\flushend@@tempbox@c<\z@
+ \advance\flushend@@lastskip@b\dp\flushend@@varbox@a
+ \ifvoid\flushend@@tempbox@c
+ \advance\var@@temp@a by3\p@
+ \ifdim\var@@temp@a>\flushend@@lastskip@b
+ %% reach column end, break loop
+ \var@@temp@a=-1\p@
+ \fi
+ \else
+ \setbox\flushend@@tempbox@c\vbox{\unvbox\flushend@@tempbox@c}%
+ \ifdim\ht\flushend@@tempbox@c>\top@@floatbox@min
+ %% found float; set height; look for the next
+ \setbox\flushend@@tempbox@a\vbox{\splitdiscards}%
+ \ifvoid\flushend@@tempbox@a
\else
- \var@@temp@a=-1\p@
+ \advance\flushend@@lastskip@b \ht\flushend@@tempbox@a
+ \advance\flushend@@lastskip@b \dp\flushend@@tempbox@a
\fi
- \fi
- \ifdim \var@@temp@a>\z@
- \repeat
- \loop
- \setbox\flushend@@varbox@a\vbox{%
- \unvbox\flushend@@tempbox@c
- \unskip\unkern\unpenalty
- \unskip\unkern\unpenalty
- \unskip\unkern\unpenalty
- \setbox\flushend@@tempbox@c\lastbox
- }%
- \flushend@@lastskip@b\ht\flushend@@varbox@a
- \setbox\flushend@@varbox@a\vbox{%
- \unvbox\flushend@@varbox@a
- \unskip\unkern\unpenalty
- \unskip\unkern\unpenalty
- \unskip\unkern\unpenalty
- }%
- \advance\flushend@@lastskip@b -\ht\flushend@@varbox@a
- \ifdim\flushend@@lastskip@b>\topskip
- \xdef\top@@section@skip{\the\flushend@@lastskip@b}%
- \fi
- \ifdim\var@@temp@loop=\ht\flushend@@varbox@a\relax
- \advance\var@@loop@iter\@ne
- \fi
- \var@@temp@loop=\ht\flushend@@varbox@a\relax
- \ifnum\var@@loop@iter<3\relax
- \wlog@balance@debug{analyze right col: iteration \number\var@@loop@iter; ht \the\var@@temp@loop}%
+ \advance\flushend@@lastskip@b -\flushend@@lastskip@a
+ \flushend@@lastskip@b=-\flushend@@lastskip@b
+ \xdef\top@@floatbox@ht{\the\flushend@@lastskip@b}%
+ \var@@temp@a=3\p@
\else
- \wlog@balance@debug{analyze right col loop limit!}%
- \ht\flushend@@varbox@a=\z@
+ %% break loop
+ \var@@temp@a=-1\p@
\fi
- \ifdim\ht\flushend@@varbox@a>2\topskip
- \setbox\flushend@@tempbox@c\vbox{\unvbox\flushend@@varbox@a}%
- \repeat
- \fi
+ \fi
+ \ifdim \var@@temp@a>\z@
+ \repeat
\fi
\egroup
}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\combine@columns@for@balance}
-%
-% Collects both columns to one box removing left column footnotes
-% and right column top float and adding right skip in between them.
-%
-% \begin{macrocode}
-\def\combine@columns@for@balance{%
- \setbox\@outputbox\vbox{\strut
- \vskip\z@
- \unvbox\@outputbox
- }%
- \set@split@topskip@to\z@
- \setbox\flushend@@tempbox@c\vsplit\@outputbox to\p@
- \if@auto@baselineskip
- %% Trying guess baselineskip value on column break
- \ifdim\top@@floatbox@skip>\z@
- \setbox\flushend@@tempbox@c\vsplit\@outputbox to\top@@floatbox@ht
- \setbox\flushend@@tempbox@c\vbox{\unvbox\flushend@@tempbox@c}%
- \fi
- \setbox\@tempboxa\vbox{%
- \unvbox\flushend@@varbox@a
- \unskip\unkern\unpenalty
- \hrule\@height\flushend@@page@rule width\columnwidth
- \vskip-\flushend@@page@rule
- \hrule\@height\z@ width\columnwidth
- \vskip\flushend@@lastskip@c
- \the\atColsBreak
- \ifdim\top@@section@skip>\top@@skip@@limit
- \vskip\top@@section@skip
- \fi
- \unvbox\@outputbox
- \remove@lastbox@at@balancing
- \the\atColsEnd
- }%
- \ifdim\top@@floatbox@skip>\z@
- \setbox\@outputbox\vbox{\unvbox\flushend@@tempbox@c}%
- \fi
- \else
- %% Ignore baselineskip value on column break
- \setbox\@tempboxa\vbox{%
- \unvbox\flushend@@varbox@a
- \unskip\unkern\unpenalty
- \hrule\@height\flushend@@page@rule width\columnwidth
- \vskip-\flushend@@page@rule
- \hrule\@height\z@ width\columnwidth
- \the\atColsBreak
- \unvbox\@outputbox
- \remove@lastbox@at@balancing
- \the\atColsEnd
- }%
- \fi
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\set@outputbox@with@footnote}
-%
-% Calculates break position and formats balanced columns in the |\@outputbox|
-% with footnotes.
-%
-% \begin{macrocode}
-\def\set@outputbox@with@footnote{%
- %% footnote in left column
- \@tempdimb\ht\@tempboxa
- \ifdim\top@@floatbox@skip>\z@
- \advance\@tempdimb \top@@floatbox@skip
+
+\def\set@outputbox@with@footnote@and@float{%
+ %%
+ %% The main unit formatting balanced columns.
+ %%
+ %% \flushend@@tempbox@a - left column
+ %% \flushend@@tempbox@c - left column with natural dimensions
+ %% \flushend@@varbox@a - right column
+ %% \flushend@@varbox@c - right column with natural dimensions
+ %% \flushend@@floatbox - rightcolumn top float
+ %% \@leftcolumn - void or leftcolumn footnote
+ %%
+ \@tempdimb\ht\flushend@@varbox@lastpage
+ \ifdim\top@@floatbox@ht>\z@
+ \advance\@tempdimb \textfloatsep
\advance\@tempdimb \top@@floatbox@ht
\fi
- \advance\@tempdimb \main@box@skip
- \advance\@tempdimb \ht\@leftcolumn
- \@tempdimb .5\@tempdimb
- \advance\@tempdimb -\main@box@skip
- \advance\@tempdimb -\ht\@leftcolumn
+ \ifdim\main@box@skip>\z@
+ \advance\@tempdimb \main@box@skip
+ \advance\@tempdimb \ht\@leftcolumn
+ \fi
+ \@tempdimb=.5\@tempdimb
+ \ifdim\@tempdimb>\@colht
+ \@tempdimb=\@colht
+ \fi
+ \ifdim\main@box@skip>\z@
+ \advance\@tempdimb -\main@box@skip
+ \advance\@tempdimb -\ht\@leftcolumn
+ \fi
\set@split@topskip@to\topskip
\loop
- \setbox\flushend@@varbox@a\copy\@tempboxa
+ \xdef\saved@tempdimb{\the\@tempdimb}%
+ \setbox\flushend@@varbox@a\copy\flushend@@varbox@lastpage
\setbox\flushend@@tempbox@a\vsplit\flushend@@varbox@a to\@tempdimb
- \setbox\flushend@@tempbox@c\vbox{\unvcopy\flushend@@tempbox@a}%
- \ifdim\top@@floatbox@skip>\z@
- \setbox\flushend@@varbox@c\vbox{%
- \unvcopy\@outputbox
- \vskip\top@@floatbox@skip
+ \ifdim\main@box@skip>\z@
+ \setbox\flushend@@tempbox@c\vbox{%
+ \unvbox\flushend@@tempbox@a
+ \vskip\main@box@skip
+ \vskip\z@ plus\p@
+ \unvcopy\@leftcolumn
+ }%
+ \else
+ \setbox\flushend@@tempbox@c\vbox{\unvbox\flushend@@tempbox@a}%
+ \fi
+ \setbox\flushend@@tempbox@a\vbox to\@tempdimb{\unvcopy\flushend@@tempbox@c}%
+ \xdef\var@@leftcolumn@badness{\the\badness}%
+ \ifdim\top@@floatbox@ht>\z@
+ \setbox\flushend@@varbox@c\vbox{%
+ \unvcopy\flushend@@floatbox
+ \vskip\textfloatsep
+ \vskip\z@ plus\p@ minus\p@
\unvbox\flushend@@varbox@a
}%
\else
\setbox\flushend@@varbox@c\vbox{\unvbox\flushend@@varbox@a}%
\fi
+ \setbox\flushend@@varbox@a\vbox to\@tempdimb{\unvcopy\flushend@@varbox@c}%
+ \xdef\var@@rightcolumn@badness{\the\badness}%
\var@@temp@spread=\ht\flushend@@tempbox@c
\advance\var@@temp@spread by\dp\flushend@@tempbox@c
- \advance\var@@temp@spread \main@box@skip
- \advance\var@@temp@spread \ht\@leftcolumn
\advance\var@@temp@spread by-\ht\flushend@@varbox@c
\advance\var@@temp@spread by-\dp\flushend@@varbox@c
- \wlog@balance@debug{Left x: \the\ht\flushend@@tempbox@a
- +\the\dp\flushend@@tempbox@a=\the\ht\flushend@@varbox@a
- +\the\dp\flushend@@varbox@a::\the\@tempdimb
- ^^JLeft 0: \the\ht\flushend@@tempbox@c
- +\the\dp\flushend@@tempbox@c::\the\@tempdimb
- ^^JRight x: \the\ht\flushend@@varbox@c
- +\the\dp\flushend@@varbox@c=\the\ht\flushend@@varbox@a
- +\the\dp\flushend@@varbox@a::\the\@tempdimb
- ^^JExtra height:\the\var@@temp@spread\space when \the\@tempdimb
- }%
+ \wlog@balance@debug{-----
+ ^^JLeft: \the\ht\flushend@@tempbox@c
+ +\the\dp\flushend@@tempbox@c\space / \var@@leftcolumn@badness
+ ^^JRight: \the\ht\flushend@@varbox@c
+ +\the\dp\flushend@@varbox@c\space / \var@@rightcolumn@badness
+ ^^JSplit: \the\@tempdimb
+ ^^JExtra height: \the\var@@temp@spread
+ }%
+ \ifdim\main@box@skip>\z@
+ \wlog@balance@debug{Footnote: \the\dimexpr\main@box@skip + \the\ht\@leftcolumn\relax}%
+ \fi
+ \ifdim\top@@floatbox@ht>\z@
+ \wlog@balance@debug{Float: \the\dimexpr\the\ht\flushend@@floatbox + \textfloatsep\relax}%
+ \fi
+ \ifnum\var@@leftcolumn@badness<\flushend@@column@badness
+ \ifnum\var@@rightcolumn@badness<\flushend@@column@badness
+ \ifdim\main@box@skip>\z@
+ \advance\@tempdimb -\main@box@skip
+ \advance\@tempdimb -\ht\@leftcolumn
+ \fi
+ \var@@temp@spread=\z@
+ \fi
+ \fi
+ \ifdim\var@@temp@spread<\z@
+ \if@left@column@spread
+ \if@right@column@shrink
+ \ifdim\dimexpr\var@@temp@spread+\pageshrink>\z@
+ \var@@temp@a=\dimexpr\ht\flushend@@tempbox@c-0.5\var@@temp@spread\relax
+ \else
+ \var@@temp@a=-\dimexpr\var@@temp@spread+.5\pageshrink\relax
+ \fi
+ \setbox\flushend@@varbox@a\vbox to\var@@temp@a{\unvcopy\flushend@@tempbox@c}%
+ \ifnum\badness<\flushend@@column@badness
+ \@tempdimb=\var@@temp@a
+ \ifdim\main@box@skip>\z@
+ \advance\@tempdimb -\main@box@skip
+ \advance\@tempdimb -\ht\@leftcolumn
+ \fi
+ \var@@temp@spread=\z@
+ \fi
+ \wlog{[leftcolumn badness]: \number\badness\space on \the\var@@temp@a}%
+ \setbox\flushend@@varbox@a\vbox to\var@@temp@a{\unvcopy\flushend@@varbox@c}%
+ \wlog{[rightcolumn badness]: \number\badness\space on \the\var@@temp@a}%
+ \else
+ \setbox\flushend@@varbox@a\vbox to\ht\flushend@@varbox@c{%
+ \unvcopy\flushend@@tempbox@c
+ }%
+ \ifnum\badness<\flushend@@column@badness
+ \@tempdimb=\ht\flushend@@varbox@c
+ \ifdim\main@box@skip>\z@
+ \advance\@tempdimb -\main@box@skip
+ \advance\@tempdimb -\ht\@leftcolumn
+ \fi
+ \var@@temp@spread=\z@
+ \fi
+ \wlog{[leftcolumn badness]: \number\badness on \the\ht\flushend@@varbox@c}%
+ \setbox\flushend@@varbox@a\vbox to\ht\flushend@@varbox@c{%
+ \unvcopy\flushend@@varbox@c
+ }%
+ \wlog{[rightcolumn badness]: \number\badness on \the\ht\flushend@@varbox@c}%
+ \fi
+ \else
+ \if@right@column@shrink
+ \ifdim\dimexpr\var@@temp@spread+\pageshrink<\z@
+ \else
+ \@tempdimb=\ht\flushend@@tempbox@c
+ \ifdim\main@box@skip>\z@
+ \advance\@tempdimb -\main@box@skip
+ \advance\@tempdimb -\ht\@leftcolumn
+ \fi
+ \var@@temp@spread=\z@
+ \fi
+ \fi
+ \fi
+ \else
+ \ifdim\var@@temp@spread>\z@
+ \ifdim\dimexpr\@tempdimb+\p@\relax>\@colht
+ \@tempdimb=\@colht
+ \ifdim\main@box@skip>\z@
+ \advance\@tempdimb -\main@box@skip
+ \advance\@tempdimb -\ht\@leftcolumn
+ \fi
+ \var@@temp@spread=\z@
+ \fi
+ \fi
+ \fi
\ifdim\var@@temp@spread<\z@
\advance\@tempdimb 1\p@
\repeat
- \flushend@@lastskip@a\the\ht\flushend@@tempbox@c
- \advance\flushend@@lastskip@a \main@box@skip
- \advance\flushend@@lastskip@a \ht\@leftcolumn
- \flushend@@lastskip@b\the\@tempdimb
- \setbox\flushend@@tempbox@a\vsplit\@tempboxa to\@tempdimb
- \setbox\@leftcolumn\vbox to\@tempdima{%
- \vbox to \flushend@@lastskip@a{%
- \unvbox\flushend@@tempbox@a
- \vskip\main@box@skip
- \unvbox\@leftcolumn
- \vss
- }%
- \hrule\@height\flushend@@page@rule width\textwidth
- \vskip-\flushend@@page@rule
- \hrule\@height\z@ width\columnwidth
- \vss
- }%
- \global\ht\@leftcolumn=\the\@tempdima
+ %% final construction of the lastpage
\wlog{- LAST -%
^^JExtra skip:\the\var@@temp@spread
- ^^JLeft:\the\ht\@leftcolumn/\the\dp\@leftcolumn
- ^^JRight:\the\ht\@tempboxa/\the\dp\@tempboxa
+ ^^JLeft:\the\ht\flushend@@tempbox@c/\the\dp\flushend@@tempbox@c
+ ^^JRight:\the\ht\flushend@@varbox@c/\the\dp\flushend@@varbox@c
+ ^^JSplit: \saved@tempdimb
^^JOutput:\the\@tempdimb
+ ^^JPageshrink: \the\pageshrink
+ ^^JPagestretch: \the\pagestretch
+ ^^J@colht:\the\@colht
}%
- \ifdim\top@@floatbox@skip>\z@
- \setbox\@outputbox\vbox to\@tempdima{%
- \if@right@column@spread
- \vbox spread\var@@temp@spread{%
- \unvbox\@outputbox
- \vskip\top@@floatbox@skip
- \unvbox\@tempboxa
- }%
- \else
- \vbox spread\var@@temp@spread{%
- \unvbox\@outputbox
- \vskip\top@@floatbox@skip
- \unvbox\@tempboxa
+ \setbox\flushend@@tempbox@c\vsplit\flushend@@varbox@lastpage to\saved@tempdimb
+ \ifdim\main@box@skip>\z@
+ \@tempdimb=\dimexpr\@tempdimb+\main@box@skip+\ht\@leftcolumn\relax
+ \setbox\@leftcolumn\vbox to\@tempdimb{%
+ \flushend@@lastskip@a=\dimexpr
+ \@tempdimb
+ -\ht\flushend@@tempbox@c
+ -\main@box@skip
+ -\ht\@leftcolumn
+ \relax
+ \unvbox\flushend@@tempbox@c
+ \vskip\main@box@skip
+ \vskip\z@ plus\p@
+ \unvbox\@leftcolumn
+ \prevdepth\z@
+ \hrule\@height\flushend@@page@rule width\textwidth
+ \vskip-\flushend@@page@rule
+ \ifdim\flushend@@lastskip@a>\z@
+ \if@left@column@spread
+ \else
\vss
- }%
+ \fi
+ \else
+ \ifdim\flushend@@lastskip@a<\z@
+ \if@left@column@shrink
+ \else
+ \vss
+ \fi
+ \fi
\fi
- \vss
}%
\else
- \setbox\@outputbox\vbox to\@tempdima{%
- \if@right@column@spread
- \vbox spread\var@@temp@spread{%
- \unvbox\@tempboxa
- }%
+ \setbox\@leftcolumn\vbox to\@tempdimb{%
+ \flushend@@lastskip@a=\dimexpr
+ \@tempdimb-\ht\flushend@@tempbox@c
+ \relax
+ \var@@temp@spread=\dp\flushend@@tempbox@c
+ \unvbox\flushend@@tempbox@c
+ \ifdim\var@@temp@spread>\dp\strutbox
\else
- \vbox spread\var@@temp@spread{%
- \unvbox\@tempboxa
+ \vskip-\var@@temp@spread
+ \fi
+ \prevdepth\z@
+ \hrule\@height\flushend@@page@rule width\textwidth
+ \vskip-\flushend@@page@rule
+ \ifdim\flushend@@lastskip@a>\z@
+ \if@left@column@spread
+ \else
\vss
- }%
+ \fi
+ \else
+ \ifdim\flushend@@lastskip@a<\z@
+ \if@left@column@shrink
+ \else
+ \vss
+ \fi
+ \fi
\fi
- \vss
}%
\fi
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\set@outputbox@without@footnote}
-%
-% Calculates break position and formats balanced columns in the |\@outputbox|
-% without footnotes.
-%
-% \begin{macrocode}
-\def\set@outputbox@without@footnote{%
- %% no footnote in left column
- \@tempdimb \ht\@tempboxa
- \ifdim\top@@floatbox@skip>\z@
- \advance\@tempdimb \top@@floatbox@skip
- \advance\@tempdimb \top@@floatbox@ht
- \fi
- \@tempdimb .5\@tempdimb
- \set@split@topskip@to\topskip
- \loop
- \setbox\flushend@@varbox@a\copy\@tempboxa
- \setbox\flushend@@tempbox@a\vsplit\flushend@@varbox@a to\@tempdimb
- \setbox\flushend@@tempbox@c\vbox{\unvcopy\flushend@@tempbox@a}%
- \ifdim\top@@floatbox@skip>\z@
- \setbox\flushend@@varbox@c\vbox{%
- \unvcopy\@outputbox
- \vskip\top@@floatbox@skip
- \unvbox\flushend@@varbox@a
- }%
- \else
- \setbox\flushend@@varbox@c\vbox{\unvbox\flushend@@varbox@a}%
- \fi
- \var@@temp@spread=\ht\flushend@@tempbox@c
- \advance\var@@temp@spread by\dp\flushend@@tempbox@c
- \advance\var@@temp@spread by-\ht\flushend@@varbox@c
- \advance\var@@temp@spread by-\dp\flushend@@varbox@c
- \wlog@balance@debug{Left x: \the\ht\flushend@@tempbox@a
- +\the\dp\flushend@@tempbox@a=\the\ht\flushend@@varbox@a
- +\the\dp\flushend@@varbox@a::\the\@tempdimb
- ^^JLeft 0: \the\ht\flushend@@tempbox@c
- +\the\dp\flushend@@tempbox@c::\the\@tempdimb
- ^^JRight x: \the\ht\flushend@@varbox@c
- +\the\dp\flushend@@varbox@c=\the\ht\flushend@@varbox@a
- +\the\dp\flushend@@varbox@a::\the\@tempdimb
- ^^JExtra height:\the\var@@temp@spread\space when \the\@tempdimb
- }%
- \ifdim\var@@temp@spread<\z@ \advance\@tempdimb 1\p@ \repeat
- \wlog{- LAST -%
- ^^JExtra skip:\the\var@@temp@spread
- ^^JLeft:\the\ht\flushend@@tempbox@c/\the\dp\flushend@@tempbox@c
- ^^JRight:\the\ht\flushend@@varbox@c/\the\dp\flushend@@varbox@c
- ^^JOutput:\the\@tempdimb
- }%
- \setbox\flushend@@tempbox@c\vsplit\@tempboxa to\@tempdimb
- \setbox\flushend@@varbox@c\vbox{\unvbox\flushend@@tempbox@c}%
- \setbox\@leftcolumn\vbox to\@tempdima{%
- \vbox to\@tempdimb{\unvbox\flushend@@varbox@c\vss}%
- \hrule\@height\flushend@@page@rule width\textwidth
- \vskip-\flushend@@page@rule
- \hrule\@height\z@ width\textwidth
- \vss
- }%
+ \wlog{FLUSHEND [output]: \the\@tempdimb
+ ^^JFLUSHEND [leftcolumn badness]: \number\badness
+ }%
\global\ht\@leftcolumn=\the\@tempdima
- \ifdim\top@@floatbox@skip>\z@
- \setbox\@outputbox\vbox to\@tempdima{%
- \if@right@column@spread
- \vbox spread\var@@temp@spread{%
- \unvbox\@outputbox
- \vskip\top@@floatbox@skip
- \unvbox\@tempboxa
- }%
- \else
- \vbox spread\var@@temp@spread{%
- \unvbox\@outputbox
- \vskip\top@@floatbox@skip
- \unvbox\@tempboxa
+ \ifdim\top@@floatbox@ht>\z@
+ \setbox\@outputbox\vbox to\@tempdimb{%
+ \flushend@@lastskip@a=\dimexpr
+ \@tempdimb
+ -\ht\flushend@@floatbox
+ -\textfloatsep
+ -\ht\flushend@@varbox@lastpage
+ \relax
+ \unvbox\flushend@@floatbox
+ \vskip\textfloatsep
+ \vskip\z@ plus\p@ minus\p@
+ \unvbox\flushend@@varbox@lastpage
+ \ifdim\flushend@@lastskip@a>\z@
+ \if@right@column@spread
+ \else
\vss
- }%
+ \fi
+ \else
+ \ifdim\flushend@@lastskip@a<\z@
+ \if@right@column@shrink
+ \else
+ \vss
+ \fi
+ \fi
\fi
- \vss
}%
\else
- \setbox\@outputbox\vbox to\@tempdima{%
- \if@right@column@spread
- \vbox spread\var@@temp@spread{%
- \unvbox\@tempboxa
- }%
- \else
- \vbox spread\var@@temp@spread{%
- \unvbox\@tempboxa
+ \setbox\@outputbox\vbox to\@tempdimb{%
+ \flushend@@lastskip@a=\dimexpr
+ \@tempdimb-\ht\flushend@@varbox@lastpage
+ \relax
+ \unvbox\flushend@@varbox@lastpage
+ \ifdim\flushend@@lastskip@a>\z@
+ \if@right@column@spread
+ \else
\vss
- }%
+ \fi
+ \else
+ \ifdim\flushend@@lastskip@a<\z@
+ \if@right@column@shrink
+ \else
+ \vss
+ \fi
+ \fi
\fi
- \vss
}%
\fi
+ \wlog{FUSHEND [rightcolumn badness]: \number\badness}%
+ \global\ht\@outputbox=\the\@tempdima
}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\last@outputdblcol@modern}
-%
-% Columns balancing of the twocolumn mode page (modern algorithm).
-% It is maybe not so safe for text moving or missing at all
-% as it uses some heuristic technique to find footnotes, last skip between lines
-% at left column and floats or section like heads at right column top
-% for replacing them (except heads of course) to other places in text.
-%
-% \begin{macrocode}
-\def\last@outputdblcol@modern{%
+
+\newdimen\oldbreak@skip
+
+\def\combine@columns@for@balance{%
+ %%
+ %% Combines lastpage columns for balancing.
+ %%
+ \setbox\flushend@@tempbox@a\vbox{\pagediscards}%
+ \oldbreak@skip=\ht\flushend@@tempbox@a
+ \advance\oldbreak@skip by\dp\flushend@@tempbox@a
+ \setbox\@outputbox\vbox{\strut
+ \vskip\z@
+ \unvbox\@outputbox
+ }%
+ \set@split@topskip@to\z@
+ %% Removes topskip
+ \setbox\flushend@@tempbox@c\vsplit\@outputbox to\p@
+ \ifdim\top@@floatbox@ht>\z@
+ %% removes top float from right column (if option enabled)
+ \setbox\flushend@@floatbox\vsplit\@outputbox to\top@@floatbox@ht
+ \setbox\flushend@@floatbox\vbox{\unvbox\flushend@@floatbox}%
+ \fi
+ \setbox\flushend@@varbox@lastpage\vbox{%
+ \remove@empty@lastbox@at@balancing\flushend@@varbox@a
+ \unvbox\flushend@@varbox@a
+ \hrule\@height\flushend@@page@rule width\columnwidth
+ \vskip-\flushend@@page@rule
+ \hrule\@height\z@ width\columnwidth
+ \penalty\z@
+ \ifdim\var@@temp@a>\z@
+ \ifdim\var@@temp@a>\dp\strutbox
+ \else
+ \vskip\var@@temp@a
+ \fi
+ \fi
+ \vskip\oldbreak@skip
+ \the\atColsBreak
+ \remove@empty@lastbox@at@balancing\@outputbox
+ \unvbox\@outputbox
+ \the\atColsEnd
+ }%
+ }
+
+\def\last@outputdblcol{%
+ %%
+ %% Redefined \@outputdblcol with columns balancing.
+ %%
\if@firstcolumn
\global \@firstcolumnfalse
\global\setbox\@leftcolumn\copy\@outputbox
@@ -1032,216 +906,57 @@
\advance\@tempdima by\dp\@leftcolumn
\set@split@topskip@to\topskip
\var@@temp@spread=\wd\@outputbox
- \get@@footnoterule@@box
- \xdef\main@box@height{\the\ht\@leftcolumn}%
+ \xdef\top@@floatbox@ht{\z@}%
\xdef\main@box@skip{\z@}%
- \reset@check@@baselineskip@@skip\relax\relax\flushend@@lastskip@c
- \setbox\flushend@@varbox@a\vbox{\unvcopy\@leftcolumn}%
- \var@@loop@iter\z@ \var@@temp@loop\z@
- \analyze@leftcolumn@box\flushend@@varbox@a
- \setbox\flushend@@varbox@a\vbox{\unvcopy\@outputbox}%
- \var@@loop@iter\z@ \var@@temp@loop\z@
- \analyze@rightcolumn@box\flushend@@varbox@a
- \ifdim\main@box@skip>\z@
- %% footnote in left column
- \set@split@topskip@to\z@
- \setbox\flushend@@varbox@a\vsplit\@leftcolumn to\main@box@height
- \else
- %% no footnote in left column
- \setbox\flushend@@varbox@a\box\@leftcolumn
- \fi
\ifdim\var@@temp@spread>\z@
%% rightcolumn non empty
- \combine@columns@for@balance
- \else
- %% rightcolumn empty
- \setbox\@tempboxa\vbox{%
- \unvbox\flushend@@varbox@a
- \remove@lastbox@at@balancing
- \the\atColsEnd
- }%
- \fi
- \ifdim\main@box@skip>\z@
- %% footnote in left column
- \set@outputbox@with@footnote
- \else
- %% no footnote in left column
- \set@outputbox@without@footnote
- \fi
- \setbox\@outputbox \vbox {%
- \hb@xt@\textwidth {%
- \hb@xt@\columnwidth {%
- \fmt@box@adds{\box\@leftcolumn}\hss}%
- \hfil
- \vrule \@width\columnseprule
- \hfil
- \hb@xt@\columnwidth {%
- \fmt@box@adds{\box\@outputbox}\hss}%
- }%
- }%
- \global\let\@outputdblcol\saved@orig@@outputdblcol
- \global\atColsEnd{}%
- \ifvoid\hold@viper
- \else
- \setbox\@outputbox\vbox{\box\hold@viper\box\@outputbox}%
- \fi
- \@combinedblfloats
- \csname @setmarks\endcsname
- \@outputpage
- \begingroup
- \@dblfloatplacement
- \@startdblcolumn
- \@whilesw\if@fcolmade\fi
- {\@outputpage\@startdblcolumn}%
- \ifvoid\@viper
- \else
- \global\setbox\@viper\vbox{%
- \vskip-\stripsep
- \unvbox\@viper
- }%
- \csname @viperoutput\endcsname
- \fi
- \endgroup
- \fi
- }
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\last@outputdblcol@old}
-%
-% Columns balancing of the twocolumn mode page (ancient algorithm).
-% It is maybe not so good in some cases but maybe more safe for text
-% moving or missing at all.
-%
-% \begin{macrocode}
-\def\last@outputdblcol@ancient{%
- \if@firstcolumn
- \global\@firstcolumnfalse
- \global\setbox\@leftcolumn\box\@outputbox
- \else
- \global\@firstcolumntrue
- \@tempdima\ht\@leftcolumn
- \set@split@topskip@to\topskip
- \if@auto@baselineskip
- \setbox\@tempboxa\vbox{%
- \unvcopy\@leftcolumn
- \global\flushend@@lastskip@c\lastskip
- \global\flushend@@lastskip@b\lastskip
- \loop
- \global\flushend@@lastskip@a\flushend@@lastskip@b
- \unskip\unpenalty
- \global\flushend@@lastskip@b\lastskip
- \global\advance\flushend@@lastskip@c by\lastskip
- \ifdim\flushend@@lastskip@b=-\flushend@@lastskip@a
- \global\advance\flushend@@lastskip@c by-\lastskip
+ \setbox\flushend@@varbox@a\vbox{\unvcopy\@outputbox}%
+ \ifdim\dimexpr\@colht-\ht\flushend@@varbox@a>\z@\relax
+ \if@footnote@check
+ \get@@footnoterule@@box
+ \xdef\main@box@height{\the\ht\@leftcolumn}%
+ \setbox\flushend@@varbox@a\vbox{\unvcopy\@leftcolumn}%
+ \var@@loop@iter\z@ \var@@temp@loop\z@
+ \analyze@leftcolumn@box\flushend@@varbox@a
+ \fi
+ \ifdim\top@@floatbox@min<\maxdimen
+ \setbox\flushend@@varbox@a\vbox{\unvcopy\@outputbox}%
+ \var@@loop@iter\z@ \var@@temp@loop\z@
+ \analyze@rightcolumn@box\flushend@@varbox@a
+ \fi
+ \ifdim\main@box@skip>\z@
+ %% footnote in left column
+ \set@split@topskip@to\z@
+ \setbox\flushend@@varbox@a\vsplit\@leftcolumn to\main@box@height
\else
- \repeat
- \ifdim\flushend@@lastskip@b=-\flushend@@lastskip@a
- \ifdim\flushend@@lastskip@b=\z@
- \setbox\flushend@@varbox@a\lastbox
- \global\advance\flushend@@lastskip@c by\ht\flushend@@varbox@a
- \global\advance\flushend@@lastskip@c by\lastskip
- \unskip\unpenalty
- \setbox\flushend@@varbox@a\lastbox
- \global\advance\flushend@@lastskip@c by\dp\flushend@@varbox@a
- \else
- \global\flushend@@lastskip@c\lastskip
- \global\advance\flushend@@lastskip@c by\topskip
- \fi
+ %% no footnote in left column
+ \setbox\flushend@@varbox@a\box\@leftcolumn
\fi
- \global\advance\flushend@@lastskip@c by-\topskip
- }%
- \setbox\@tempboxa\vbox{%
- \unvbox\@leftcolumn
- \unskip\unpenalty
- \vskip\flushend@@lastskip@c
- \hrule\@height\flushend@@page@rule width\columnwidth
- \vskip-\flushend@@page@rule
- \hrule\@height\z@ width\textwidth
- \the\atColsBreak
- \unvbox\@outputbox
- \remove@lastbox@at@balancing
- \the\atColsEnd
- }%
- \else
- \setbox\@tempboxa\vbox{%
- \unvbox\@leftcolumn
- \setbox\z@\lastbox
- \unskip
- \hrule\@height\flushend@@page@rule width\columnwidth
- \vskip-\flushend@@page@rule
- \hrule\@height\z@ width\textwidth
- \the\atColsBreak
- \unvbox\@outputbox
- \remove@lastbox@at@balancing
- \the\atColsEnd
- }%
- \fi
- \@tempdimb .5\ht\@tempboxa
- \loop
- \setbox\flushend@@tempbox@a\copy\@tempboxa
- \setbox\flushend@@tempbox@c\vbox to\@tempdimb{%
- \vsplit\flushend@@tempbox@a to\@tempdimb
- \vss
- \vsplit\flushend@@tempbox@a to\@tempdimb
- }%
- \wlog{Extra height:\the\ht\flushend@@tempbox@a\space when \the\@tempdimb}%
- \ifvoid\flushend@@tempbox@a
+ \combine@columns@for@balance
+ \else
+ \xdef\main@box@skip{\maxdimen}%
+ \fi
\else
- \advance\@tempdimb 1\p@
- \repeat
- \loop
- \setbox\flushend@@tempbox@a\copy\@tempboxa
- \setbox\flushend@@tempbox@c\vbox to\@tempdimb{%
- \vsplit\flushend@@tempbox@a to\@tempdimb
- \vss
- }%
- \wlog{(2)Left:\the\ht\flushend@@tempbox@c\space
- Right:\the\ht\flushend@@tempbox@a\space
- Output:\the\@tempdimb
- }%
- \ifdim\ht\flushend@@tempbox@c<\ht\flushend@@tempbox@a
- \@tempdimb=\the\ht\flushend@@tempbox@a
- \repeat
- \wlog{- LAST -^^JExtra skip: \the\z@
- ^^JLeft:\the\ht\flushend@@tempbox@c
- ^^JRight:\the\ht\flushend@@tempbox@a
- ^^JOutput:\the\@tempdimb
- }%
- \setbox\flushend@@tempbox@c\vbox to\@tempdimb{%
- \vsplit\@tempboxa to\@tempdimb
- \vss
- }%
- \setbox\@leftcolumn\vbox to\@tempdima{%
- \fmt@vbox@adds[\columnwidth]{%
- \vbox to\@tempdimb{%
- \unvbox
- \flushend@@tempbox@c
+ %% rightcolumn empty
+ \setbox\flushend@@varbox@a\box\@leftcolumn
+ \setbox\flushend@@varbox@lastpage\vbox{%
+ \remove@empty@lastbox@at@balancing\flushend@@varbox@a
+ \unvbox\flushend@@varbox@a
+ \the\atColsEnd
}%
- }%
- \hrule\@height\flushend@@page@rule
- \vskip-\flushend@@page@rule
- \hrule\@height\z@ width\textwidth
- \vss
- }%
- \setbox\@outputbox\vbox to\@tempdima{%
- \fmt@vbox@adds[\columnwidth]{%
- \vbox to\@tempdimb{%
- \unvbox\@tempboxa
- \vskip\z@
- }%
- }%
- \hrule\@height\flushend@@page@rule
- \vskip-\flushend@@page@rule
- \hrule\@height\z@ width\textwidth
- \vss
- }%
+ \fi
+ \ifdim\main@box@skip<\maxdimen
+ \set@outputbox@with@footnote@and@float
+ \fi
\setbox\@outputbox\vbox{%
\hb@xt@\textwidth{%
- \hb@xt@\columnwidth{\box\@leftcolumn\hss}%
+ \hb@xt@\columnwidth{%
+ \fmt@box@adds{\box\@leftcolumn}\hss}%
\hfil
\vrule \@width\columnseprule
\hfil
- \hb@xt@\columnwidth{\box\@outputbox\hss}%
+ \hb@xt@\columnwidth{%
+ \fmt@box@adds{\box\@outputbox}\hss}%
}%
}%
\global\let\@outputdblcol\saved@orig@@outputdblcol
@@ -1251,6 +966,7 @@
\setbox\@outputbox\vbox{\box\hold@viper\box\@outputbox}%
\fi
\@combinedblfloats
+ \csname @setmarks\endcsname
\@outputpage
\begingroup
\@dblfloatplacement
@@ -1268,61 +984,29 @@
\endgroup
\fi
}
-% \end{macrocode}
-% \end{macro}
-%
-% Adds default balancing of the last page at the end of document.
-%
-% \begin{macrocode}
-\usepackage{etoolbox}
-\AtBeginDocument{%
+
+\def\initialize@flushend{%
+ %%
+ %% Activates flushend package functionality.
+ %%
\global\let\saved@orig@@outputdblcol\@outputdblcol
- \if@ancient@balance@version
- \global\let\last@outputdblcol\last@outputdblcol@ancient
- \else
- \global\let\last@outputdblcol\last@outputdblcol@modern
- \fi
\global\let\balanced@@outputdblcol\last@outputdblcol
- \preto\enddocument{\let\@outputdblcol\balanced@@outputdblcol}%
- \appto\footnoterule{\vskip\z@}%
+ \edef\enddocument{%
+ \unexpanded{\let\@outputdblcol\balanced@@outputdblcol}%
+ \unexpanded\expandafter{\enddocument}%
+ }%
+ \g@addto@macro\footnoterule{\vskip\z@}%
+ \savingvdiscards=\@ne
}
-% \end{macrocode}
-%
-% User interface commands for the balancing pages.
-%
-% \cs{flushcolsend} is used to switch on column balancing on the current page.
-%
-% \begin{macrocode}
+
\def\flushcolsend{\global\let\@outputdblcol\last@outputdblcol}
-% \end{macrocode}
-%
-% \cs{raggedcolsend} is used to switch off column balancing on the current page.
-%
-% \begin{macrocode}
\def\raggedcolsend{\global\let\@outputdblcol\saved@orig@@outputdblcol}
-% \end{macrocode}
-%
-% \cs{flushend} is used to switch on column balancing on the last page.
-% It is used by default.
-%
-% \begin{macrocode}
\def\flushend{\global\let\balanced@@outputdblcol\last@outputdblcol}
-% \end{macrocode}
-%
-% \cs{raggedend} is used to switch off column balancing on the last page.
-%
-% \begin{macrocode}
\def\raggedend{\global\let\balanced@@outputdblcol\saved@orig@@outputdblcol}
-% \end{macrocode}
-%
-% In the case to see some debug information |debug| option is used and it is
-% possible to see how package calculates dimensions of balanced columns by
-% additional rules on balanced page and some log records in log file.
-%
-% \begin{macrocode}
\if@balance@debug
\showcolsendrule
\fi
+\AtBeginDocument{\initialize@flushend}
% \end{macrocode}
%
% \iffalse
diff --git a/macros/latex/contrib/sttools/flushend.pdf b/macros/latex/contrib/sttools/flushend.pdf
index 0be3cddabc..5d9b48a8b7 100644
--- a/macros/latex/contrib/sttools/flushend.pdf
+++ b/macros/latex/contrib/sttools/flushend.pdf
Binary files differ
diff --git a/macros/latex/contrib/sttools/midfloat.dtx b/macros/latex/contrib/sttools/midfloat.dtx
index ba2f7d5872..6a38b6719e 100644
--- a/macros/latex/contrib/sttools/midfloat.dtx
+++ b/macros/latex/contrib/sttools/midfloat.dtx
@@ -1,6 +1,6 @@
-% \iffalse meta-comment
+% \iffalse meta-comment/*% \end{macrocode}*/
%
-% Copyright (C) 2012 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
+% Copyright (C) 2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
% ---------------------------------------------------------------------------
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -20,13 +20,35 @@
% \fi
%
% \iffalse
+%<*internal>
+\begingroup
+%</internal>
+%<*batchfile>
+\input docstrip.tex
+\keepsilent\askforoverwritefalse
+\preamble
+%%
+%% This is file `midfoat.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% midfloat.dtx (with options: `package')
+%%
+\endpreamble
+\generate{\file{midfloat.sty}{\from{midfloat.dtx}{package}}}
+%</batchfile>
+%<batchfile>\endbatchfile
+%<*internal>
+\generate{\file{midfloat.ins}{\from{midfloat.dtx}{batchfile}}}
+\endgroup
+%</internal>
%<*driver>
\ProvidesFile{midfloat.dtx}
%</driver>
%<*package>
-%% Copyright (C) 1997-2012 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
-%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania
-%% http://www.vtex.lt/tex/download/macros/
+%% Copyright (C) 1997-2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
+%% UAB VTeX, Mokslininkų 2A, LT-08412 Vilnius, Lithuania
%% --------------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/sttools/midfloat.pdf b/macros/latex/contrib/sttools/midfloat.pdf
index ea76eb2737..e620a973a1 100644
--- a/macros/latex/contrib/sttools/midfloat.pdf
+++ b/macros/latex/contrib/sttools/midfloat.pdf
Binary files differ
diff --git a/macros/latex/contrib/sttools/stabular.dtx b/macros/latex/contrib/sttools/stabular.dtx
index f8044720b1..019fa9ffe1 100644
--- a/macros/latex/contrib/sttools/stabular.dtx
+++ b/macros/latex/contrib/sttools/stabular.dtx
@@ -1,6 +1,6 @@
-% \iffalse meta-comment
+% \iffalse meta-comment/*% \end{macrocode}*/
%
-% Copyright (C) 2014 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
+% Copyright (C) 2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
% ---------------------------------------------------------------------------
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -20,13 +20,35 @@
% \fi
%
% \iffalse
+%<*internal>
+\begingroup
+%</internal>
+%<*batchfile>
+\input docstrip.tex
+\keepsilent\askforoverwritefalse
+\preamble
+%%
+%% This is file `stabular.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% stabular.dtx (with options: `package')
+%%
+\endpreamble
+\generate{\file{stabular.sty}{\from{stabular.dtx}{package}}}
+%</batchfile>
+%<batchfile>\endbatchfile
+%<*internal>
+\generate{\file{stabular.ins}{\from{stabular.dtx}{batchfile}}}
+\endgroup
+%</internal>
%<*driver>
\ProvidesFile{stabular.dtx}
%</driver>
%<*package>
-%% Copyright (C) 1998-2014 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
-%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania
-%% http://www.vtex.lt/tex/download/macros/
+%% Copyright (C) 1998-2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
+%% UAB VTeX, Mokslininkų 2A, LT-08412 Vilnius, Lithuania
%% --------------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -42,12 +64,12 @@
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{stabular}
%<*package>
- [2014/03/20 v2.0 Improve tabular environment]
+ [2021/10/04 v2.1 Improve tabular environment]
%</package>
%
%<*driver>
\documentclass{ltxdoc}
-\usepackage{stabular}[2014/03/20]
+\usepackage{stabular}[2021/10/04]
\EnableCrossrefs
\CodelineIndex
\RecordChanges
@@ -81,6 +103,7 @@
% \changes{v1.1}{2012/05/29}{Converted to DTX file}
% \changes{v1.2}{2014/01/13}{Fixed bug in the '@sarray' macro}
% \changes{v2.0}{2014/03/20}{Minimized code and extra functionality}
+% \changes{v2.1}{2021/10/04}{Sync with array bugfix version for tabular}
%
% \DoNotIndex{\newcommand,\newenvironment}
%
@@ -226,10 +249,10 @@
\@preamble
}
\def\pkgarray@@stabarray{\@ifnextchar[{\pkgarray@@sarray}{\pkgarray@@sarray[c]}}
-\def\pkgarray@stabular{\gdef\@halignto{}\pkgarray@@stabular}
+\def\pkgarray@stabular{\def\@halignto{}\pkgarray@@stabular}
\expandafter\def\csname pkgarray@stabular*\endcsname#1{%
\setlength\dimen@{#1}%
- \xdef\@halignto{to\the\dimen@}\pkgarray@@stabular}
+ \edef\@halignto{to\the\dimen@}\pkgarray@@stabular}
\def\pkgarray@@stabular{%
\leavevmode
\bgroup
diff --git a/macros/latex/contrib/sttools/stabular.pdf b/macros/latex/contrib/sttools/stabular.pdf
index 353f0ea340..dafdfe20de 100644
--- a/macros/latex/contrib/sttools/stabular.pdf
+++ b/macros/latex/contrib/sttools/stabular.pdf
Binary files differ
diff --git a/macros/latex/contrib/sttools/stfloats.dtx b/macros/latex/contrib/sttools/stfloats.dtx
index bf5ab362df..b51cbc805b 100644
--- a/macros/latex/contrib/sttools/stfloats.dtx
+++ b/macros/latex/contrib/sttools/stfloats.dtx
@@ -1,6 +1,6 @@
-% \iffalse meta-comment
+% \iffalse meta-comment/*% \end{macrocode}*/
%
-% Copyright (C) 2016 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
+% Copyright (C) 2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
% ---------------------------------------------------------------------------
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -20,11 +20,34 @@
% \fi
%
% \iffalse
+%<*internal>
+\begingroup
+%</internal>
+%<*batchfile>
+\input docstrip.tex
+\keepsilent\askforoverwritefalse
+\preamble
+%%
+%% This is file `stfloats.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% stfloats.dtx (with options: `package')
+%%
+\endpreamble
+\generate{\file{stfloats.sty}{\from{stfloats.dtx}{package}}}
+%</batchfile>
+%<batchfile>\endbatchfile
+%<*internal>
+\generate{\file{stfloats.ins}{\from{stfloats.dtx}{batchfile}}}
+\endgroup
+%</internal>
%<*driver>
\ProvidesFile{stfloats.dtx}
%</driver>
%<*package>
-%% Copyright (C) 1997-2017 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
+%% Copyright (C) 1997-2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
%% VTeX UAB, Mokslininku 2a, Vilnius, Lithuania
%% --------------------------------------------------------------------------
%% This work may be distributed and/or modified under the
diff --git a/macros/latex/contrib/sttools/stfloats.pdf b/macros/latex/contrib/sttools/stfloats.pdf
index ee3ca96e81..2916b36c26 100644
--- a/macros/latex/contrib/sttools/stfloats.pdf
+++ b/macros/latex/contrib/sttools/stfloats.pdf
Binary files differ
diff --git a/macros/latex/contrib/sttools/sttools.dtx b/macros/latex/contrib/sttools/sttools.dtx
index 64cc03bad1..65eb44da39 100644
--- a/macros/latex/contrib/sttools/sttools.dtx
+++ b/macros/latex/contrib/sttools/sttools.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2016 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
+% Copyright (C) 2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
% ---------------------------------------------------------------------------
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -62,7 +62,7 @@
% \GetFileInfo{sttools.dtx}
% \title{The \textsf{sttools} collection}
% \author{Sigitas Tolu\v{s}is \\ \url{sigitas@vtex.lt}}
-% \date{2016.06.28}
+% \date{2021.10.04}
%
% \maketitle
%
@@ -74,12 +74,18 @@
% \section{Usage}
%
% \begin{itemize}
-% \item \textbf{cuted.sty, v1.5 2012/10/04} -- place some material
+%
+% \item \textbf{cuted.sty, v2.0 2021/10/04} -- place some material
% page width wide at any
% place on twocolumn page with existing text reformatted under inserted
-% material; \\\texttt{TODO: add optional rules to separate from text};
-% \item \textbf{floatpag.sty, v1.1 2012/05/29} -- set pagestyle for floats page;
-% \item \textbf{flushend.sty, v3.2 2016/06/21} -- balance page in twocolumn mode;
+% material; \\\texttt{\cs{preCutedStrip}\marg{...} and \cs{postCutedStrip}\marg{...}
+% can be used to add extra stuff before and after the |strip|};
+% \\\texttt{(2021/10/04): rewrite with new balance algorithm and options}.
+%
+% \item \textbf{floatpag.sty, v2.0 2021/10/04} -- set pagestyle for floats page;
+% \\ \texttt{(2021/10/04): removed latex209 compatibility; added rotated dblfloat support};
+%
+% \item \textbf{flushend.sty, v4.0 2021/10/04} -- balance page in twocolumn mode;
% \\\texttt{(2014/03/03): totally rewritten with new algorithm to support footnotes,
% top floats and column break before one line section title.
% \\(2014/04/24): bugfix version;
@@ -87,15 +93,25 @@
% \\ - spreaded or fixed right column height;
% \\ - optional old algorithm for backward compatability;
% \\(2015/04/14): set debug option off by default; keeplastbox modified;
-% \\(2016/06/21): bugfix compatibility with luatexja package};
+% \\(2016/06/21): bugfix compatibility with luatexja package;
+% \\(2017/03/27): bugfix for get@@footnoterule@@box; options for some checks on/off;
+% \\(2020/10/14): bugfix development and test;
+% \\(2020/10/16): bugfix version: modern with noautobase;
+% \\(2021/10/04): another rewrite with new balance algorithm and options}.
+%
% \item \textbf{midfloat.sty, v1.1 2012/05/29} -- insert onecolumn stuff in twocolumn
% page; \\\texttt{TODO: extend to work on both columns};
-% \item \textbf{stabular.sty, v2.0 2014/03/20} -- use modified tabular environment;
+%
+% \item \textbf{stabular.sty, v2.1 2021/10/04} -- use modified tabular environment;
% \\\texttt{(2014/03/20): removed extra stuff and left only possibility to break
% on page boundary;
-% \\added tabular variant from array package};
-% \item \textbf{stfloats.sty, v3.2 2016/06/28} -- enable enriched floats output mechanism;
-% \\\texttt{(2016/06/28): compatibility bugfix with 2015 latexrelease};
+% \\added tabular variant from array packag;
+% \\(2021/10/04): sync with array bugfix version for tabular}.
+%
+% \item \textbf{stfloats.sty, v3.3 2017/03/27} -- enable enriched floats output mechanism;
+% \\\texttt{(2016/06/28): compatibility bugfix with 2015 latexrelease;
+% \\ (2017/03/27): compatibility bugfix with 2017-05-01 latexrelease}.
+%
% \item \textbf{texsort.sty, v1.1 2012/05/29} -- sort numerical values; \\\texttt{TODO:
% extend (rewrite) to support alphnanumerical values for sorting}.
% \end{itemize}
diff --git a/macros/latex/contrib/sttools/sttools.ins b/macros/latex/contrib/sttools/sttools.ins
index 9c32a854d9..0ba9203e68 100644
--- a/macros/latex/contrib/sttools/sttools.ins
+++ b/macros/latex/contrib/sttools/sttools.ins
@@ -1,4 +1,4 @@
-%% Copyright (C) 2016 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
+%% Copyright (C) 2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
%% --------------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/sttools/sttools.pdf b/macros/latex/contrib/sttools/sttools.pdf
index 1bbf744965..ebc83f180e 100644
--- a/macros/latex/contrib/sttools/sttools.pdf
+++ b/macros/latex/contrib/sttools/sttools.pdf
Binary files differ
diff --git a/macros/latex/contrib/sttools/texsort.dtx b/macros/latex/contrib/sttools/texsort.dtx
index cc21e6147d..3ba0be453c 100644
--- a/macros/latex/contrib/sttools/texsort.dtx
+++ b/macros/latex/contrib/sttools/texsort.dtx
@@ -1,6 +1,6 @@
-% \iffalse meta-comment
+% \iffalse meta-comment/*% \end{macrocode}*/
%
-% Copyright (C) 2012 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
+% Copyright (C) 2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
% ---------------------------------------------------------------------------
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -17,19 +17,38 @@
% This work consists of the files texsort.dtx and texsort.ins
% and the derived filebase texsort.sty.
%
-% Also available from:
-% http://www.vtex.lt/tex/download/macros/
-%
% \fi
%
% \iffalse
+%<*internal>
+\begingroup
+%</internal>
+%<*batchfile>
+\input docstrip.tex
+\keepsilent\askforoverwritefalse
+\preamble
+%%
+%% This is file `texsort.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% texsort.dtx (with options: `package')
+%%
+\endpreamble
+\generate{\file{texsort.sty}{\from{texsort.dtx}{package}}}
+%</batchfile>
+%<batchfile>\endbatchfile
+%<*internal>
+\generate{\file{texsort.ins}{\from{texsort.dtx}{batchfile}}}
+\endgroup
+%</internal>
%<*driver>
\ProvidesFile{texsort.dtx}
%</driver>
%<*package>
-%% Copyright (C) 2000-2012 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
-%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania
-%% http://www.vtex.lt/tex/download/macros/
+%% Copyright (C) 2000-2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
+%% UAB VTeX, Mokslininkų 2A, LT-08412 Vilnius, Lithuania
%% --------------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -553,4 +572,4 @@
%</package>
% \fi
%
-% \Finale \ No newline at end of file
+% \Finale
diff --git a/macros/latex/contrib/sttools/texsort.pdf b/macros/latex/contrib/sttools/texsort.pdf
index 9346b39fd3..386a64932f 100644
--- a/macros/latex/contrib/sttools/texsort.pdf
+++ b/macros/latex/contrib/sttools/texsort.pdf
Binary files differ
diff --git a/macros/xetex/latex/hanzibox/README.md b/macros/xetex/latex/hanzibox/README.md
index 0daf1efe0e..e325df7a49 100644
--- a/macros/xetex/latex/hanzibox/README.md
+++ b/macros/xetex/latex/hanzibox/README.md
@@ -1,4 +1,3 @@
-hanzibox
Boxed Chinese characters with Pinyin above and translation below based LaTeX3
=======
@@ -21,12 +20,15 @@ You can read the manual (in Chinese) for more details and examples.
Contributing
------------
-1. Gitee repository: [hanzibox-l3](https://gitee.com/nwafu_nan/hanzibox-l3)
-2. Issues and pull requests are welcome. [issue](https://gitee.com/nwafu_nan/hanzibox-l3/issues) or [pull request](https://gitee.com/nwafu_nan/hanzibox-l3/pulls).
+1. github repository:
+ 1. repository: [hanzibox-l3](https://github.com/registor/hanzibox-l3)
+ 2. Issues and pull requests are welcome. [issue](https://github.com/registor/hanzibox-l3/issues) or [pull request](https://github.com/registor/hanzibox-l3/pulls).
-=======
-hanzibox
-基于LaTeX3的汉字练习宏包
+2. gitee repository:
+ 1. repository: [hanzibox-l3](https://gitee.com/nwafu_nan/hanzibox-l3)
+ 2. Issues and pull requests are welcome. [issue](https://gitee.com/nwafu_nan/hanzibox-l3/issues) or [pull request](https://gitee.com/nwafu_nan/hanzibox-l3/pulls).
+
+基于LaTeX3的带注音和译文的汉字练习宏包
=======
`hanzibox`是一个用LaTeX3开发的LaTeX宏包,它提供了`\hanzibox`和`\hanzidialog` 两个命令。这两个命令分别用于排版汉字学习中带有或不带田字格、米字格等背景格子的汉字,并可以根据需要在汉字正上方显示拼音,在正下方显示译文。其中,`\hanzibox`命令能够根据汉字自动调用`xpinyin`宏包的`\xpinyin*`命令实现汉字注音。并且`\hanzibox`命令提供了`\hanzibox*`星号版本,其注音功能是通过自动调用`xpinyin`宏包的`\pinyin`命令实现的。`\hanzidialog`命令的注音功能是通过在拼音选项中手动插入`xpinyin`宏包`\pinyin`命令实现的。
@@ -41,10 +43,14 @@ hanzibox
### 参与贡献
---------------------
-1. 本项目由西北农林科技大学信息工程学院耿楠创建和维护
-2. 如果您愿意一同参与工作(不计报酬,免费自由),请及时与作者联系
-3. 项目的gitee仓库地址:[hanzibox-l3](https://gitee.com/nwafu_nan/hanzibox-l3)
-4. 如果您有任何改进意见或者功能需求,欢迎提交 [issue](https://gitee.com/nwafu_nan/hanzibox-l3/issues) 或 [pull request](https://gitee.com/nwafu_nan/hanzibox-l3/pulls)。
+
+1. github仓库:
+ (1). 仓库地址: [hanzibox-l3](https://github.com/registor/hanzibox-l3)
+ (2). Issues和PR: [issue](https://github.com/registor/hanzibox-l3/issues) or [pull request](https://github.com/registor/hanzibox-l3/pulls).
+
+2. gitee仓库:
+ (1). 仓库地址: [hanzibox-l3](https://gitee.com/nwafu_nan/hanzibox-l3)
+ (2). Issues and PR: [issue](https://gitee.com/nwafu_nan/hanzibox-l3/issues) or [pull request](https://gitee.com/nwafu_nan/hanzibox-l3/pulls).
Copyright and Licence
---------------------
diff --git a/macros/xetex/latex/hanzibox/hanzibox.dtx b/macros/xetex/latex/hanzibox/hanzibox.dtx
index c499c05c8d..3a05212a3b 100644
--- a/macros/xetex/latex/hanzibox/hanzibox.dtx
+++ b/macros/xetex/latex/hanzibox/hanzibox.dtx
@@ -4,7 +4,6 @@
\iffalse
%</internal>
%<*readme>
-hanzibox
Boxed Chinese characters with Pinyin above and translation below based LaTeX3
=======
@@ -27,12 +26,15 @@ You can read the manual (in Chinese) for more details and examples.
Contributing
------------
-1. Gitee repository: [hanzibox-l3](https://gitee.com/nwafu_nan/hanzibox-l3)
-2. Issues and pull requests are welcome. [issue](https://gitee.com/nwafu_nan/hanzibox-l3/issues) or [pull request](https://gitee.com/nwafu_nan/hanzibox-l3/pulls).
+1. github repository:
+ 1. repository: [hanzibox-l3](https://github.com/registor/hanzibox-l3)
+ 2. Issues and pull requests are welcome. [issue](https://github.com/registor/hanzibox-l3/issues) or [pull request](https://github.com/registor/hanzibox-l3/pulls).
-=======
-hanzibox
-基于LaTeX3的汉字练习宏包
+2. gitee repository:
+ 1. repository: [hanzibox-l3](https://gitee.com/nwafu_nan/hanzibox-l3)
+ 2. Issues and pull requests are welcome. [issue](https://gitee.com/nwafu_nan/hanzibox-l3/issues) or [pull request](https://gitee.com/nwafu_nan/hanzibox-l3/pulls).
+
+基于LaTeX3的带注音和译文的汉字练习宏包
=======
`hanzibox`是一个用LaTeX3开发的LaTeX宏包,它提供了`\hanzibox`和`\hanzidialog` 两个命令。这两个命令分别用于排版汉字学习中带有或不带田字格、米字格等背景格子的汉字,并可以根据需要在汉字正上方显示拼音,在正下方显示译文。其中,`\hanzibox`命令能够根据汉字自动调用`xpinyin`宏包的`\xpinyin*`命令实现汉字注音。并且`\hanzibox`命令提供了`\hanzibox*`星号版本,其注音功能是通过自动调用`xpinyin`宏包的`\pinyin`命令实现的。`\hanzidialog`命令的注音功能是通过在拼音选项中手动插入`xpinyin`宏包`\pinyin`命令实现的。
@@ -47,10 +49,14 @@ hanzibox
### 参与贡献
---------------------
-1. 本项目由西北农林科技大学信息工程学院耿楠创建和维护
-2. 如果您愿意一同参与工作(不计报酬,免费自由),请及时与作者联系
-3. 项目的gitee仓库地址:[hanzibox-l3](https://gitee.com/nwafu_nan/hanzibox-l3)
-4. 如果您有任何改进意见或者功能需求,欢迎提交 [issue](https://gitee.com/nwafu_nan/hanzibox-l3/issues) 或 [pull request](https://gitee.com/nwafu_nan/hanzibox-l3/pulls)。
+
+1. github仓库:
+ (1). 仓库地址: [hanzibox-l3](https://github.com/registor/hanzibox-l3)
+ (2). Issues和PR: [issue](https://github.com/registor/hanzibox-l3/issues) or [pull request](https://github.com/registor/hanzibox-l3/pulls).
+
+2. gitee仓库:
+ (1). 仓库地址: [hanzibox-l3](https://gitee.com/nwafu_nan/hanzibox-l3)
+ (2). Issues and PR: [issue](https://gitee.com/nwafu_nan/hanzibox-l3/issues) or [pull request](https://gitee.com/nwafu_nan/hanzibox-l3/pulls).
Copyright and Licence
---------------------
@@ -154,7 +160,7 @@ Copyright and Licence
%</internal>
%<package>\NeedsTeXFormat{LaTeX2e}[2020/10/01]
%<package>\RequirePackage{expl3}
-%<+package>\GetIdInfo$Id: hanzibox.dtx 2.1.1 2021-10-07 08:00:00 +0800 Nan Geng <nangeng@nwafu.edu.cn> $
+%<+package>\GetIdInfo$Id: hanzibox.dtx 2.2.0 2021-10-11 08:00:00 +0800 Nan Geng <nangeng@nwafu.edu.cn> $
%<package> {Boxed Chinese characters with Pinyin above and translation below.}
%<package>\ProvidesExplPackage{\ExplFileName}
%<package> {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -173,7 +179,7 @@ Copyright and Licence
{\texttt{#1\breakablethinspace=\breakablethinspace#2}}
\def\breakablethinspace{\hskip 0.16667em\relax}
\begin{document}
- \DisableImplementation
+%<!--CODEDOC--> \DisableImplementation
\EnableImplementation
\DocInput{\jobname.dtx}
\IndexLayout
@@ -187,7 +193,7 @@ Copyright and Licence
% \changes{v2.0.0}{2021/09/25}{基于l3draw重新设计}
% \changes{v2.0.0}{2021/09/28}{重新编写README.md内容}
%
-% \CheckSum{1085}
+% \CheckSum{1222}
% \GetFileId{hanzibox.sty}
%
% \CharacterTable
@@ -209,10 +215,11 @@ Copyright and Licence
%
% \title{\bfseries\pkg{hanzibox}:田字格-米字格汉字练习宏包}
% \author{耿楠\\ \path{nangeng@nwafu.edu.cn}}
-% \date{\filedate\qquad\fileversion\thanks{\url{https://gitee.com/nwafu_nan/hanzibox-l3}.}}
+% \date{\filedate\qquad\fileversion\thanks{\url{https://github.com/registor/hanzibox-l3}}\thanks{\url{https://gitee.com/nwafu_nan/hanzibox-l3}}}
% \maketitle
%
% \changes{v2.0.0}{2021/09/28}{修订说明文档}
+% \changes{v2.1.2}{2021/10/07}{为说明文档添加目录}
%
% \begin{documentation}
%
@@ -221,13 +228,15 @@ Copyright and Licence
% \pkg{hanzibox} 是一个用\LaTeX3开发的 \LaTeX 宏包,它提供了\tn{hanzibox}和\tn{hanzidialog}
% 两个命令。这两个命令用于输出汉字学习中带有或不带田字格、米字格等背景格子的汉字,
% 并可以根据需要在汉字正上方显示拼音,在正下方显示译文。
-% 其中,\tn{hanzibox}命令能够根据汉字利用\pkg{xpinyin}宏包实现汉字注音。
-% 同时,\tn{hanzibox}命令还提供了\tn{hanzibox*}星号版本,以实现手动注音功能。
+% 其中,\tn{hanzibox}命令能够根据汉字利用\pkg{xpinyin}宏包自动实现汉字注音。
+% 同时,\tn{hanzibox}命令还提供了\tn{hanzibox*}星号版本,以实现汉字的手动注音功能。
% \tn{hanzidialog}命令的注音功能则是通过在其拼音选项中手动插入
% \pkg{xpinyin}宏包的\tn{pinyin}命令实现。
%
% \end{abstract}
%
+% \tableofcontents
+%
% \section{简要说明}
%
% \pkg{hanzibox} 是一个用于输出汉字学习中的田字格、米字格等背景,并在汉字正上方显示拼音,
@@ -240,7 +249,9 @@ Copyright and Licence
%
% \section{用户接口}
%
-% \begin{function}[added=2021-09-18,updated=2021-09-30]{\hanzibox,\hanzibox*}
+% \subsection{\tn{hanzibox}命令}
+%
+% \begin{function}[added=2021-09-18,updated=2021-10-07]{\hanzibox,\hanzibox*}
% \begin{syntax}
% \tn{hanzibox} \oarg{外观选项} \Arg{汉字} \oarg{拼音选项} \oarg{译文选项}
% \tn{hanzibox*} \oarg{外观选项} \Arg{汉字} \oarg{拼音选项} \oarg{译文选项}
@@ -251,45 +262,47 @@ Copyright and Licence
% \oarg{译文选项}可以是任意文本,需要注意的是,当需要\oarg{译文选项}时,
% \oarg{拼音选项}可以留空,但不能省略。
% 注音由\pkg{xpinyin}宏包自动根据汉字获得,此时,可能会存在多音字等问题,
-% 其调整详情请参阅\pkg{xpinyin}宏包说明。星号命令\tn{hanzibox*}用于手动排版拼音。
+% 其调整详情请参阅\pkg{xpinyin}宏包说明。星号命令\tn{hanzibox*}用于手动添加注音。
%
% 排版样式可通过\tn{hanziboxset}命令或\tn{hanzibox}\oarg{外观选项}的key-value进行设置。
%
-% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.40\linewidth,gobble=5]
+% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.35\linewidth,gobble=5]
% \centering
% \hanziboxset{fillcolor=yellow!30, charcolor=red,
% xscale=1.5,yscale=1.5,resize=real,framecolor=red}
-% \hanzibox[frametype=none]{我}
-% \hanzibox[frametype=口 ]{我}[][吾]
+% \hanzibox[frametype=none]{我}\\[1ex]
% \hanzibox[frametype=十 ]{我}[wo3][俺]
% \hanzibox[frametype=× ]{我}[wo2][爷]
-% \hanzibox[frametype=田 ]{我}[wo1][愚]
-% \hanzibox[frametype=米 ]{我}[ni3][奴]
-% \hanzibox[frametype=咪 ]{我}[ta1][山人]
+% \hanzibox[frametype=米 ]{我}[ni3][奴]\\[1ex]
+% \hanzibox[frametype=口,pinyinline=true]{我}[][吾]
+% \hanzibox[frametype=田,pinyinline=true]{我}[wo1][愚]
+% \hanzibox[frametype=咪,pinyinline=true]{我}[ta1][山人]
% \end{SideBySideExample}
-% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.40\linewidth,gobble=5]
+% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.35\linewidth,gobble=5]
% \centering
% \hanziboxset{xscale=1.5,yscale=1.5,resize=real}
-% \hanzibox*[frametype=none]{我}[wo3][me]
-% \hanzibox*[frametype=口 ]{我}[wo3][吾]
+% \hanzibox*[frametype=none]{我}[wo3][me]\\[1ex]
% \hanzibox*[frametype=十 ]{我}[wo3][俺]
% \hanzibox*[frametype=× ]{我}[wo3][爷]
-% \hanzibox*[frametype=田 ]{我}[wo2][愚]
-% \hanzibox*[frametype=米 ]{我}[ni3][奴]
-% \hanzibox*[frametype=咪 ]{我}[ta5][山人]
+% \hanzibox*[frametype=米 ]{我}[ni3][奴]\\[1ex]
+% \hanzibox*[frametype=口,pinyinline=true]{我}[wo3][吾]
+% \hanzibox*[frametype=田,pinyinline=true]{我}[wo2][愚]
+% \hanzibox*[frametype=咪,pinyinline=true]{我}[ta5][山人]
% \end{SideBySideExample}
% \end{function}
%
-% \begin{function}[added=2021-09-18,updated=2021-09-28]{\hanzidialog}
+% \subsection{\tn{hanzidialog}命令}
+%
+% \begin{function}[added=2021-09-18,updated=2021-10-07]{\hanzidialog}
% \begin{syntax}
% \tn{hanzidialog} \oarg{外观选项} \Arg{汉字} \oarg{拼音选项} \oarg{译文选项}
% \end{syntax}
% 排版汉字,并根据选项内容在顶部排版拼音,在底部排版译文。\\
% 其中,\Arg{汉字}可以留空,\oarg{拼音选项}可以是任意文本;\oarg{译文选项}可以是任意文本。
% \oarg{拼音选项}和\oarg{译文选项}都可以留空,也可以省略,
-% 但当需要\oarg{译文选项}时,\oarg{拼音选项}可以留空,不能省略。
-% 如果是汉语拼音则需要手动使用\pkg{xpinyin}宏包的\tn{pinyin}命令,
-% 排版样式可能通过\tn{hanziboxset}命令或\tn{hanzidialog}\oarg{外观选项}的key-value进行设置。
+% 但当需要\oarg{译文选项}时,\oarg{拼音选项}可以留空,但不能省略。
+% 如果是汉语拼音则需要手动使用\pkg{xpinyin}宏包的\tn{pinyin}命令添加注音,
+% 排版样式可通过\tn{hanziboxset}命令或\tn{hanzidialog}\oarg{外观选项}设置。
% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.25\linewidth,gobble=5]
% \centering
% \hanzidialog{王老师}[Wang \pinyin{lao3shi1}][teacher wang]
@@ -297,20 +310,22 @@ Copyright and Licence
% \hanzidialog[frametype=田]{王老师}[Wang \pinyin{lao3shi1}]
% [王先生]
%
-% \hanzidialog[height=1cm,frametype=咪,framecolor=red,resize=real]
+% \hanzidialog[frametype=咪,framecolor=red,pinyinline=true,
+% height=1cm,resize=real,pinyincolor=blue]
% {王老师}[Wang \pinyin{lao3shi1}][王先生]
-%
% \end{SideBySideExample}
% \end{function}
%
+% \subsection{\tn{hanziboxset}命令}
+%
% \begin{function}[added=2021-09-20,updated=2021-09-24]{\hanziboxset}
% \begin{syntax}
% \tn{hanziboxset} \marg{键值列表}
% \end{syntax}
% \tn{hanziboxset} 的参数是一组由(英文)逗号隔开的选项列表,
% 列表中的选项通常是 \kvopt{\meta{key}}{\meta{value}} 形式。
-% 部分选项的\meta{value} 可以省略。对于同一项,后续设置会覆盖以前的设置。
-% 在下文的说明中,多数选项都设有默认值。
+% 部分选项的\meta{value} 可以省略。对于同一选项,后续设置会覆盖以前的设置。
+% 多数选项都设有默认值。
%
% \tn{hanziboxset} 采用 \LaTeX3 风格的键值设置,支持不同类型以及多种
% 层次的选项设定。键值列表中,“|=|”左右的空格不影响设置;但需注意,
@@ -322,50 +337,65 @@ Copyright and Licence
% \section{选项说明}
%
% 本宏包提供了一系列选项,以实现汉字盒子外观样式设置。
-% 载入\pkg{hanzibox}宏包后,以下选项均可通过统一命令\tn{hanziboxset}进行设置。
+% 载入\pkg{hanzibox}宏包后,以下选项均可通过用户接口命令\tn{hanziboxset}进行设置。
% 同时,这些选项也可以通过\tn{hanzibox}或\tn{hanzidialog}命令的\oarg{外观选项}进行设置。
%
+% \subsection{基础字符和字号}
+%
% \begin{function}[added=2021-09-24,updated=2021-09-24]{basechar,zihao}
% \begin{syntax}
% basechar = \meta{CJK char} \init{好}
% zihao = \meta{字号} \init{4}
% \end{syntax}
-% \opt{basechar} 设置基字符,用于计算缩放比例,
+% \opt{basechar} 设置基字符,用于计算缩放比例及留空汉字占位处理,
% 基字符不同时,即使给定相同的缩放比例,其实际缩放比例也可能不同。
-%
-% \opt{zihao} 设置计算缩放比例时字号大小。
+%
+% \opt{zihao} 设置基字符的字号。
% \end{function}
%
-% \begin{function}[added=2021-09-27,updated=2021-09-28]{pinyinf,charf,tranf}
+% \subsection{拼音、汉字和译文格式}
+%
+% \begin{function}[added=2021-09-27,updated=2021-10-08]{pinyinf,charf,tranf}
% \begin{syntax}
% pinyinf = \meta{格式命令} \init{\normalsize}
% charf = \meta{格式命令} \init{\tiny}
% tranf = \meta{格式命令} \init{\tiny}
% \end{syntax}
-% 分别用于设置拼音、汉字、译文的排版格式。
+% 分别用于设置拼音、汉字、译文的排版格式,主要用于设置字体、字号、粗细等格式。
+%
+% 为了分解拼音,本宏包截获了原\pkg{xpinyin}宏包中的拼音输出,因此若需要修改拼音字体,
+% 请在\verb!pinyinf!选项中进行设置。
+%
+% \textcolor[HTML]{AD1457}{强烈建议将单个汉字宽度设置为大于其拼音或译文总宽度,
+% 以免在汉字间形成缝隙}。
% \end{function}
%
-% \begin{function}[added=2021-09-24,updated=2021-09-24]{frametype,resize}
+% \subsection{外框类型和缩放方式}
+%
+% \begin{function}[added=2021-09-24,updated=2021-10-08]{frametype,resize}
% \begin{syntax}
-% frametype = <none|口|十|田|米|咪> \init{none}
+% frametype = <none|十|×|米|口|田|咪> \init{none}
% resize = <none|real|base> \init{none}
% \end{syntax}
-% \opt{frametype} 设置汉字盒子样式。可用值的效果与选项值文字形状类似:\verb|口|--仅方框,
-% \verb|十|--仅中间的横线和竖线,\verb|田|--常见的田字格,\verb|米|--十字格再加上斜的两条对角线,
-% \verb|咪|--常见的米字格。
+% \opt{frametype} 设置汉字盒子样式。可用值的效果与选项值文字形状类似:
+% \verb|十|--仅中间的横线和竖线,\verb|×|--仅中间的两条对角线,
+% \verb|米|--十字格再加上斜的两条对角线,
+% \verb|口|--仅方框,\verb|田|--常见的田字格,\verb|咪|--常见的米字格。
+% \end{function}
%
% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.50\linewidth,gobble=5]
% \centering
-% \hanzibox[frametype=none]{无}
-% \hanzibox[frametype=口 ]{口}
+% \hanzibox[frametype=none]{无}\\[1ex]
% \hanzibox[frametype=十 ]{十}
+% \hanzibox[frametype=× ]{义}
+% \hanzibox[frametype=米 ]{米}\\[1ex]
+% \hanzibox[frametype=口 ]{口}
% \hanzibox[frametype=田 ]{田}
-% \hanzibox[frametype=米 ]{米}
% \hanzibox[frametype=咪 ]{咪}
% \end{SideBySideExample}
%
% \opt{resize} 设置缩放方式,\opt{real}--使用字符实际宽高缩放,
-% \opt{base}--使用 \opt{basechar} 设置的字符的宽高缩放,
+% \opt{base}--使用 \opt{basechar} 字符的宽高缩放,
%
% 以下为宽度设置为 1cm 时的缩放情况。
% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=5]
@@ -376,7 +406,8 @@ Copyright and Licence
% \hanzibox[resize=real ]{实}
% \hanzibox[resize=base ]{基}
% \end{SideBySideExample}
-% \end{function}
+%
+% \subsection{缩放比例及尺寸}
%
% \begin{function}[added=2021-09-24,updated=2021-09-24]{
% xscale,yscale,scale,
@@ -392,77 +423,124 @@ Copyright and Licence
%
% 宽高具有更高的优先级,即若比例和宽高都设置了,则使用宽高来计算。
% 宽高都为0cm视为未设置,二者有一大于0cm,视为设置了宽高。
-%
-% 此处的宽高和最终的宽高可能略有差异,最终的宽高保存在
-% \tn{hanziboxwidth} 和 \tn{hanziboxheight} dim寄存器中。
% \end{function}
%
+% \subsection{盒子样式}
+%
% \begin{function}[added=2021-09-24,updated=2021-09-24]{
% linewidth,
% dashpattern,
% framearc,
-% framearc*
+% framearc*,
+% framelinewidth,
+% pinyinlinewidth,
+% crosslinewidth
% }
% \begin{syntax}
-% linewidth = \meta{dim} \init{0.4pt}
-% dashpattern = \meta{ dim1, dim2, ... }
-% framearc = \meta{dim}
-% framearc* = \{ \marg{dim1} \marg{dim2} \}
+% linewidth = \meta{dim} \init{0.4pt}
+% dashpattern = \meta{ dim1, dim2, ... }
+% framearc = \meta{dim}
+% framearc* = \{ \marg{dim1} \marg{dim2} \}
+% framelinewidth = \meta{dim} \init{0.4pt}
+% pinyinlinewidth = \meta{dim} \init{0.4pt}
+% crosslinewidth = \meta{dim} \init{0.4pt}
% \end{syntax}
-% 设置边框线宽、线型、转角样式。
+% 设置边框线宽、线型、转角样式及拼音四线格和内格线线宽。
%
+% \textcolor[HTML]{AD1457}{注:目前\textbf{linewidth}与
+% \textbf{framelinewidth}选项的作用相同,都是设置边框线宽,
+% 在下一个版本中,会删除\textbf{linewidth}选项}。
% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.28\linewidth,gobble=5]
% \centering
% \hanziboxset{width=1.0cm,resize=real,framecolor=red}
% \hanzibox[linewidth=1pt,frametype=口]{好}
% \hanzibox[dashpattern={1.5mm,1mm,2mm,1.5mm},frametype=田]{好}
-% \hanzibox[framearc=1mm,frametype=口]{好} \\
-% \hanzibox[framearc=1mm,frametype=咪]{好}
-% \hanzibox[framearc*={1mm}{2mm},frametype=口]{好}
-% \hanzibox[framearc*={2mm}{1mm},frametype=咪]{好}
+% \hanzibox[framelinewidth=1pt,frametype=咪]{好} \\
+% \hanzibox[pinyinline,framearc=1mm,frametype=口]{好}
+% \hanzibox[framearc*={1mm}{2mm},frametype=田]{好}
+% \hanzibox[framearc*={2mm}{1mm},frametype=咪]{好}\\
+% \hanzibox[pinyinline,pinyinlinewidth=0.8pt,frametype=口]{好}
+% \hanzibox[crosslinewidth=1pt,frametype=田]{好}
+% \hanzibox[crosslinewidth=1pt,frametype=咪]{好}
% \end{SideBySideExample}
% \end{function}
%
-% \begin{function}[added=2021-09-24,updated=2021-09-24]{
+% \subsection{颜色设置}
+%
+%
+% \begin{function}[added=2021-10-07,updated=2021-10-07]{crosscolorratio}
+% \begin{syntax}
+% crosscolorratio = \meta{integer} \init{20}
+% \end{syntax}
+% 格子内部十字线或米字线颜色占边框颜色的比例(0$\sim$100\%)。
+%
+% \textcolor[HTML]{AD1457}{注:\textbf{crosscolorratio}选项须在设置了\textbf{framecolor}选项后才能生效}。
+%
+% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.25\linewidth,gobble=5]
+% \centering
+% \hanzibox[frametype=咪,framecolor=red]{十}
+% \hanzibox[frametype=咪,crosscolorratio=30,framecolor=red]{田}
+% \hanzibox[frametype=咪,crosscolorratio=50,framecolor=red]{米}
+% \hanzibox[frametype=咪,crosscolorratio=80,framecolor=red]{咪}
+% \end{SideBySideExample}
+% \end{function}
+%
+% \begin{function}[added=2021-09-24,updated=2021-10-07]{
% framecolor,
% framecolor*,
% charcolor,
% charcolor*,
+% pinyincolor,
+% pinyincolor*,
+% trancolor,
+% trancolor*,
% fillcolor,
% fillcolor*
% }
% \begin{syntax}
-% framecolor = \meta{color expr} \init{black}
-% framecolor* = \meta{model(s)} \meta{value(s)}
-% charcolor = \meta{color expr} \init{black}
-% charcolor* = \meta{model(s)} \meta{value(s)}
-% fillcolor = \meta{color expr}
-% fillcolor* = \meta{model(s)} \meta{value(s)}
+% framecolor = \meta{color expr} \init{black}
+% framecolor* = \meta{model(s)} \meta{value(s)}
+% charcolor = \meta{color expr} \init{black}
+% charcolor* = \meta{model(s)} \meta{value(s)}
+% pinyincolor = \meta{color expr} \init{black}
+% pinyincolor* = \meta{model(s)} \meta{value(s)}
+% trancolor = \meta{color expr} \init{black}
+% trancolor* = \meta{model(s)} \meta{value(s)}
+% fillcolor = \meta{color expr}
+% fillcolor* = \meta{model(s)} \meta{value(s)}
% \end{syntax}
-% 分别设置格子线条、字符和填充颜色。
+% 分别设置格子外框、字符、拼音、译文和填充颜色。
% 颜色名称仅支持 \LaTeX3 定义的 black, white, red, green, blue, cyan, magenta 和 yellow。
% 颜色模型和表达式也应使用 \LaTeX3 支持的模型和表达式,详见 \pkg{interface3.pdf} 文档。
%
% 若要去掉 \opt{fillcolor},应将其置为空(\verb|fillcolor={}|),而不是将其设置为white(白色)。
% \end{function}
%
-% \begin{function}[added=2021-10-07,updated=2021-10-07]{crosscolorratio}
+% \subsection{字符轮廓类型}
+%
+% \begin{function}[added=2021-10-08,updated=2021-10-08]{charstroke}
% \begin{syntax}
-% crosscolorratio = \meta{integer} \init{20}
+% charstroke = <none|solid|dashed|invisible> \init{none}
% \end{syntax}
-% 格子内部十字线或米字线颜色占边框颜色的比例。
+% 设置字符外轮廓样式。
%
-% \textcolor[HTML]{AD1457}{注:\textsf{crosscolorratio}选项须在使用\textsf{framecolor}后起效}。
+% 初始值 \opt{none} 按原样输出。\opt{solid} 设置外轮廓为 0.10bp 的实线,
+% \opt{dashed} 设置外轮廓为 0.10bp 的虚线。同时,不填充轮廓内部,显示为背景颜色。
+% \opt{invisible} 将字符设置为不可见,但不影响背景和网格的显示,隐藏的字仍然可被复制。
%
-% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.25\linewidth,gobble=5]
+% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.30\linewidth,gobble=5]
% \centering
-% \hanzibox[frametype=咪,framecolor=red]{十}
-% \hanzibox[frametype=咪,crosscolorratio=30,framecolor=red]{田}
-% \hanzibox[frametype=咪,crosscolorratio=50,framecolor=red]{米}
-% \hanzibox[frametype=咪,crosscolorratio=80,framecolor=red]{咪}
+% \hanziboxset{width=1.0cm,resize=real,frametype=咪,
+% framecolor=red}
+% \hanzibox[charstroke=none ]{我}
+% \hanzibox[charstroke=solid,charcolor=red ]{我}\\
+% \hanzibox[charstroke=dashed,charcolor=green!40!black]{我}
+% \hanzibox[charstroke=invisible ]{我}
% \end{SideBySideExample}
% \end{function}
%
+% \subsection{声母、韵母和声调开关}
+%
% \begin{function}[added=2021-09-24,updated=2021-09-24]{initial,vowel,tone}
% \begin{syntax}
% initial = <\TTF> \init{true}
@@ -470,8 +548,10 @@ Copyright and Licence
% tone = <\TTF> \init{true}
% \end{syntax}
% 分别用于设置是否输出拼音的声母、韵母和声调,默认值为\textbf{true}。
-% 该选项仅对\tn{hanzibox}命令有效。
-% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.33\linewidth,gobble=5]
+%
+% 该选项对\tn{hanzidialog}命令无效。
+% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.28\linewidth,gobble=5]
+%
% \centering
% \hanziboxset{frametype=咪,framecolor=red,
% fillcolor=yellow!40,resize=real}
@@ -485,22 +565,44 @@ Copyright and Licence
% [How long will the full moon appear?]\\[0.5ex]
% \hanzibox[initial=false,vowel=false]{明有几时有}
% [][How long will the full moon appear?]
+%
% \end{SideBySideExample}
% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.28\linewidth,gobble=5]
% \centering
% \hanziboxset{frametype=咪,framecolor=red,fillcolor=yellow!40,
-% charf=\Huge,resize=real}
-% \hanzibox*[initial=false]{我}[wo3][吾]
-% \hanzibox*[initial=true,vowel=false]{我}[wo3][吾]
-% \hanzibox*[initial=true,vowel=true,tone=false]{我}[wo3][不才]
+% charf=\Huge,pinyinf=\small,tranf=\small,resize=real}
+% \hanzibox*[tone=false]{我}[wo3][吾]
+% \hanzibox*[vowel=false]{我}[wo3][吾]
+% \hanzibox*[initial=false]{我}[wo3][不才]
% \end{SideBySideExample}
% \end{function}
%
+% \subsection{拼音四线格开关}
+%
+% \begin{function}[added=2021-10-07,updated=2021-10-08]{pinyinline}
+% \begin{syntax}
+% pinyinline = <\TFF> \init{false}
+% \end{syntax}
+% 用于设置是否输出拼音四线格,默认值为\textbf{false}。
+% 为保持拼音对齐一致性,\verb!pinyinline=false!时,
+% 仅不输出拼音四线格,但拼音四线格的空间占位仍然存在。
+% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.33\linewidth,gobble=5]
+% \centering
+% \hanziboxset{frametype=咪,framecolor=red,charf=\large,
+% fillcolor=yellow!40}
+% \hanzibox[pinyinline=false]{明月几时有}[]
+% [How long will the full moon appear?]\\[0.5ex]
+% \hanzibox[pinyinline=true]{明月几时有}[]
+% \end{SideBySideExample}
+% \end{function}
+%
+% \subsection{拼音、汉字和译文开关}
+%
% \begin{function}[added=2021-09-21,updated=2021-09-26]{pinyin,hanzi,tran}
% \begin{syntax}
% pinyin = <\TTF> \init{true}
-% hanzi = <\TTF> \init{true}
-% tran = <\TTF> \init{true}
+% hanzi = <\TTF> \init{true}
+% tran = <\TTF> \init{true}
% \end{syntax}
% 分别用于设置是否输出拼音、汉字和译文,默认值为\textbf{true}。
% 该选项对\tn{hanzidialog}命令无效。
@@ -518,28 +620,35 @@ Copyright and Licence
% \end{function}
%
% \changes{v2.0.0}{2021/09/28}{在说明文档中添加应用实例}
+% \changes{v2.2.0}{2021/10/07}{为部分实例添加拼音四线格}
%
% \section{应用实例}
%
% \pkg{hanzibox}宏包可以广泛用于汉字学习的练习中。
%
% \subsection{拼一拼---写一写练习}
+% 利用各种选项的有效组合,可以实现汉字拼一拼---写一写练习。
%
-% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=5]
+% \textcolor[HTML]{AD1457}{注意:\tn{hspace*}命令中的
+% 参数\textbf{0.4pt}是边框线条宽度,请根据实际情况调整}。
+% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.32\linewidth,gobble=5]
% \centering
-% \hanziboxset{frametype=田,framecolor=blue}
-% \hanzibox{门}\hanzibox[hanzi=false]{口}\hfill
-% \hanzibox{生}\hanzibox[hanzi=false]{日}\hfill
-% \hanzibox{题}\hanzibox[hanzi=false]{目}\hfill
-% \hanzibox[hanzi=false]{田}\hanzibox{野}
+% \hanziboxset{frametype=田,framecolor=blue,
+% charf=\Huge,pinyinf=\small}
+% \hanzibox{门}\hspace*{-0.4pt}\hanzibox[hanzi=false]{口}
+% \hfill
+% \hanzibox{生}\hspace*{-0.4pt}\hanzibox[hanzi=false]{日}\\
+% \hanzibox{题}\hspace*{-0.4pt}\hanzibox[hanzi=false]{目}
+% \hfill
+% \hanzibox[hanzi=false]{田}\hspace*{-0.4pt}\hanzibox{野}
% \end{SideBySideExample}
%
% \subsection{标注声母练习}
%
-% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.35\linewidth,gobble=5]
+% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.32\linewidth,gobble=5]
% \centering
% \hanziboxset{frametype=咪,framecolor=red,charcolor=red,
-% charf=\Huge,pinyinf=\small,initial=false}
+% pinyinline=true,charf=\Huge,pinyinf=\small,initial=false}
% \hanzibox{门口}\hfill
% \hanzibox{生日}\\
% \hanzibox{题目}\hfill
@@ -548,10 +657,10 @@ Copyright and Licence
%
% \subsection{标注韵母练习}
%
-% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.35\linewidth,gobble=5]
+% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.32\linewidth,gobble=5]
% \centering
% \hanziboxset{frametype=咪,framecolor=red,charcolor=red,
-% charf=\Huge,pinyinf=\small,vowel=false}
+% pinyinline=true,charf=\Huge,pinyinf=\small,vowel=false}
% \hanzibox{门口}\hfill
% \hanzibox{生日}\\
% \hanzibox{题目}\hfill
@@ -560,10 +669,10 @@ Copyright and Licence
%
% \subsection{标注声调练习}
%
-% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.35\linewidth,gobble=5]
+% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.32\linewidth,gobble=5]
% \centering
% \hanziboxset{frametype=咪,framecolor=red,charcolor=red,
-% charf=\Huge,pinyinf=\small,tone=false}
+% pinyinline=true,charf=\Huge,pinyinf=\small,tone=false}
% \hanzibox{门口}\hfill
% \hanzibox{生日}\\
% \hanzibox{题目}\hfill
@@ -640,17 +749,19 @@ Copyright and Licence
%
% \changes{v2.1.1}{2021/10/07}{在格子纸示例中用coffin实现每行格子以提升编译速度}
%
-% \subsection{生成汉字书写练习格子纸}
+% \subsection{生成汉字书写格子纸}
%
-% 可以通过将\tn{hanzibox}命令的\Arg{汉字}参数留空,
+% 可以通过将\tn{hanzibox}命令的\Arg{汉字}参数留空,并设置\verb!tran=false!,
% 或将\tn{hanzibox}、\tn{hanzibox*}命令的\verb!hanzi!选项置为
% \verb!false!(\verb!hanzi=false!),从而生成空白背景格子,
% 再根据需要通过循环的方式生成指定行数和列数的
% 汉字书写练习用格子纸。
%
-% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.43\linewidth,gobble=5]
+% \textcolor[HTML]{AD1457}{注意:参数中的\textbf{0.4pt}是边框线条宽度,
+% 请根据实际情况调整}。
+% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.37\linewidth,gobble=5]
% \hanziboxset{frametype=咪,framecolor=red,
-% charcolor=red,charf=\huge}
+% tran=false,charcolor=red,charf=\huge}
% \centering
% \ExplSyntaxOn
% \hcoffin_set:Nn \l_tmpa_coffin
@@ -658,21 +769,24 @@ Copyright and Licence
% \int_step_inline:nn {6}
% {
% \hanzibox{}
-% \hspace*{-0.35pt}
+% \hspace*{-0.40pt}
% }
% }
+% \hcoffin_set:Nn \l_tmpb_coffin
+% {}
% \int_step_inline:nn {8}
% {
-% \coffin_typeset:Nnnnn
-% \l_tmpa_coffin { l } { b } { 0pt } { 0pt }
-% \par\nointerlineskip\vspace*{-3.3pt}
-% }
+% \coffin_join:NnnNnnnn \l_tmpb_coffin { hc } { b }
+% \l_tmpa_coffin { hc } { t } { 0pt } { 0.4pt }
+% }
+% \coffin_typeset:Nnnnn
+% \l_tmpb_coffin { l } { b } { 0pt } { 0pt }
% \ExplSyntaxOff
% \end{SideBySideExample}
%
-% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.43\linewidth,gobble=5]
+% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.37\linewidth,gobble=5]
% \hanziboxset{frametype=咪,framecolor=red,
-% charcolor=red,charf=\huge,hanzi=false}
+% pinyinline=true,charf=\huge,hanzi=false}
% \centering
% \ExplSyntaxOn
% \hcoffin_set:Nn \l_tmpa_coffin
@@ -680,14 +794,14 @@ Copyright and Licence
% \int_step_inline:nn {6}
% {
% \hanzibox*{国}
-% \hspace*{-0.35pt}
+% \hspace*{-0.40pt}
% }
% }
% \int_step_inline:nn {8}
% {
% \coffin_typeset:Nnnnn
% \l_tmpa_coffin { l } { b } { 0pt } { 0pt }
-% \par\nointerlineskip\vspace*{-6.30pt}
+% \par\nointerlineskip
% }
% \ExplSyntaxOff
% \end{SideBySideExample}
@@ -703,7 +817,9 @@ Copyright and Licence
% \setpinyin{尽}{jin4}
% \hanziboxset{frametype=咪,framecolor=red,
% charf=\huge,pinyinf=\footnotesize,
-% charcolor=green!40!black}
+% charcolor=green!40!black,
+% pinyincolor=green!40!black,
+% trancolor=green!40!black}
% \centering
% \hanzibox{故人西辞黄鹤楼}
% \hanzibox{烟花三月下扬州}
@@ -719,7 +835,8 @@ Copyright and Licence
%
% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.33\linewidth,gobble=5]
% \hanziboxset{frametype=咪,framecolor=red,charf=\Large,
-% charcolor=green!40!black,}
+% pinyinline=true,charcolor=green!40!black,
+% pinyincolor=red!20!black,trancolor=blue!40!black}
% \centering
% \hanzibox*{故人西辞黄鹤楼}[gu4ren2xi1ci2huang2he2lou2]
% \hanzibox*{烟花三月下扬州}[yan1hua1san1yue4]
@@ -727,6 +844,25 @@ Copyright and Licence
% \hanzibox*{}[wei2jian4chang2jiang1tian1ji4liu2]
% \end{SideBySideExample}
%
+% \subsection{生成描红练习}
+%
+% 合理的设置汉字的颜色浓淡或通过\verb!charstroke!选项设置
+% 汉字轮廓选项,可以生成用于描红练习的格子纸。
+%
+% 若设置\verb!charstroke=invisible!,则会使汉字隐藏不可见,
+% 但隐藏的汉字仍然可被复制。
+%
+% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.25\linewidth,gobble=5]
+% \hanziboxset{frametype=咪,framecolor=red,pinyinline=true,
+% pinyincolor=green!30!black,charf=\Large,pinyinf=\footnotesize}
+% \centering
+% \hanzibox[charcolor=red!30,pinyincolor=red]{讲普通话}
+% \hanzibox[charcolor=black!30,pinyinline=false]{写规范字}
+% \hanzibox[charcolor=red,charstroke=solid]{讲普通话}
+% \hanzibox[charcolor=black,charstroke=dashed]{写规范字}
+% \hanzibox[charcolor=red,charstroke=invisible]{讲普通话}
+% \end{SideBySideExample}
+%
% \end{documentation}
%
% \StopEventually{}
@@ -736,7 +872,7 @@ Copyright and Licence
% \section{代码实现}
%
% 本宏包使用 \LaTeX3 语法编写,依赖 \pkg{expl3} 环境,
-% 并需调用 \pkg{l3packages}、\pkg{l3draw}、\pkg{xpinyin}等相关宏包。
+% 并需调用 \pkg{l3packages}、\pkg{l3draw}、\pkg{xpinyin}等宏包。
%
% 按照 \LaTeX3 语法,代码中的空格、换行、回车与制表符会完全被忽略,
% 而下划线“|_|”和冒号“|:|”则可作为一般字母使用。
@@ -785,11 +921,11 @@ Copyright and Licence
%
% \end{macrocode}
%
-% \changes{v2.1.1}{2021/10/03}{修订盒子高度计算函数的expl3版本兼容问题}
+% \changes{v2.1.1}{2021/10/03}{解决盒子高度计算函数的expl3版本兼容问题}
%
% 判断\tn{box_ht_plus_dp:N}函数是否存在,若不存在,则定义该函数。
-% 为了解决expl3的旧版本兼容问题。
-% 摘录于\url{https://ask.latexstudio.net/ask/question/3773.html}。
+% 为了解决与expl3的旧版本兼容问题(
+% 摘录于\url{https://ask.latexstudio.net/ask/question/3773.html})。
%
% \begin{macrocode}
\cs_if_free:NT \box_ht_plus_dp:N
@@ -799,7 +935,7 @@ Copyright and Licence
}
% \end{macrocode}
%
-% 检查编译引擎
+% 检查编译引擎,目前仅支持xetex引擎。
%
% \begin{macrocode}
\sys_if_engine_xetex:F
@@ -828,10 +964,10 @@ Copyright and Licence
% \changes{v1.1.0}{2021/09/22}{为用户命令添加组限制}
% \changes{v2.0.0}{2021/09/26}{调整星号命令为手动拼音注音}
% 背景盒子由l3draw实现,
-% 其设计思路和部分源码来自\LaTeX 字帖宏包(\url{https://www.ctan.org/pkg/zitie})。
+% 其设计思路和部分源码来自\LaTeX 的\pkg{zitie}宏包(\url{https://www.ctan.org/pkg/zitie})。
%
% \begin{macro}{\hanzibox}
-% 自动拼音汉字盒子命令。
+% 自动注音汉字盒子命令。
% \begin{macrocode}
\NewDocumentCommand{\hanzibox}{ s O{} m O{} O{} }
{
@@ -850,7 +986,7 @@ Copyright and Licence
% \end{macro}
%
% \begin{macro}{\hanzidialog}
-% 手动汉字盒子命令。
+% 手动注音汉字盒子命令。
% \begin{macrocode}
\NewDocumentCommand{\hanzidialog}{O{} m O{} O{} }
{
@@ -868,45 +1004,59 @@ Copyright and Licence
% \changes{v1.1.0}{2021/09/21}{添加缩放比例,前景/背景色,隐藏控制变量。}
% \changes{v2.0.0}{2021/09/24}{根据l3draw的需要重新设计各个变量。}
% \changes{v2.1.0}{2021/09/30}{添加记录拼音返回结果的clist变量。}
+% \changes{v2.2.0}{2021/10/07}{添加拼音线开关及拼音和译文颜色变量}
+% \changes{v2.2.0}{2021/10/08}{添加字符轮廓类型选择变量}
+% \changes{v2.2.0}{2021/10/09}{添加拼音汉字coffin变量}
%
% \begin{variable}{\l_@@_autopinyin_bool,
-% \l_@@_withinitial_bool,
-% \l_@@_withvowel_bool,
-% \l_@@_withtone_bool,
-% \l_@@_withpinyin_bool,
-% \l_@@_withhanzi_bool,
-% \l_@@_withtran_bool,
-% \l_@@_basebox_box,
-% \l_@@_frame_type_tl,
-% \g_@@_frame_list_clist,
-% \l_@@_resize_method_tl,
-% \g_@@_resize_method_clist,
-% \l_@@_frame_size_dim,
-% \l_@@_char_width_dim,
-% \l_@@_char_height_dim,
-% \l_@@_box_width_dim,
-% \l_@@_box_height_dim,
-% \l_@@_linewidth_dim,
-% \l_@@_box_coffin,
-% \l_@@_tmpa_coffin,
-% \l_@@_tmpb_coffin,
-% \hanziboxwidth,
-% \hanziboxheight,
-% \l_@@_pinyin_tl,
-% \l_@@_tone_pinyin_clist,
-% \l_@@_character_tl,
-% \l_@@_translation_tl,
-% \l_@@_pinyin_format_tl,
-% \l_@@_character_format_tl,
-% \l_@@_translation_format_tl,
-% \l_@@_cross_color_ratio_int,
-% \l_@@_pinyin_int,
-% \l_@@_character_int,
-% \l_@@_translation_int,
-% \l_@@_tone_int,
-% \l_@@_pinyin_str,
-% \l_@@_initial_tl,
-% \l_@@_vowel_tl
+% \l_@@_withinitial_bool,
+% \l_@@_withvowel_bool,
+% \l_@@_withtone_bool,
+% \l_@@_withpinyin_bool,
+% \l_@@_withpinyinlines_bool,
+% \l_@@_withhanzi_bool,
+% \l_@@_withtran_bool,
+% \l_@@_basebox_box,
+% \l_@@_frame_type_tl,
+% \g_@@_frame_list_clist,
+% \l_@@_resize_method_tl,
+% \g_@@_resize_method_clist,
+% \l_@@_frame_size_dim,
+% \l_@@_char_width_dim,
+% \l_@@_char_height_dim,
+% \l_@@_pinyin_height_i_dim,
+% \l_@@_pinyin_height_ii_dim,
+% \l_@@_pinyin_height_iii_dim,
+% \l_@@_box_width_dim,
+% \l_@@_box_height_dim,
+% \l_@@_frame_linewidth_dim,
+% \l_@@_pinyin_linewidth_dim,
+% \l_@@_cross_linewidth_dim,
+% \l_@@_tone_pinyin_clist,
+% \l_@@_str_box_coffin,
+% \l_@@_box_coffin,
+% \l_@@_pinyin_box_coffin,
+% \l_@@_tran_box_coffin,
+% \l_@@_pinyin_hanzi_coffin,
+% \l_@@_tmpa_coffin,
+% \l_@@_tmpb_coffin,
+% \hanziboxwidth,
+% \hanziboxheight,
+% \l_@@_pinyin_tl,
+% \l_@@_character_tl,
+% \l_@@_translation_tl,
+% \l_@@_pinyin_format_tl,
+% \l_@@_character_format_tl,
+% \l_@@_translation_format_tl,
+% \l_@@_cross_color_ratio_int,
+% \l_@@_pinyin_int,
+% \l_@@_character_int,
+% \l_@@_translation_int,
+% \l_@@_charstroke_type_int,
+% \l_@@_tone_int,
+% \l_@@_pinyin_str,
+% \l_@@_initial_tl,
+% \l_@@_vowel_tl,
% }
% 定义变量。
%
@@ -916,6 +1066,7 @@ Copyright and Licence
\bool_new:N \l_@@_withvowel_bool
\bool_new:N \l_@@_withtone_bool
\bool_new:N \l_@@_withpinyin_bool
+\bool_new:N \l_@@_withpinyinlines_bool
\bool_new:N \l_@@_withhanzi_bool
\bool_new:N \l_@@_withtran_bool
@@ -927,9 +1078,14 @@ Copyright and Licence
\dim_new:N \l_@@_frame_size_dim
\dim_new:N \l_@@_char_width_dim
\dim_new:N \l_@@_char_height_dim
+\dim_new:N \l_@@_pinyin_height_i_dim
+\dim_new:N \l_@@_pinyin_height_ii_dim
+\dim_new:N \l_@@_pinyin_height_iii_dim
\dim_new:N \l_@@_box_width_dim
\dim_new:N \l_@@_box_height_dim
-\dim_new:N \l_@@_linewidth_dim
+\dim_new:N \l_@@_frame_linewidth_dim
+\dim_new:N \l_@@_pinyin_linewidth_dim
+\dim_new:N \l_@@_cross_linewidth_dim
\clist_new:N \l_@@_tone_pinyin_clist
@@ -937,6 +1093,7 @@ Copyright and Licence
\coffin_new:N \l_@@_box_coffin
\coffin_new:N \l_@@_pinyin_box_coffin
\coffin_new:N \l_@@_tran_box_coffin
+\coffin_new:N \l_@@_pinyin_hanzi_coffin
\coffin_new:N \l_@@_tmpa_coffin
\coffin_new:N \l_@@_tmpb_coffin
@@ -953,6 +1110,7 @@ Copyright and Licence
\int_new:N \l_@@_pinyin_int
\int_new:N \l_@@_character_int
\int_new:N \l_@@_translation_int
+\int_new:N \l_@@_charstroke_type_int
\int_new:N \l_@@_tone_int
\str_new:N \l_@@_pinyin_str
@@ -967,13 +1125,43 @@ Copyright and Licence
% \subsubsection{设置填充色}
%
% \begin{macro}{\@@_aux_color_fill:}
-% 设置填充色
+% 设置空白填充色
% \begin{macrocode}
\cs_new_nopar:Nn \@@_aux_color_fill:
{ }
% \end{macrocode}
% \end{macro}
%
+% \changes{v2.2.0}{2021/10/07}{添加拼音高度计算函数}
+%
+% \subsubsection{计算拼音高度}
+%
+% \begin{macro}{\@@_calc_pinyin_h:}
+% 计算拼音线基础调试(通过字母"a"的高度计算)
+% \begin{macrocode}
+\cs_new:Npn \@@_calc_pinyin_h:
+ {
+ \hbox_set:Nn \l_tmpa_box
+ {
+ \tl_use:N \l_@@_pinyin_format_tl
+ a
+ }
+ \dim_set:Nn \l_@@_pinyin_height_i_dim
+ {
+ \box_ht:N \l_tmpa_box
+ }
+ \dim_set:Nn \l_@@_pinyin_height_ii_dim
+ {
+ \l_@@_pinyin_height_i_dim + \l_@@_pinyin_height_i_dim
+ }
+ \dim_set:Nn \l_@@_pinyin_height_iii_dim
+ {
+ \l_@@_pinyin_height_i_dim + \l_@@_pinyin_height_i_dim + \l_@@_pinyin_height_i_dim
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \subsubsection{计算盒子尺寸}
%
% \begin{macro}{\@@_calc_basechar_w_h:}
@@ -1003,7 +1191,7 @@ Copyright and Licence
% \end{macrocode}
% \end{macro}
%
-% \changes{v2.0.0}{2021/09/28}{添加根据基字符格式计算外观盒子尺寸的函数}
+% \changes{v2.0.0}{2021/09/28}{添加根据基字符格式计算盒子尺寸函数}
%
% \begin{macro}{\@@_calc_frame_size:}
% 计算外框长度(正方形,由基字符按charf选项设定的格式构造的盒子确定)
@@ -1033,7 +1221,7 @@ Copyright and Licence
\dim_gset_eq:NN \l_@@_frame_size_dim \l_tmpb_dim
}
- \dim_gadd:Nn \l_@@_frame_size_dim { 2pt }
+ \dim_gadd:Nn \l_@@_frame_size_dim { 1pt }
\dim_gset_eq:NN \hanziboxwidth \l_@@_frame_size_dim
\dim_gset_eq:NN \hanziboxheight \l_@@_frame_size_dim
@@ -1073,77 +1261,143 @@ Copyright and Licence
% \end{macrocode}
% \end{macro}
%
+% \changes{v2.2.0}{2021/10/07}{添加拼音四线格绘制函数}
+%
% \begin{macrocode}
-\@@_new_frame_construct:nn { 口 }
+\@@_new_frame_construct:nn { pinyinlines }
{
- \color_stroke:n { hanziboxframecolor }
- \draw_path_rectangle_corners:nn { #1, #2} { #3, #4}
-
- \cs_if_eq:NNTF \@@_aux_color_fill: \c_empty_tl
+ \bool_if:NTF \l_@@_withpinyinlines_bool
{
- \draw_path_use_clear:n { stroke }
+ \draw_scope_begin:
+ \draw_path_moveto:n { #1, 0 }
+ \draw_path_lineto:n { #3, 0 }
+ \draw_path_moveto:n { #1, \l_@@_pinyin_height_i_dim }
+ \draw_path_lineto:n { #3, \l_@@_pinyin_height_i_dim }
+ \draw_path_moveto:n { #1, \l_@@_pinyin_height_ii_dim }
+ \draw_path_lineto:n { #3, \l_@@_pinyin_height_ii_dim }
+ \draw_path_moveto:n { #1, \l_@@_pinyin_height_iii_dim }
+ \draw_path_lineto:n { #3, \l_@@_pinyin_height_iii_dim }
+ \draw_path_use_clear:n { stroke }
+ \draw_scope_end:
}
{
- \draw_path_use_clear:n { stroke , fill }
+ \draw_scope_begin:
+ \hcoffin_set:Nn \l_tmpa_coffin
+ {
+ \tl_use:N \l_@@_pinyin_format_tl
+ \phantom{a}
+ }
+
+ \coffin_resize:Nnn \l_tmpa_coffin
+ { #3 } { \l_@@_pinyin_height_iii_dim }
+
+ \draw_coffin_use:Nnn \l_tmpa_coffin { l } { b }
+ \draw_scope_end:
}
}
% \end{macrocode}
%
-% \changes{v2.1.1}{2021/10/07}{用hanziboxcrosscolor设置内格子线颜色}
+% \changes{v2.1.2}{2021/10/07}{分离汉字外框与填充绘制函数}
%
% \begin{macrocode}
-\@@_new_frame_construct:nn { 十 }
+\@@_new_frame_construct:nn { filledbox }
{
- \tl_if_empty:NF \l_@@_dash_pattern_tl
+ \cs_if_eq:NNF \@@_aux_color_fill: \c_empty_tl
{
- \exp_args:No \draw_dash_pattern:nn { \l_@@_dash_pattern_tl } { 0pt }
+ \color_stroke:n { hanziboxframecolor }
+ \draw_path_rectangle_corners:nn { #1, #2} { #3, #4}
+
+ \draw_path_use_clear:n { stroke, fill }
}
- \color_stroke:n { hanziboxcrosscolor }
- \draw_path_moveto:n { (#3)/2, #2 }
- \draw_path_lineto:n { #3/2, #4 }
- \draw_path_moveto:n { #1, (#4)/2 }
- \draw_path_lineto:n { #3, (#4)/2 }
- \draw_path_use_clear:n { stroke }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@@_new_frame_construct:nn { framebox }
+ {
+ \draw_scope_begin:
+ \color_stroke:n { hanziboxframecolor }
+ \draw_path_rectangle_corners:nn { #1, #2} { #3, #4}
+ \draw_path_use_clear:n { stroke }
+ \draw_scope_end:
+ }
+% \end{macrocode}
+%
+% \changes{v2.1.1}{2021/10/07}{内格子线颜色独立设置}
+%
+% \begin{macrocode}
+\@@_new_frame_construct:nn { 十 }
+ {
+ \draw_scope_begin:
+ \tl_if_empty:NF \l_@@_dash_pattern_tl
+ {
+ \exp_args:No \draw_dash_pattern:nn { \l_@@_dash_pattern_tl } { 0pt }
+ }
+ \draw_linewidth:n{ \l_@@_cross_linewidth_dim }
+ \color_stroke:n { hanziboxcrosscolor }
+ \draw_path_moveto:n { (#3)/2, #2 }
+ \draw_path_lineto:n { #3/2, #4 }
+ \draw_path_moveto:n { #1, (#4)/2 }
+ \draw_path_lineto:n { #3, (#4)/2 }
+ \draw_path_use_clear:n { stroke }
+ \draw_scope_end:
}
\@@_new_frame_construct:nn { × }
{
- \tl_if_empty:NF \l_@@_dash_pattern_tl
- {
- \exp_args:No \draw_dash_pattern:nn { \l_@@_dash_pattern_tl } { 0pt }
- }
- \color_stroke:n { hanziboxcrosscolor }
- \draw_path_moveto:n { #1, #2 }
- \draw_path_lineto:n { #3, #4 }
- \draw_path_moveto:n { #1, #4 }
- \draw_path_lineto:n { #3, #2 }
- \draw_path_use_clear:n { stroke }
+ \draw_scope_begin:
+ \tl_if_empty:NF \l_@@_dash_pattern_tl
+ {
+ \exp_args:No \draw_dash_pattern:nn { \l_@@_dash_pattern_tl } { 0pt }
+ }
+ \draw_linewidth:n{ \l_@@_cross_linewidth_dim }
+ \color_stroke:n { hanziboxcrosscolor }
+ \draw_path_moveto:n { #1, #2 }
+ \draw_path_lineto:n { #3, #4 }
+ \draw_path_moveto:n { #1, #4 }
+ \draw_path_lineto:n { #3, #2 }
+ \draw_path_use_clear:n { stroke }
+ \draw_scope_end:
}
-\@@_new_frame_construct:nn { 田 }
+\@@_new_frame_construct:nn { 米 }
{
- \@@_frame_type_c:n { 口 } {#1} {#2} {#3} {#4} {#5} {#6}
+ \@@_frame_type_c:n { × } {#1} {#2} {#3} {#4} {#5} {#6}
\@@_frame_type_c:n { 十 } {#1} {#2} {#3} {#4} {#5} {#6}
}
-\@@_new_frame_construct:nn { 米 }
+\@@_new_frame_construct:nn { 口 }
{
- \@@_frame_type_c:n { × } {#1} {#2} {#3} {#4} {#5} {#6}
+ \@@_frame_type_c:n { filledbox } {#1} {#2} {#3} {#4} {#5} {#6}
+ \@@_frame_type_c:n { framebox } {#1} {#2} {#3} {#4} {#5} {#6}
+ }
+
+\@@_new_frame_construct:nn { 田 }
+ {
+ \@@_frame_type_c:n { filledbox } {#1} {#2} {#3} {#4} {#5} {#6}
\@@_frame_type_c:n { 十 } {#1} {#2} {#3} {#4} {#5} {#6}
+ \@@_frame_type_c:n { framebox } {#1} {#2} {#3} {#4} {#5} {#6}
}
\@@_new_frame_construct:nn { 咪 }
{
- \@@_frame_type_c:n { 口 } {#1} {#2} {#3} {#4} {#5} {#6}
+ \@@_frame_type_c:n { filledbox } {#1} {#2} {#3} {#4} {#5} {#6}
\@@_frame_type_c:n { × } {#1} {#2} {#3} {#4} {#5} {#6}
\@@_frame_type_c:n { 十 } {#1} {#2} {#3} {#4} {#5} {#6}
+ \@@_frame_type_c:n { framebox } {#1} {#2} {#3} {#4} {#5} {#6}
}
% \end{macrocode}
%
+% \subsubsection{定义边框类型错误提示信息}
+%
+% \begin{macrocode}
+\msg_new:nnn { hanzibox } { frame-exists } { The~ frame~ type~ `#1~ not~ exists. }
+% \end{macrocode}
+%
% \subsubsection{定义缩放方式}
%
% \begin{macro}{\@@_resize:n,\@@_resize_c:n}
-% 缩放方式命名函数
+% 生成缩放方式函数名称
% \begin{macrocode}
\cs_new_nopar:Npn \@@_resize:n #1
{
@@ -1196,7 +1450,7 @@ Copyright and Licence
% \end{macro}
%
% \begin{macro}{\@@_new_resize_method:nn}
-% 缩放方式函数的定义函数。
+% 构建缩放方式列表及函数。
% \begin{macrocode}
\cs_new:Npn \@@_new_resize_method:nn #1
{
@@ -1206,6 +1460,8 @@ Copyright and Licence
% \end{macrocode}
% \end{macro}
%
+% \changes{v2.0.0}{2021/09/28}{删除square缩放样式}
+%
% 定义缩放方式函数。
% \begin{macrocode}
\@@_new_resize_method:nn { none } { }
@@ -1289,8 +1545,6 @@ Copyright and Licence
\msg_new:nnn { hanzibox } { frame-type } { using~ `#1'~ frame. }
% \end{macrocode}
%
-% \changes{v2.0.0}{2021/09/28}{删除square缩放样式}
-%
% \subsubsection{设置字号}
%
% \begin{macro}{\@@_zihao:n}
@@ -1300,16 +1554,50 @@ Copyright and Licence
% \end{macrocode}
% \end{macro}
%
-% \subsubsection{定义边框类型错误提示信息}
+% \changes{v2.2.0}{2021/10/08}{添加字符轮廓处理函数}
%
+% \subsubsection{字符轮廓处理函数}
+% 源码改自\LaTeX 的\pkg{zitie}宏包(\url{https://www.ctan.org/pkg/zitie})。
+%
+% \begin{macro}{\@@_chars_stroke:nn}
+% 设置字符轮廓函数
% \begin{macrocode}
-\msg_new:nnn { hanzibox } { frame-exists } { The~ frame~ type~ `#1~ not~ exists. }
+\cs_new:Npn \@@_chars_stroke:nn #1#2
+ {
+ \special { pdf:code ~ q ~ #1 } #2 \special { pdf:code ~ Q }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_chars_stroke:nn}
+% 字符轮廓选择函数
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_chars_stroke_construct:n #1
+ {
+ \int_case:nn {\l_@@_charstroke_type_int}
+ {
+ {1}{ #1 }
+ {2}{
+ \@@_chars_stroke:nn { 1 ~ Tr ~ 0.10 ~ w ~ [] ~ 0 ~ d ~ 1 ~ J } {#1}
+ }
+ {3}{
+ \@@_chars_stroke:nn { 1 ~ Tr ~ 0.10 ~ w ~ [1~1] ~ 0 ~ d ~ 1 ~ J } {#1}
+ }
+ {4}{
+ \@@_chars_stroke:nn { 3 ~ Tr } {#1}
+ }
+
+ }
+ }
+\cs_generate_variant:Nn \@@_chars_stroke_construct:n { V }
+\cs_generate_variant:Nn \@@_chars_stroke_construct:n { x }
% \end{macrocode}
+% \end{macro}
%
% \subsubsection{命名颜色}
%
% \begin{macro}{\@@_color_select:nn,\@@_color_select:nnn}
-% 颜色命名函数,注意使用的是l3语法
+% 颜色命名函数(使用l3语法)
% \begin{macrocode}
\cs_set_nopar:Npn \@@_color_select:nn #1#2
{
@@ -1369,16 +1657,20 @@ Copyright and Licence
% \end{macrocode}
% \end{macro}
%
+% \changes{v2.2.0}{2021/10/07}{为pinyinf选项增加计算拼音高度功能}
+%
% \begin{macro}{pinyinf}
-% 拼音的格式
+% 拼音格式
% \begin{macrocode}
- pinyinf .tl_set:N = \l_@@_pinyin_format_tl ,
+ pinyinf .code:n = { \tl_set:Nn \l_@@_pinyin_format_tl { #1 }
+ \@@_calc_pinyin_h:
+ },
pinyinf .initial:n = \tiny ,
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{charf}
-% 汉字的格式
+% 汉字格式
% \begin{macrocode}
charf .code:n = { \tl_gset:Nn \l_@@_character_format_tl {#1}
\@@_calc_frame_size:
@@ -1387,7 +1679,7 @@ Copyright and Licence
% \end{macro}
%
% \begin{macro}{tranf}
-% 译文的格式
+% 译文格式
% \begin{macrocode}
tranf .tl_set:N = \l_@@_translation_format_tl ,
tranf .initial:n = \tiny ,
@@ -1395,8 +1687,7 @@ Copyright and Licence
% \end{macro}
%
% \begin{macro}{frametype}
-% 设置边框类型,其取值可以是:none-无方框,口–仅方框, 十–仅中间的横线和竖线,
-% 田–常见的田字格, 米–十字格再加上斜的两条线, 咪–常见的米字格。
+% 边框类型
% \begin{macrocode}
frametype .code:n = { \exp_args:NNx \clist_if_in:NnTF \g_@@_frame_list_clist {#1}
{ \tl_set:Nx \l_@@_frame_type_tl {#1} }
@@ -1406,10 +1697,7 @@ Copyright and Licence
% \end{macro}
%
% \begin{macro}{resize}
-% resize 设置缩放方式,其取值可以是:
-% none,不使用缩放
-% real,使用字符实际宽高缩放,
-% base,使用 basechar 设置的字符的宽高缩放。
+% 缩放方式
% \begin{macrocode}
resize .code:n = { \exp_args:NNx \clist_if_in:NnTF \g_@@_resize_method_clist {#1}
{ \tl_set:Nx \l_@@_resize_method_tl {#1} }
@@ -1456,25 +1744,53 @@ Copyright and Licence
% \end{macro}
%
% \begin{macro}{linewidth}
-% 线条宽度
+% 外框线条宽度
% \begin{macrocode}
- linewidth .dim_set:N = \l_@@_linewidth_dim ,
+ linewidth .dim_set:N = \l_@@_frame_linewidth_dim ,
linewidth .initial:n = 0.4pt ,
% \end{macrocode}
% \end{macro}
%
-% \changes{v2.1.1}{2021/10/07}{添加格子内部十字和米字线颜色与边框颜色比例选项corsscolorratio}
+% \changes{v2.2.0}{2021/10/10}{添加边框线线宽\opt{framelinewidth}选项}
+%
+% \begin{macro}{framelinewidth}
+% 外框线条宽度
+% \begin{macrocode}
+ framelinewidth .dim_set:N = \l_@@_frame_linewidth_dim ,
+ framelinewidth .initial:n = 0.4pt ,
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.2.0}{2021/10/10}{添加拼音四线格线宽pinyinlinewidth选项}
+%
+% \begin{macro}{pinyinlinewidth}
+% 拼音四线格线条宽度
+% \begin{macrocode}
+ pinyinlinewidth .dim_set:N = \l_@@_pinyin_linewidth_dim ,
+ pinyinlinewidth .initial:n = 0.4pt ,
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.2.0}{2021/10/10}{添加内格十字和米字线线宽crosslinewidth选项}
+%
+% \begin{macro}{crosslinewidth}
+% 内格十字和米字线线条宽度
+% \begin{macrocode}
+ crosslinewidth .dim_set:N = \l_@@_cross_linewidth_dim ,
+ crosslinewidth .initial:n = 0.3pt ,
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.1.1}{2021/10/07}{添加颜色比例选项corsscolorratio}
%
% \begin{macro}{crosscolorratio}
-% 边框颜色
+% 盒子内部线条颜色占边框颜色的百分比
% \begin{macrocode}
crosscolorratio .int_set:N = \l_@@_cross_color_ratio_int,
crosscolorratio .initial:n = 20,
% \end{macrocode}
% \end{macro}
%
-% \changes{v2.1.1}{2021/10/07}{为格子内部十字和米字线定义hanziboxcrosscolor颜色}
-%
% \begin{macro}{framecolor}
% 边框颜色
% \begin{macrocode}
@@ -1493,15 +1809,39 @@ Copyright and Licence
% \begin{macrocode}
charcolor .code:n = { \@@_color_select:nn { hanziboxcharcolor } {#1} } ,
charcolor .initial:n = black ,
- charcolor* .code:n = { \@@_color_select:nnn { hanziboxframecolor } {#1} } ,
+ charcolor* .code:n = { \@@_color_select:nnn { hanziboxcharcolor } #1 } ,
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.2.0}{2021/10/07}{添加拼音颜色\opt{pinyincolor}选项}
+%
+% \begin{macro}{pinyincolor}
+% 拼音颜色
+% \begin{macrocode}
+ pinyincolor .code:n = { \@@_color_select:nn { hanziboxpinyincolor } {#1} } ,
+ pinyincolor .initial:n = black ,
+ pinyincolor* .code:n = { \@@_color_select:nnn { hanziboxpinyincolor } #1 } ,
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.2.0}{2021/10/07}{添加译文颜色\opt{trancolor}选项}
+%
+% \begin{macro}{trancolor}
+% 译文颜色
+% \begin{macrocode}
+ trancolor .code:n = { \@@_color_select:nn { hanziboxtrancolor } {#1} } ,
+ trancolor .initial:n = black ,
+ trancolor* .code:n = { \@@_color_select:nnn { hanziboxtrancolor } #1 } ,
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{color}
-% 同时设置边框和字符颜色
+% 同时设置边框、字符、拼音和译文颜色
% \begin{macrocode}
- color .meta:n = { framecolor = #1, charcolor = #1 } ,
- color* .meta:n = { framecolor* = #1, charcolor* = #1 } ,
+ color .meta:n = { framecolor = #1, crosscolor = #1, charcolor = #1,
+ pinyincolor = #1, trancolor = #1 } ,
+ color* .meta:n = { framecolor* = #1, crosscolor = #1, charcolor* = #1,
+ pinyincolor* = #1, trancolor* = #1 } ,
% \end{macrocode}
% \end{macro}
%
@@ -1521,6 +1861,20 @@ Copyright and Licence
% \end{macrocode}
% \end{macro}
%
+% \changes{v2.2.0}{2021/10/08}{添加字符轮廓类型charstroke选项}
+%
+% \begin{macro}{charstroke}
+% 设置汉字轮廓类型
+% \begin{macrocode}
+ charstroke .choice:,
+ charstroke .value_required:n = true,
+ charstroke .choices:nn =
+ { none, solid, dashed, invisible }
+ { \int_set_eq:NN \l_@@_charstroke_type_int \l_keys_choice_int },
+ charstroke .initial:n = none,
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{dashpattern}
% 虚线样式
% \begin{macrocode}
@@ -1530,7 +1884,7 @@ Copyright and Licence
% \end{macro}
%
% \begin{macro}{framearc}
-% 转角半径
+% 矩形外框转角半径
% \begin{macrocode}
framearc .code:n = { \tl_set:Nn \l_@@_frame_arc_tl { {#1}{#1} } } ,
framearc* .tl_set:N = \l_@@_frame_arc_tl ,
@@ -1548,7 +1902,7 @@ Copyright and Licence
% \end{macro}
%
% \begin{macro}{autopinyin}
-% 是否使用\tn{xpyinyin*}命令通过汉字自动获取汉语拼音,默认为true。
+% 是否通过汉字自动获取拼音,默认为true。
% \begin{macrocode}
autopinyin .bool_set:N = \l_@@_autopinyin_bool,
autopinyin .default:n = true,
@@ -1587,10 +1941,22 @@ Copyright and Licence
% \end{macrocode}
% \end{macro}
%
-% \changes{v1.1.0}{2021/09/21}{添加隐藏拼音键。}
+% \changes{v2.2.0}{2021/10/07}{添加是否显示拼音线\opt{pinyinline}选项}
+%
+% \begin{macro}{pinyinline}
+% 是否绘制拼音四线格,默认为true。
+% \begin{macrocode}
+ pinyinline .bool_set:N = \l_@@_withpinyinlines_bool,
+ pinyinline .default:n = true,
+ pinyinline .initial:n = false,
+
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.1.0}{2021/09/21}{添加隐藏拼音、汉字和译文选项}
%
% \begin{macro}{pinyin}
-% 是否显示汉语拼音,默认为true。
+% 是否显示拼音,默认为true。
% \begin{macrocode}
pinyin .bool_set:N = \l_@@_withpinyin_bool,
pinyin .default:n = true,
@@ -1599,10 +1965,8 @@ Copyright and Licence
% \end{macrocode}
% \end{macro}
%
-% \changes{v1.1.0}{2021/09/21}{添加隐藏汉字键。}
-%
% \begin{macro}{hanzi}
-% 是否显示汉语拼音,默认为true。
+% 是否显示汉字,默认为true。
% \begin{macrocode}
hanzi .bool_set:N = \l_@@_withhanzi_bool,
hanzi .default:n = true,
@@ -1611,10 +1975,8 @@ Copyright and Licence
% \end{macrocode}
% \end{macro}
%
-% \changes{v1.1.0}{2021/09/21}{添加隐藏译文键。}
-%
% \begin{macro}{tran}
-% 是否显示汉语拼音,默认为true。
+% 是否显示译文,默认为true。
% \begin{macrocode}
tran .bool_set:N = \l_@@_withtran_bool,
tran .default:n = true,
@@ -1644,8 +2006,6 @@ Copyright and Licence
tranf = \tiny ,
frametype = none ,
resize = none ,
- crosscolorratio = 20,
- framecolor = black,
}
% \end{macrocode}
@@ -1662,19 +2022,8 @@ Copyright and Licence
%
% \subsection{内部函数}
%
-% \begin{macro}{\@@_pinyinaux:n}
-% \begin{macro}{\@@_pinyinaux:x}
-% \pkg{xpyinyin}宏包\tn{pinyin} 命令的\LaTeX3{}版本函数及其函数变体。
-% \begin{macrocode}
- % \xpinyinsetup{pysep={\hspace*{1em}}}
-\cs_set_eq:NN \@@_pinyinaux:n \pinyin
-\cs_generate_variant:Nn \@@_pinyinaux:n { x }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
% \begin{macro}{\@@_dialog:nnnn}
-% 手动汉字盒子排版内部命令。
+% 手动汉字盒子排版命令。
% \begin{macrocode}
\cs_new:Npn \@@_dialog:nnnn #1#2#3#4
{
@@ -1685,70 +2034,127 @@ Copyright and Licence
\tl_set:Nx \l_@@_pinyin_tl {#3}
\tl_set:Nx \l_@@_translation_tl {#4}
- \hcoffin_set:Nn \l_@@_pinyin_box_coffin
- {
- \tl_use:N \l_@@_pinyin_format_tl
- \tl_use:N \l_@@_pinyin_tl
- }
\hcoffin_set:Nn \l_@@_str_box_coffin
{
\tl_map_inline:Nn \l_@@_character_tl
{
- \@@_single_handle:N ##1 \allowbreak
+ \@@_single_handle:N ##1
+ }
+ }
+ \hcoffin_set:Nn \l_tmpa_coffin
+ {
+ \hcoffin_set:Nn \l_@@_pinyin_box_coffin
+ {
+ \color_select:n { hanziboxpinyincolor }
+ \tl_use:N \l_@@_pinyin_format_tl
+ \tl_use:N \l_@@_pinyin_tl
}
+ \dim_set:Nn \l_tmpa_dim { \coffin_wd:N \l_@@_pinyin_box_coffin }
+ \draw_begin:
+ \draw_linewidth:n { \l_@@_frame_linewidth_dim }
+ \color_stroke:n { hanziboxframecolor!50 }
+
+ \draw_path_scope_begin:
+ \@@_frame_type_c:n { pinyinlines }
+ { 0 } { 0 } { \l_tmpa_dim } { \hanziboxheight } { 1.0 } { 1.0 }
+ \draw_transform_shift:n {\l_tmpa_dim / 2.0, \l_@@_pinyin_height_i_dim }
+ \draw_coffin_use:Nnn \l_@@_pinyin_box_coffin { hc } { H }
+ \draw_path_scope_end:
+ \draw_end:
}
\hcoffin_set:Nn \l_@@_tran_box_coffin
{
\tl_use:N \l_@@_translation_format_tl
\tl_use:N \l_@@_translation_tl
}
- \coffin_join:NnnNnnnn \l_@@_str_box_coffin
- { hc } { t } \l_@@_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
- \coffin_join:NnnNnnnn \l_@@_str_box_coffin
+ \coffin_join:NnnNnnnn \l_tmpa_coffin { hc } { b }
+ \l_@@_str_box_coffin { hc } { t } { 0pt } { \l_@@_frame_linewidth_dim }
+ \coffin_join:NnnNnnnn \l_tmpa_coffin
{ hc } { b } \l_@@_tran_box_coffin { hc } { t } { 0pt } { -2pt }
- \coffin_set_eq:NN \l_@@_box_coffin \l_@@_str_box_coffin
+ \coffin_set_eq:NN \l_@@_box_coffin \l_tmpa_coffin
\@@_resize_c:n { \l_@@_resize_method_tl }
\coffin_typeset:Nnnnn \l_@@_box_coffin
{ l } { b } { 0pt } { 0pt }
+ \allowbreak
\group_end:
}
% \end{macrocode}
% \end{macro}
%
% \changes{v2.0.1}{2021/09/28}{分离多字、单字、0个字的盒子构造代码}
-% \changes{v2.1.0}{2021/09/30}{更新拼音获取方式,以处理\tn{setuppinyin}的结果}
+% \changes{v2.1.0}{2021/09/30}{更新拼音获取方式}
+% \changes{v2.2.0}{2021/10/09}{分离汉字拼音coffin构造函数}
+%
+% \begin{macro}{\@@_single_pinyin_hanzi_construct:NN}
+% 构造单个拼音+汉字coffin。
+% \begin{macrocode}
+\cs_new:Npn \@@_single_pinyin_hanzi_construct:NN #1#2
+ {
+ \tl_if_empty:NTF #1
+ {
+ \hcoffin_set:Nn \l_tmpa_coffin
+ {
+ \@@_single_handle:N \c_@@_basechar_tl
+ }
+ }
+ {
+ \hcoffin_set:Nn \l_tmpa_coffin
+ {
+ \@@_single_handle:N #1
+ }
+ }
+
+ \tl_if_empty:NTF #2
+ {
+ \hcoffin_set:Nn \l_@@_pinyin_hanzi_coffin
+ {
+ \@@_single_pinyin_lines:
+ }
+
+ \coffin_join:NnnNnnnn \l_@@_pinyin_hanzi_coffin
+ { hc } { b } \l_tmpa_coffin { hc } { t } { 0pt } { \l_@@_pinyin_linewidth_dim }
+ }
+ {
+ \bool_if:NTF \l_@@_withpinyin_bool
+ {
+ \hcoffin_set:Nn \l_@@_pinyin_hanzi_coffin
+ {
+ \@@_single_pinyin:V #2
+ }
+
+ \coffin_join:NnnNnnnn \l_@@_pinyin_hanzi_coffin
+ { hc } { b } \l_tmpa_coffin { hc } { t } { 0pt } { \l_@@_pinyin_linewidth_dim }
+ }
+ {
+ \coffin_set_eq:NN \l_@@_pinyin_hanzi_coffin \l_tmpa_coffin
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
%
% \begin{macro}{\@@_multi_str_coffin_construct:}
% 构造多汉字带拼音字符串盒子。
% \begin{macrocode}
\cs_new:Npn \@@_multi_str_coffin_construct:
{
+ \hcoffin_set:Nn \l_@@_str_box_coffin
+ {
+ }
\bool_if:NTF \l_@@_autopinyin_bool
{
- \hcoffin_set:Nn \l_@@_str_box_coffin
+ \tl_map_inline:Nn \l_@@_character_tl
{
- \tl_map_inline:Nn \l_@@_character_tl
- {
- \hcoffin_set:Nn \l_tmpa_coffin
- {
- \@@_single_handle:N ##1
- }
+ \@@_get_hanzi_pinyin:n { ##1 }
- \bool_if:NT \l_@@_withpinyin_bool
- {
- \@@_get_hanzi_pinyin:n { ##1 }
- \@@_single_pinyin:V \l_@@_hanzi_pinyin_tl
+ \@@_single_pinyin_hanzi_construct:NN ##1 \l_@@_hanzi_pinyin_tl
- \coffin_join:NnnNnnnn \l_tmpa_coffin
- { hc } { t } \l_@@_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
- }
- \coffin_typeset:Nnnnn \l_tmpa_coffin
- { l } { b } { 0pt } { 0pt }
- \allowbreak
- }
+ \coffin_join:NnnNnnnn \l_@@_str_box_coffin { r } { b }
+ \l_@@_pinyin_hanzi_coffin { l } { b }
+ { -\l_@@_frame_linewidth_dim } { 0pt }
}
}
{
@@ -1756,131 +2162,69 @@ Copyright and Licence
\clist_clear:N \l_@@_tone_pinyin_clist
\clist_set:NV \l_@@_tone_pinyin_clist \l_@@_tone_pinyin_tl
\int_set:Nn \l_tmpa_int {\clist_count:N \l_@@_tone_pinyin_clist}
- \hcoffin_set:Nn \l_@@_str_box_coffin
- {
- \int_compare:nNnTF { \l_@@_character_int } = { \l_tmpa_int }
- {
- \tl_map_inline:Nn \l_@@_character_tl
- {
- \hcoffin_set:Nn \l_tmpa_coffin
- {
- \@@_single_handle:N ##1
- }
-
- \bool_if:NT \l_@@_withpinyin_bool
- {
- \clist_pop:NN \l_@@_tone_pinyin_clist \l_tmpb_tl
- \@@_single_pinyin:V \l_tmpb_tl
-
- \coffin_join:NnnNnnnn \l_tmpa_coffin
- { hc } { t } \l_@@_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
- }
- \coffin_typeset:Nnnnn \l_tmpa_coffin
- { l } { b } { 0pt } { 0pt }
- \allowbreak
- }
- }
- {
- \int_compare:nNnTF { \l_@@_character_int } > { \l_tmpa_int }
- {
- \int_step_inline:nn { \l_tmpa_int }
- {
- \hcoffin_set:Nn \l_tmpa_coffin
- {
- \tl_set:Nx \l_tmpa_tl {\tl_item:Nn \l_@@_character_tl { ##1 }}
- \@@_single_handle:N \l_tmpa_tl
- }
- \bool_if:NT \l_@@_withpinyin_bool
- {
- \clist_pop:NN \l_@@_tone_pinyin_clist \l_tmpb_tl
- \@@_single_pinyin:V \l_tmpb_tl
-
- \coffin_join:NnnNnnnn \l_tmpa_coffin
- { hc } { t } \l_@@_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
- }
- \coffin_typeset:Nnnnn \l_tmpa_coffin
- { l } { b } { 0pt } { 0pt }
- \allowbreak
- }
- \int_step_inline:nnn { \l_tmpa_int + 1 } { \l_@@_character_int }
- {
- \hcoffin_set:Nn \l_tmpa_coffin
- {
- \tl_set:Nx \l_tmpa_tl {\tl_item:Nn \l_@@_character_tl { ##1 }}
- \@@_single_handle:N \l_tmpa_tl
- }
- \coffin_typeset:Nnnnn \l_tmpa_coffin
- { l } { b } { 0pt } { 0pt }
- \allowbreak
- }
- }
- {
- \int_step_inline:nn { \l_@@_character_int }
- {
- \hcoffin_set:Nn \l_tmpa_coffin
- {
- \tl_set:Nx \l_tmpa_tl {\tl_item:Nn \l_@@_character_tl { ##1 }}
- \@@_single_handle:N \l_tmpa_tl
- }
- \bool_if:NT \l_@@_withpinyin_bool
- {
- \clist_pop:NN \l_@@_tone_pinyin_clist \l_tmpb_tl
- \@@_single_pinyin:V \l_tmpb_tl
-
- \coffin_join:NnnNnnnn \l_tmpa_coffin
- { hc } { t } \l_@@_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
- }
- \coffin_typeset:Nnnnn \l_tmpa_coffin
- { l } { b } { 0pt } { 0pt }
- \allowbreak
- }
-
- \bool_if:NTF \l_@@_withhanzi_bool
- {
- \bool_set_false:N \l_@@_withhanzi_bool
- \int_step_inline:nnn { \l_@@_character_int + 1 } { \l_tmpa_int }
- {
- \hcoffin_set:Nn \l_tmpa_coffin
- {
- \@@_single_handle:N \c_@@_basechar_tl
- }
- \bool_if:NT \l_@@_withpinyin_bool
- {
- \clist_pop:NN \l_@@_tone_pinyin_clist \l_tmpb_tl
- \@@_single_pinyin:V \l_tmpb_tl
-
- \coffin_join:NnnNnnnn \l_tmpa_coffin
- { hc } { t } \l_@@_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
- }
- \coffin_typeset:Nnnnn \l_tmpa_coffin
- { l } { b } { 0pt } { 0pt }
- \allowbreak
- }
- \bool_set_true:N \l_@@_withhanzi_bool
- }
- {
- \int_step_inline:nnn { \l_@@_character_int + 1 } { \l_tmpa_int }
- {
- \hcoffin_set:Nn \l_tmpa_coffin
- {
- \@@_single_handle:N \c_@@_basechar_tl
- }
- \bool_if:NT \l_@@_withpinyin_bool
- {
- \clist_pop:NN \l_@@_tone_pinyin_clist \l_tmpb_tl
- \@@_single_pinyin:V \l_tmpb_tl
-
- \coffin_join:NnnNnnnn \l_tmpa_coffin
- { hc } { t } \l_@@_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
- }
- \coffin_typeset:Nnnnn \l_tmpa_coffin
- { l } { b } { 0pt } { 0pt }
- \allowbreak
- }
- }
- }
- }
- }
+ \int_compare:nNnTF { \l_@@_character_int } = { \l_tmpa_int }
+ {
+ \tl_map_inline:Nn \l_@@_character_tl
+ {
+ \clist_pop:NN \l_@@_tone_pinyin_clist \l_tmpb_tl
+ \@@_single_pinyin_hanzi_construct:NN ##1 \l_tmpb_tl
+
+ \coffin_join:NnnNnnnn \l_@@_str_box_coffin { r } { b }
+ \l_@@_pinyin_hanzi_coffin { l } { b }
+ { -\l_@@_frame_linewidth_dim } { 0pt }
+ }
+ }
+ {
+ \int_compare:nNnTF { \l_@@_character_int } > { \l_tmpa_int }
+ {
+ \int_step_inline:nn { \l_tmpa_int }
+ {
+ \tl_set:Nx \l_tmpa_tl {\tl_item:Nn \l_@@_character_tl { ##1 }}
+ \clist_pop:NN \l_@@_tone_pinyin_clist \l_tmpb_tl
+
+ \@@_single_pinyin_hanzi_construct:NN \l_tmpa_tl \l_tmpb_tl
+ \coffin_join:NnnNnnnn \l_@@_str_box_coffin { r } { b }
+ \l_@@_pinyin_hanzi_coffin { l } { b }
+ { -\l_@@_frame_linewidth_dim } { 0pt }
+ }
+ \int_step_inline:nnn { \l_tmpa_int + 1 } { \l_@@_character_int }
+ {
+ \tl_set:Nx \l_tmpa_tl {\tl_item:Nn \l_@@_character_tl { ##1 }}
+ \tl_clear:N \l_tmpb_tl
+
+ \@@_single_pinyin_hanzi_construct:NN \l_tmpa_tl \l_tmpb_tl
+ \coffin_join:NnnNnnnn \l_@@_str_box_coffin { r } { b }
+ \l_@@_pinyin_hanzi_coffin { l } { b }
+ { -\l_@@_frame_linewidth_dim } { 0pt }
+ }
+ }
+ {
+ \int_step_inline:nn { \l_@@_character_int }
+ {
+ \tl_set:Nx \l_tmpa_tl {\tl_item:Nn \l_@@_character_tl { ##1 }}
+ \clist_pop:NN \l_@@_tone_pinyin_clist \l_tmpb_tl
+
+ \@@_single_pinyin_hanzi_construct:NN \l_tmpa_tl \l_tmpb_tl
+ \coffin_join:NnnNnnnn \l_@@_str_box_coffin { r } { b }
+ \l_@@_pinyin_hanzi_coffin { l } { b }
+ { -\l_@@_frame_linewidth_dim } { 0pt }
+ }
+
+ \bool_set_eq:NN \l_tmpa_bool \l_@@_withhanzi_bool
+ \bool_set_false:N \l_@@_withhanzi_bool
+ \int_step_inline:nnn { \l_@@_character_int + 1 } { \l_tmpa_int }
+ {
+ \tl_clear:N \l_tmpa_tl
+ \clist_pop:NN \l_@@_tone_pinyin_clist \l_tmpb_tl
+
+ \@@_single_pinyin_hanzi_construct:NN \l_tmpa_tl \l_tmpb_tl
+ \coffin_join:NnnNnnnn \l_@@_str_box_coffin { r } { b }
+ \l_@@_pinyin_hanzi_coffin { l } { b }
+ { -\l_@@_frame_linewidth_dim } { 0pt }
+ }
+ \bool_set_eq:NN \l_@@_withhanzi_bool \l_tmpa_bool
+ }
+ }
}
}
% \end{macrocode}
@@ -1893,91 +2237,77 @@ Copyright and Licence
{
\bool_if:NTF \l_@@_autopinyin_bool
{
- \@@_multi_str_coffin_construct:
+ \hcoffin_set:Nn \l_@@_str_box_coffin
+ {
+ \@@_get_hanzi_pinyin:V \l_@@_character_tl
+
+ \@@_single_pinyin_hanzi_construct:NN
+ \l_@@_character_tl \l_@@_hanzi_pinyin_tl
+ \coffin_typeset:Nnnnn \l_@@_pinyin_hanzi_coffin
+ { l } { b } { 0pt } { 0pt }
+ }
}
{
\hcoffin_set:Nn \l_@@_str_box_coffin
{
- \hcoffin_set:Nn \l_tmpa_coffin
- {
- \@@_single_handle:N \l_@@_character_tl
- }
+ \@@_get_tone_pinyin:V \l_@@_pinyin_tl
+ \clist_clear:N \l_@@_tone_pinyin_clist
+ \clist_set:NV \l_@@_tone_pinyin_clist \l_@@_tone_pinyin_tl
+ \tl_set:Nx \l_tmpb_tl { \clist_use:Nn \l_@@_tone_pinyin_clist { } }
- \bool_if:NT \l_@@_withpinyin_bool
- {
- \hcoffin_set:Nn \l_@@_pinyin_box_coffin
- {
- \color_select:n { hanziboxcharcolor }
- \tl_use:N \l_@@_pinyin_format_tl
- \@@_get_tone_pinyin:V \l_@@_pinyin_tl
- \clist_clear:N \l_@@_tone_pinyin_clist
- \clist_set:NV \l_@@_tone_pinyin_clist \l_@@_tone_pinyin_tl
- \clist_use:Nn \l_@@_tone_pinyin_clist {}
- }
- \coffin_join:NnnNnnnn \l_tmpa_coffin
- { hc } { t } \l_@@_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
- }
- \coffin_typeset:Nnnnn \l_tmpa_coffin
+ \@@_single_pinyin_hanzi_construct:NN \l_@@_character_tl \l_tmpb_tl
+ \coffin_typeset:Nnnnn \l_@@_pinyin_hanzi_coffin
{ l } { b } { 0pt } { 0pt }
- \allowbreak
}
}
}
% \end{macrocode}
% \end{macro}
%
-% \changes{v2.1.1}{2021/10/02}{修复无汉字手动拼音无法正确处理的问题}
+% \changes{v2.1.1}{2021/10/02}{修复无汉字手动拼音分割问题}
%
% \begin{macro}{\@@_null_str_coffin_construct:}
% 构造空白汉字(0个汉字)带拼音字符串盒子。
% \begin{macrocode}
\cs_new:Npn \@@_null_str_coffin_construct:
{
+ \bool_set_eq:NN \l_tmpa_bool \l_@@_withhanzi_bool
+ \bool_set_false:N \l_@@_withhanzi_bool
\bool_if:NTF \l_@@_autopinyin_bool
{
\hcoffin_set:Nn \l_@@_str_box_coffin
{
- \bool_set_false:N \l_@@_withhanzi_bool
\@@_single_handle:N \c_@@_basechar_tl
- \allowbreak
}
}
{
\hcoffin_set:Nn \l_@@_str_box_coffin
{
- \bool_if:NTF \l_@@_withpinyin_bool
- {
- \@@_get_tone_pinyin:V \l_@@_pinyin_tl
- \clist_clear:N \l_@@_tone_pinyin_clist
- \clist_set:NV \l_@@_tone_pinyin_clist \l_@@_tone_pinyin_tl
- \int_set:Nn \l_tmpa_int {\clist_count:N \l_@@_tone_pinyin_clist}
-
- \int_step_inline:nn { \l_tmpa_int }
- {
- \bool_set_false:N \l_@@_withhanzi_bool
-
- \hcoffin_set:Nn \l_tmpa_coffin
- {
- \@@_single_handle:N \c_@@_basechar_tl
- }
-
- \clist_pop:NN \l_@@_tone_pinyin_clist \l_tmpb_tl
- \@@_single_pinyin:V \l_tmpb_tl
+ }
+ \bool_if:NTF \l_@@_withpinyin_bool
+ {
+ \@@_get_tone_pinyin:V \l_@@_pinyin_tl
+ \clist_clear:N \l_@@_tone_pinyin_clist
+ \clist_set:NV \l_@@_tone_pinyin_clist \l_@@_tone_pinyin_tl
+ \int_set:Nn \l_tmpa_int {\clist_count:N \l_@@_tone_pinyin_clist}
- \coffin_join:NnnNnnnn \l_tmpa_coffin
- { hc } { t } \l_@@_pinyin_box_coffin { hc } { H } { 0pt } { 3pt }
- \coffin_typeset:Nnnnn \l_tmpa_coffin
- { l } { b } { 0pt } { 0pt }
- \allowbreak
- }
- }
+ \int_step_inline:nn { \l_tmpa_int }
{
- \bool_set_false:N \l_@@_withhanzi_bool
- \@@_single_handle:N \c_@@_basechar_tl
- \allowbreak
+ \tl_clear:N \l_tmpa_tl
+ \clist_pop:NN \l_@@_tone_pinyin_clist \l_tmpb_tl
+
+ \@@_single_pinyin_hanzi_construct:NN \l_tmpa_tl \l_tmpb_tl
+ \coffin_join:NnnNnnnn \l_@@_str_box_coffin { r } { b }
+ \l_@@_pinyin_hanzi_coffin { l } { b }
+ { -\l_@@_frame_linewidth_dim } { 0pt }
}
}
+ {
+ \bool_set_false:N \l_@@_withhanzi_bool
+ \@@_single_handle:N \c_@@_basechar_tl
+ }
}
+ \bool_set_eq:NN \l_@@_withhanzi_bool \l_tmpa_bool
}
% \end{macrocode}
% \end{macro}
@@ -2028,7 +2358,7 @@ Copyright and Licence
{
\hcoffin_set:Nn \l_@@_tran_box_coffin
{
- \color_select:n { hanziboxcharcolor }
+ \color_select:n { hanziboxtrancolor }
\tl_use:N \l_@@_translation_format_tl
\tl_use:N \l_@@_translation_tl
}
@@ -2042,6 +2372,7 @@ Copyright and Licence
\coffin_typeset:Nnnnn \l_@@_box_coffin
{ l } { b } { 0pt } { 0pt }
+ \allowbreak
\group_end:
}
% \end{macrocode}
@@ -2062,7 +2393,7 @@ Copyright and Licence
\@@_split_pinyin_withtone:n { #1 }
\hcoffin_set:Nn \l_@@_pinyin_box_coffin
{
- \color_select:n { hanziboxcharcolor }
+ \color_select:n { hanziboxpinyincolor }
\tl_use:N \l_@@_pinyin_format_tl
\bool_if:NTF \l_@@_withinitial_bool
@@ -2093,7 +2424,7 @@ Copyright and Licence
{
\hcoffin_set:Nn \l_@@_pinyin_box_coffin
{
- \color_select:n { hanziboxcharcolor }
+ \color_select:n { hanziboxpinyincolor }
\tl_use:N \l_@@_pinyin_format_tl
#1
}
@@ -2103,12 +2434,13 @@ Copyright and Licence
\@@_split_pinyin_withouttone:n { #1 }
\hcoffin_set:Nn \l_@@_pinyin_box_coffin
{
- \color_select:n { hanziboxcharcolor }
+ \color_select:n { hanziboxtrancolor }
\tl_use:N \l_@@_pinyin_format_tl
\tl_use:N \l_@@_pinyin_tl
}
}
+ \@@_single_pinyin_lines_construct:
}
\cs_generate_variant:Nn \@@_single_pinyin:n { V }
\cs_generate_variant:Nn \@@_single_pinyin:n { x }
@@ -2143,6 +2475,7 @@ Copyright and Licence
% \end{macro}
%
% \changes{v2.0.0}{2021/09/27}{删除单个汉字构造中添加拼音的功能}
+% \changes{v2.2.0}{2021/10/08}{为汉字添加字符轮廓处理}
%
% \begin{macro}{\@@_single_construct:N}
% 构造单个汉字盒子
@@ -2155,7 +2488,7 @@ Copyright and Licence
{
\color_select:n { hanziboxcharcolor }
\tl_use:N \l_@@_character_format_tl
- #1
+ \@@_chars_stroke_construct:n { #1 }
}
}
{
@@ -2184,7 +2517,7 @@ Copyright and Licence
\cs_new:Npn \@@_single_frame_construct:
{
\draw_begin:
- \draw_linewidth:n { \l_@@_linewidth_dim }
+ \draw_linewidth:n { \l_@@_frame_linewidth_dim }
\@@_aux_color_fill:
\color_stroke:n { hanziboxframecolor }
@@ -2201,6 +2534,46 @@ Copyright and Licence
% \end{macrocode}
% \end{macro}
%
+% \changes{v2.2.0}{2021/10/07}{添加构造单个拼音盒子函数}
+%
+% \begin{macro}{\@@_single_pinyin_lines_construct:}
+% 构造单个拼音盒子
+% \begin{macrocode}
+\cs_new:Npn \@@_single_pinyin_lines_construct:
+ {
+ \draw_begin:
+ \draw_linewidth:n { \l_@@_pinyin_linewidth_dim }
+ \color_stroke:n { hanziboxframecolor!50 }
+
+ \draw_path_scope_begin:
+ \@@_frame_type_c:n { pinyinlines }
+ { 0 } { 0 } { \hanziboxwidth } { \hanziboxheight } { 1.0 } { 1.0 }
+ \draw_transform_shift:n {\hanziboxwidth / 2.0, \l_@@_pinyin_height_i_dim }
+ \draw_coffin_use:Nnn \l_@@_pinyin_box_coffin { hc } { H }
+ \draw_path_scope_end:
+ \draw_end:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.2.0}{2021/10/07}{添加构造单个拼音线函数}
+%
+% \begin{macro}{\@@_single_pinyin_lines:}
+% 构造单个拼音线
+% \begin{macrocode}
+\cs_new:Npn \@@_single_pinyin_lines:
+ {
+ \draw_begin:
+ \draw_linewidth:n { \l_@@_pinyin_linewidth_dim }
+ \color_stroke:n { hanziboxframecolor!50 }
+
+ \@@_frame_type_c:n { pinyinlines }
+ { 0 } { 0 } { \hanziboxwidth } { \hanziboxheight } { 1.0 } { 1.0 }
+ \draw_end:
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{\pkg{xpinyin}宏包拼音后处理函数}
%
% \changes{v2.1.0}{2021/09/30}{添加从xpinyin宏包中提取拼音串函数。}
@@ -2293,6 +2666,7 @@ Copyright and Licence
}
{ \tl_set_eq:NN \l_@@_hanzi_pinyin_tl \l_tmpa_tl }
}
+\cs_generate_variant:Nn \@@_get_hanzi_pinyin:n { V }
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/xetex/latex/hanzibox/hanzibox.pdf b/macros/xetex/latex/hanzibox/hanzibox.pdf
index de80686c06..d6711355a7 100644
--- a/macros/xetex/latex/hanzibox/hanzibox.pdf
+++ b/macros/xetex/latex/hanzibox/hanzibox.pdf
Binary files differ
diff --git a/support/TeX4ht/source/tex4ht-4ht.tex b/support/TeX4ht/source/tex4ht-4ht.tex
index ae34076fa0..a7621ecb95 100644
--- a/support/TeX4ht/source/tex4ht-4ht.tex
+++ b/support/TeX4ht/source/tex4ht-4ht.tex
@@ -1,4 +1,4 @@
-% $Id: tex4ht-4ht.tex 989 2021-10-04 09:35:17Z michal_h21 $
+% $Id: tex4ht-4ht.tex 991 2021-10-10 18:03:42Z michal_h21 $
% tex tex4ht-4ht or ht tex tex4ht-4ht
%
% Copyright 2009-2021 TeX Users Group
@@ -16984,7 +16984,7 @@ See report at screnggu.tex
>>>
%%%%%%%%%%%%%%%%%%
-\Section{srcbook}
+\Section{srcartcl}
\<scrartcl.4ht\><<<
% scrartcl.4ht (|version), generated from |jobname.tex
@@ -17130,6 +17130,12 @@ UnDFexyz}%
\pend:defI\@makefntext{\IgnorePar}
>>>
+It seems that we got the error message about old font commands again. Probably because
+TeX4ht now loads before class files. We reuse the code used in Koma classes
+\<scr artcl, reprt, book\><<<
+\let\scr@defineobsoletefonts\thr@@
+>>>
+
\<general scrbook\><<<
\Configure{UndefinedSec}{likepart}
\Configure{UndefinedSec}{likechapter}
diff --git a/support/make4ht/changelog.tex b/support/make4ht/changelog.tex
index d1b9b22219..8747cc4bf5 100644
--- a/support/make4ht/changelog.tex
+++ b/support/make4ht/changelog.tex
@@ -3,6 +3,25 @@
\begin{itemize}
\item
+ 2021/10/11
+
+ \begin{itemize}
+ \tightlist
+ \item
+ version \texttt{0.3j} released.
+ \end{itemize}
+\item
+ 2021/10/09
+
+ \begin{itemize}
+ \tightlist
+ \item
+ fixed wrong DOM object name in the ODT format.
+ \item
+ add addtional \texttt{\textless{}mrow\textgreater{}} elements when
+ necessary.
+ \end{itemize}
+\item
2021/09/30
\begin{itemize}
diff --git a/support/make4ht/domfilters/make4ht-mathmlfixes.lua b/support/make4ht/domfilters/make4ht-mathmlfixes.lua
index 55c0da379b..42f1e55775 100644
--- a/support/make4ht/domfilters/make4ht-mathmlfixes.lua
+++ b/support/make4ht/domfilters/make4ht-mathmlfixes.lua
@@ -37,6 +37,30 @@ local function fix_nested_mstyle(el)
end
end
+-- if element contains
+-- wrap everything in <mrow>
+local function top_mrow(math)
+ local children = math:get_children()
+ local put_mrow = false
+ -- don't process elements with one or zero children
+ -- don't process elements that already are mrow
+ if #children < 2 or math:get_element_name() == "mrow" then return nil end
+ for _,v in ipairs(children) do
+ if v:is_element() and is_token_element(v) then
+ put_mrow = true
+ break
+ end
+ end
+ if put_mrow then
+ local mrow = math:create_element("mrow")
+ for _, el in ipairs(children) do
+ mrow:add_child_node(el)
+ end
+ math._children = {mrow}
+ end
+
+end
+
local function get_fence(el, attr, form)
-- convert fence attribute to <mo> element
-- attr: open | close
@@ -108,6 +132,7 @@ return function(dom)
end
fix_token_elements(el)
fix_nested_mstyle(el)
+ top_mrow(el)
end)
return dom
end
diff --git a/support/make4ht/formats/make4ht-odt.lua b/support/make4ht/formats/make4ht-odt.lua
index 257e597bb3..f3721eba00 100644
--- a/support/make4ht/formats/make4ht-odt.lua
+++ b/support/make4ht/formats/make4ht-odt.lua
@@ -127,7 +127,7 @@ local function fix_picture_sizes(tmpdir)
end
local content = f:read("*all") or ""
f:close()
- local status, domobject = pcall(function()
+ local status, dom= pcall(function()
return domobject.parse(content)
end)
if not status then
@@ -224,13 +224,13 @@ function M.modify_build(make)
-- expanded in tex4ht.env in Miktex or Debian
call_xtpipes(make)
-- fix the image dimensions wrongly set by xtpipes
- local domfilters = domfilter {"t4htlinks", "odtpartable"}
+ local domfilters = domfilter({"t4htlinks", "odtpartable"}, "odtfilters")
make:match("4oo$", domfilters)
- -- fixes for mathml
- local mathmldomfilters = domfilter {"joincharacters","mathmlfixes"}
- make:match("4om$", mathmldomfilters)
-- execute it before xtpipes, because we don't want xtpipes to mess with t4htlink elements
move_matches(make)
+ -- fixes for mathml
+ local mathmldomfilters = domfilter({"joincharacters","mathmlfixes"}, "mathmlfilters")
+ make:match("4om$", mathmldomfilters)
-- convert XML entities for Unicode characters produced by Xtpipes to characters
local fixentities = filter {"entities-to-unicode", remove_xtpipes}
make:match("4oo", fixentities)
diff --git a/support/make4ht/make4ht b/support/make4ht/make4ht
index 1e7b0d73df..74a9c22d2b 100755
--- a/support/make4ht/make4ht
+++ b/support/make4ht/make4ht
@@ -29,7 +29,7 @@ make4ht [options] filename ["tex4ht.sty op." "tex4ht op." "t4ht op" "latex op"]
-- set version number. the template should be replaced by the
-- actual version number by the build script
-local version = "v0.3i"
+local version = "v0.3j"
mkparams.version_number = version
local args = mkparams.get_args()
diff --git a/support/make4ht/make4ht-doc.pdf b/support/make4ht/make4ht-doc.pdf
index 0b6b155444..58ce628888 100644
--- a/support/make4ht/make4ht-doc.pdf
+++ b/support/make4ht/make4ht-doc.pdf
Binary files differ
diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
index 944d101d9f..e868f46994 100644
--- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
@@ -37,6 +37,7 @@ $mirrors = {
'Iran' => {
'http://ctan.yazd.ac.ir/' => 1,
'https://ctan.asis.ai/' => 1,
+ 'https://ctan.um.ac.ir/' => 1,
},
'Japan' => {
'https://ftp.jaist.ac.jp/pub/CTAN/' => 1,
@@ -46,7 +47,9 @@ $mirrors = {
'Korea' => {
'http://ftp.ktug.org/tex-archive/' => 1,
'https://cran.asia/tex/' => 1,
+ 'https://ftp.harukasan.org/CTAN/' => 1,
'https://ftp.kaist.ac.kr/pub/tex-archive/' => 1,
+ 'https://mirror.kakao.com/CTAN/' => 1,
'https://mirror.navercorp.com/CTAN/' => 1,
'https://mirror.yongbok.net/ctan/' => 1,
},
@@ -175,6 +178,7 @@ $mirrors = {
'https://ctan.mirror.rafal.ca/' => 1,
'https://mirror.0xem.ma/tex-archive/' => 1,
'https://mirror.csclub.uwaterloo.ca/CTAN/' => 1,
+ 'https://mirror.its.dal.ca/ctan/' => 1,
'https://muug.ca/mirror/ctan/' => 1,
},
'Costa Rica' => {
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index c2894f4b8b..b8a00683e2 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/60725
+depend revision/60739
name 00texlive.image
category TLCore
-revision 60723
+revision 60732
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
@@ -3137,6 +3137,8 @@ runfiles size=12493
tlpkg/tlpsrc/pgfornament.tlpsrc
tlpkg/tlpsrc/pgfplots.tlpsrc
tlpkg/tlpsrc/phaistos.tlpsrc
+ tlpkg/tlpsrc/phfcc.tlpsrc
+ tlpkg/tlpsrc/phfextendedabstract.tlpsrc
tlpkg/tlpsrc/phffullpagefigure.tlpsrc
tlpkg/tlpsrc/phfnote.tlpsrc
tlpkg/tlpsrc/phfparen.tlpsrc
@@ -4468,7 +4470,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd
name 00texlive.installer
category TLCore
-revision 60719
+revision 60727
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
@@ -67477,7 +67479,7 @@ containerchecksum 0568a3251d71fb3106fbb3961427200419ae1df22d39b5e72c608e2d94fc35
name collection-latexextra
category Collection
-revision 60619
+revision 60732
shortdesc LaTeX additional packages
relocated 1
longdesc A very large collection of add-on packages for LaTeX.
@@ -68453,6 +68455,8 @@ depend perltex
depend permute
depend petiteannonce
depend pgfmath-xfp
+depend phfcc
+depend phfextendedabstract
depend phffullpagefigure
depend phfnote
depend phfparen
@@ -68877,8 +68881,8 @@ depend zref
depend zref-check
depend zwgetfdate
depend zwpagelayout
-containersize 6456
-containerchecksum 0965036222e2754c1de11d4c3ac4bc42fc9f9e68dab7e68eb39841a1f8073084f5f9a05657efb6da8dab0a1446c78f50c94bd90aaf502df6ff989bac41fadb0a
+containersize 6464
+containerchecksum 682ecf5f27d830170e92aa59d39f5416d72554dd840e4bd33303dae10a40819b36e44a7f9d930620aa6cbf3b557e1ef38a072011e995fe31c84a0e99fcfbaae1
name collection-latexrecommended
category Collection
@@ -108557,7 +108561,7 @@ catalogue-version 1.97
name esami
category Package
-revision 47639
+revision 60730
shortdesc Typeset exams with scrambled questions and answers
relocated 1
longdesc The package enables the user to typeset exams with multiple
@@ -108568,11 +108572,11 @@ longdesc may contain a wide number of random parameters and it is
longdesc possible to do arithmetical operations on them. The package is
longdesc localised in Italian, English, French, German, Greek, Serbian,
longdesc and Spanish.
-containersize 20980
-containerchecksum bbf24974b4feaba88b92b3179af6bdb45b86053ae8037fa41c99d0823cf3c79807283c01370365ea0264ba1eee3c4c289fadc5c2619900e85657366c14920a7d
-doccontainersize 1432948
-doccontainerchecksum d9f57db15517f47d648e4ef91111a843fdd7f0d0706d1a863f5b4f7c65008c00507c552975c01b60c00cc724e63aea24f7a6b40930148bc981e200866cc30ac7
-docfiles size=441
+containersize 21052
+containerchecksum 83f00130432776d8eae210c15b6bc171d98b23d636ecf043424248357fee8efce3a025340772de933c8b920dec4fc7451981734439d2b82724af57f343216784
+doccontainersize 1420192
+doccontainerchecksum 7e1dfc05961f8635eea0a67aa4b2007029d4f8d9ad629a9dca317c5ec279336b28d01e1c51bceb93814a636802f3ea1cf8d6090ffd81a99050589efcabc8b11f
+docfiles size=447
RELOC/doc/latex/esami/README details="Readme"
RELOC/doc/latex/esami/VERSION
RELOC/doc/latex/esami/doc/esami-doc-en.pdf details="Package documentation (English)" language="en"
@@ -108620,7 +108624,7 @@ runfiles size=28
catalogue-ctan /macros/latex/contrib/esami
catalogue-license lppl
catalogue-topics exam
-catalogue-version 2.5
+catalogue-version 2.6
name esdiff
category Package
@@ -134962,7 +134966,7 @@ catalogue-version 20120101
name hanzibox
category Package
-revision 60710
+revision 60737
shortdesc Boxed Chinese characters with Pinyin above and translation below
relocated 1
longdesc This is a LaTeX package written to simplify the input of
@@ -134972,26 +134976,26 @@ longdesc translation is placed below. The package can be used as a
longdesc utility for learning to write and pronounce Chinese characters,
longdesc for Chinese character learning plans, presentations, exercise
longdesc booklets and other documentation work.
-containersize 6552
-containerchecksum c5204ed2484251c5eee1c878193ba58365c0693ee2cccfda0eee20a7330f6f6293a0682b922d57c04014edb322756796a597d6ecaee0fa75560dae86d5237a8a
-doccontainersize 498852
-doccontainerchecksum 7e6a55ff5a45124ed88c7d72b2175da0539d4eb080142130c5004487c930570ee1d330bf0f657b896b3b3503c0cd4ca2b1676a2f7079b440664020f572b5bd4c
-docfiles size=127
+containersize 7148
+containerchecksum 3e87de6b784e75135eb5e22b7603840f025034229b15710fc23bf6711f073e4f2afd552b08114e01a75d4c6812487fb0b24a1e782bc4027e6b5f48025b0e114d
+doccontainersize 568528
+doccontainerchecksum 925c0d75542d143dcf5ffe5a0f0ad0f46da3093e188a4d458af2743740c2a4c32d850d00f7bb0af3e29e7a148e45d50479d32afb25f970e929c4c0315e953e99
+docfiles size=145
RELOC/doc/xelatex/hanzibox/README.md details="Readme"
RELOC/doc/xelatex/hanzibox/build.sh
RELOC/doc/xelatex/hanzibox/hanzibox.pdf details="Package documentation" language="zh"
-srccontainersize 16728
-srccontainerchecksum 1135ea1f200dab968845d794a8ed7917cad90e3d6ed0d7d61221f017761c4052e8ea4af0b1a1cbefca826110544c91790dd39f88f038d609b1aa8e7e7c1f819e
-srcfiles size=21
+srccontainersize 18588
+srccontainerchecksum 7fdb3d9996ac5f615fb66eb02ca24de1d3d85064d1c74eaf29eff358198de04b51a5afe370830cccc94d58b9c8a9007a783fbfd046779876178985c1bb9b7bb3
+srcfiles size=24
RELOC/source/xelatex/hanzibox/hanzibox.dtx
-runfiles size=11
+runfiles size=12
RELOC/tex/xelatex/hanzibox/hanzibox.sty
catalogue-contact-bugs https://gitee.com/nwafu_nan/hanzibox-l3/issues
catalogue-contact-repository https://gitee.com/nwafu_nan/hanzibox-l3
catalogue-ctan /macros/xetex/latex/hanzibox
catalogue-license lppl1.3c
catalogue-topics xetex expl3 chinese
-catalogue-version 2.1.1
+catalogue-version 2.2.0
name happy4th
category Package
@@ -189170,24 +189174,24 @@ catalogue-version 1.0
name make4ht
category Package
-revision 60662
+revision 60738
shortdesc A build system for tex4ht
longdesc make4ht is a simple build system for tex4ht, a TeX to XML
longdesc converter. It provides a command line tool that drives the
longdesc conversion process. It also provides a library which can be
longdesc used to create customized conversion tools.
depend make4ht.ARCH
-containersize 49644
-containerchecksum ab62f9ad1fc969e36e45a7937ad7441118513be2993b4ed9d1aed2293b49f0e3eba14f1732cca7d05997f86fa7fffac9d29cc5fe233b67d266899263b90f609a
-doccontainersize 174564
-doccontainerchecksum bdc8b94fc6708b735df7fc0e6a64d86da0553122a9adef3041c8ff45c7e4feabdc40e106f3f46142777f4eea0bfbacb3e8b17e05af7eb2953d204cfb9dd9567e
-docfiles size=71
+containersize 49796
+containerchecksum 9fabde9f3f9bc9cfdcde8dcbe343c4c9a1345573ec5bd8124523ef3b9805903553cf15f69774ca7a3e703168c56883bad72b8dc18d66e2073d402977cbb0f200
+doccontainersize 174772
+doccontainerchecksum 31d4a239804ca2dca178789accfa640d6fbb04e38948a36712a27bc1ad42ae0dd15792df07306e48f235018e18a5349a83aee2749fa7e2fdfaf8c035cc03a133
+docfiles size=72
texmf-dist/doc/support/make4ht/README details="Readme"
texmf-dist/doc/support/make4ht/changelog.tex
texmf-dist/doc/support/make4ht/make4ht-doc.pdf details="Package documentation"
texmf-dist/doc/support/make4ht/make4ht-doc.tex
texmf-dist/doc/support/make4ht/readme.tex
-runfiles size=86
+runfiles size=87
texmf-dist/scripts/make4ht/domfilters/make4ht-aeneas.lua
texmf-dist/scripts/make4ht/domfilters/make4ht-booktabs.lua
texmf-dist/scripts/make4ht/domfilters/make4ht-collapsetoc.lua
@@ -189254,7 +189258,7 @@ catalogue-contact-repository https://github.com/michal-h21/make4ht
catalogue-ctan /support/make4ht
catalogue-license lppl1.3
catalogue-topics cvt-html
-catalogue-version 0.3i
+catalogue-version 0.3j
name make4ht.aarch64-linux
category Package
@@ -193492,17 +193496,17 @@ catalogue-version 0.5
name mcf2graph
category Package
-revision 60565
+revision 60729
shortdesc Draw chemical structure diagrams with Metafont/MetaPost
relocated 1
longdesc The Molecular Coding Format (MCF) is a linear notation for
longdesc describing chemical structure diagrams. This package converts
longdesc MCF to graphic files using Metafont / MetaPost.
-containersize 25376
-containerchecksum 435821229621ac6a49c0db17ca0a9ca65656cae9980991aa62e10643b190cbee8a53ae802bbfa41409ac2ae44ee33e0117965bb0bf8d353f6e029a3c86b1f07f
-doccontainersize 879392
-doccontainerchecksum 1121e4b5f1e0915741a0a74ce2e07c4b74e316c9f857dc1508f74ee4aac7c505cb9fb910f300dada87395c0a27b4631051297a9c75926dba46eee6fce2783405
-docfiles size=270
+containersize 25420
+containerchecksum 4d9c92f1a2a76e85bf9bf6be0ab052f8707011b20b14d3536f5f554d896d184d7984c0aac578a88478661d6a274ddcaf8c77d2473117cd61dd1fce15548884bd
+doccontainersize 915672
+doccontainerchecksum e5d1d7bc1f2752edb9340d212180bdb2b88815ab189624ec024f148b4b946aaceb4da19debb0220f6bfa480c3fa7f6d9d414dbfe17224e0a291fbfcb65888c74
+docfiles size=279
RELOC/doc/metapost/mcf2graph/CHANGELOG
RELOC/doc/metapost/mcf2graph/README details="Readme"
RELOC/doc/metapost/mcf2graph/mcf_data_base.mcf
@@ -193520,7 +193524,7 @@ runfiles size=30
catalogue-ctan /graphics/mcf2graph
catalogue-license mit
catalogue-topics graphics graphics-mpost chemistry
-catalogue-version 4.72
+catalogue-version 4.73
name mcite
category Package
@@ -237834,6 +237838,83 @@ catalogue-license lppl
catalogue-topics font font-archaic font-type1 font-otf
catalogue-version 1.0
+name phfcc
+category Package
+revision 60731
+shortdesc Convenient inline commenting in collaborative documents
+relocated 1
+longdesc Easily define helper macros to insert comments in a LaTeX
+longdesc document. A convenient syntax enables you to mark text
+longdesc additions (e.g., "... \phf{I'm adding this text} ..." or "...
+longdesc \phf I'm adding this text\endphf ..."), an in-line comment
+longdesc (e.g., "... We're the best \phf[I'm not sure about this.]
+longdesc ..."), and text removals (e.g., "... \phf*{remove me} ...").
+longdesc New colors are assigned automatically to each commenter by
+longdesc default, and the appearance of all comments is highly
+longdesc customizable.
+containersize 5548
+containerchecksum 1d1f6387db333cee296545663bc4e2026fecd0f381cf4e45b42c8b297a4ae9bccfaa8e9791f92cf59bccc428b3f63b944d9173660c3606f1f49ef1878caf2181
+doccontainersize 405660
+doccontainerchecksum ac10825535fbf1e5173d5d209c26d665a128473c3100e349a63ccd921534c9645ce3c7b7391aac56de70f23657db8e1496f6afc0b2d112a45f3ae84d87220498
+docfiles size=102
+ RELOC/doc/latex/phfcc/README.md details="Readme"
+ RELOC/doc/latex/phfcc/phfcc.pdf details="Package documentation"
+srccontainersize 22680
+srccontainerchecksum 31c59c51bb48a722e4962986bef69619ca1ffd80bc25ee1308cef80e78246811ee169ca6a0c9ea5e257626e55fb04bfe40bb1ec53d09c81b2fe636e6ce215a37
+srcfiles size=24
+ RELOC/source/latex/phfcc/Makefile
+ RELOC/source/latex/phfcc/phfcc.dtx
+ RELOC/source/latex/phfcc/phfcc.ins
+ RELOC/source/latex/phfcc/pkg.mk
+runfiles size=6
+ RELOC/tex/latex/phfcc/phfcc.sty
+catalogue-contact-repository https://github.com/phfaist/phfqitltx
+catalogue-ctan /macros/latex/contrib/phfcc
+catalogue-license lppl1.3
+catalogue-topics editorial cond-comp
+catalogue-version 2.0
+
+name phfextendedabstract
+category Package
+revision 60732
+shortdesc Typeset extended abstracts for conferences, such as often encountered in quantum information theory
+relocated 1
+longdesc Several conferences in various fields (such as quantum
+longdesc information theory) require the submission of extended
+longdesc abstracts. An extended abstract is a summary of a scientific
+longdesc result, presented at a high level, and consisting of at most a
+longdesc small handful of pages. The phfextendedabstract LaTeX class
+longdesc provides a simple style for such abstracts. There are only two
+longdesc sectioning levels, sections and paragraphs, and the style is
+longdesc optimized to save space as well as to guide the reader's eye
+longdesc through the overall structure of the document. An option will
+longdesc try to compress all vertical space to save some space, in case
+longdesc you need to satisfy page constraints. The style builds upon the
+longdesc powerful RevTeX class, so you can use all of RevTeX's features
+longdesc such as author affiliations, etc.
+containersize 3888
+containerchecksum 0e1f0f232c7216d654a41ab750477a5a6efd1a2dcb15b2114eefe1ffcb582bd0512bc8592111904c550badef12a3927c5ee2af58548dab5015901165b35a8bd1
+doccontainersize 280996
+doccontainerchecksum aad67fc68996c032bca758b44eb65288f2245f780e9e4200888fb027b4638963e2f3b9c771a5ec78f8c65fd0c86c8b55b16d8cdad44fdcf9cc6622a766175e00
+docfiles size=71
+ RELOC/doc/latex/phfextendedabstract/README.md details="Readme"
+ RELOC/doc/latex/phfextendedabstract/phfextendedabstract.pdf details="Package documentation"
+srccontainersize 14928
+srccontainerchecksum a5d3ae9a1bc6b8859e998bb3561a63e99d9a4f30da3e3c2dd918ba7f23a09362bd8f123e2bfbe2af4ff7f2204c969ad487ddf389fa04287eacf0abe9f251391e
+srcfiles size=15
+ RELOC/source/latex/phfextendedabstract/Makefile
+ RELOC/source/latex/phfextendedabstract/phfextendedabstract.dtx
+ RELOC/source/latex/phfextendedabstract/phfextendedabstract.ins
+ RELOC/source/latex/phfextendedabstract/pkg.mk
+runfiles size=3
+ RELOC/tex/latex/phfextendedabstract/phfextendedabstract.cls
+catalogue-contact-home https://github.com/phfaist/phfqitltx
+catalogue-contact-repository https://github.com/phfaist/phfqitltx
+catalogue-ctan /macros/latex/contrib/phfextendedabstract
+catalogue-license lppl1.3
+catalogue-topics physics
+catalogue-version 1.0
+
name phffullpagefigure
category Package
revision 41857
@@ -237866,7 +237947,7 @@ catalogue-version 1.0
name phfnote
category Package
-revision 41858
+revision 60733
shortdesc Basic formatting for short documents
relocated 1
longdesc This package provides basic formatting for short documents such
@@ -237876,28 +237957,29 @@ longdesc include a standard set of relevant packages, a nice title which
longdesc doesn't take up too much space, better page margin sizes, and
longdesc some basic styling to make the note look nicer. At the same
longdesc time, it is highly flexible and customizable.
-containersize 15836
-containerchecksum d542b73d1a25d0d141a37e3bf0a3d4753829efbcfed9745ea299a90026325f82624bb5d4a5075892af758d4a4613e1560824871e6bb784a8ce0030a7fb3f4836
-doccontainersize 637980
-doccontainerchecksum a62dc8166944e953b8efa49c7ab78b98744cb9948523f4decffee6a553a8e432ce2d9774575bbedce59e5dbd01e9bcc01d82962a19d3878a11367127a7927287
-docfiles size=162
- RELOC/doc/latex/phfnote/Makefile
+containersize 18752
+containerchecksum ddaea70a5bb3aecdf634b44dcf5f006db479a4d47e44e96f92bd390c2c0e166b741ea31a0f22ac39770ff0c92590a261c18fe5096bf97997743684a95a82da2b
+doccontainersize 752440
+doccontainerchecksum 2dc4e7d3615d8f185bf1bcfeb5a90d51f362538691444355ad6820f8bdcfcd68f1dcc69486c0b630d1141db1b4bc10bd17abcfb93cf37b778266090f29ec946d
+docfiles size=189
RELOC/doc/latex/phfnote/README.md details="Readme"
RELOC/doc/latex/phfnote/phfnote.pdf details="Package documentation"
- RELOC/doc/latex/phfnote/pkg.mk
-srccontainersize 28336
-srccontainerchecksum 4f83603d837978304673550f1dba78a1aad030392323de2ae6bb0295ecf7fc5f8bd211a14f831b7f3710b13e999e73e3a8b224a5ac44ce67b2ea3faae5fc83c9
-srcfiles size=29
+srccontainersize 39348
+srccontainerchecksum 15c0614cf6bf41c94513475d0b65f7053970505fcaa3126550d283b8597c49e30b86e716d3b643fceeee2bae37f81a65d8f65859847bee6f0aa4e508102f6617
+srcfiles size=43
+ RELOC/source/latex/phfnote/Makefile
RELOC/source/latex/phfnote/phfnote.dtx
RELOC/source/latex/phfnote/phfnote.ins
-runfiles size=18
+ RELOC/source/latex/phfnote/pkg.mk
+runfiles size=23
RELOC/bibtex/bst/phfnote/naturemagdoi.bst
RELOC/tex/latex/phfnote/phfnote.sty
+ RELOC/tex/latex/phfnote/phfnotepreset-xpkgdoc.def
catalogue-contact-repository https://github.com/phfaist/phfqitltx
catalogue-ctan /macros/latex/contrib/phfnote
catalogue-license lppl1.3
catalogue-topics memorandum
-catalogue-version 1.0
+catalogue-version 4.0
name phfparen
category Package
@@ -237933,7 +238015,7 @@ catalogue-version 1.0
name phfqit
category Package
-revision 45084
+revision 60734
shortdesc Macros for typesetting Quantum Information Theory
relocated 1
longdesc This package provides macros to typeset some general
@@ -237945,27 +238027,27 @@ longdesc and some basic Lie algebra/group names. Macros for entropy
longdesc measures for quantum information theory (smooth min- and
longdesc max-entropy, smooth relative entropies, etc.) are also
longdesc provided.
-containersize 4136
-containerchecksum 250626ed9e7e33abf0d19c32213236b02849db849f080bee0ddc19370acb7e2e66c838dc1149f8c1194d2534c1e073fc2971fe3687174978bdabc90efc4b7752
-doccontainersize 394904
-doccontainerchecksum 0acdb07c2484e2e5694690536eca084ffebee0f549ead32b3557e368ed85d7a7785c297cc639cee2cf4b41f64f7c2df806b6b27d4ae89769b0b8d99d2127f885
-docfiles size=102
- RELOC/doc/latex/phfqit/Makefile
+containersize 4824
+containerchecksum 604093594d05e5f331d27bf5b0d6c40b631934a2872841f2534f69279542a6bd26ad758712b9b24c5490c4e9396ac147f46a9d0790cd29f56c0d2b13d876bd56
+doccontainersize 455784
+doccontainerchecksum 738e5f61c0318f331ea2a7f1e0d5d019969636917fcc18ca19a72ed42b1207f4025c58ea886c4758b64c61cb33faf8ae5b4d5f2f7a55a9ce9758b9fec00508ac
+docfiles size=114
RELOC/doc/latex/phfqit/README.md details="Readme"
RELOC/doc/latex/phfqit/phfqit.pdf details="Package documentation"
- RELOC/doc/latex/phfqit/pkg.mk
-srccontainersize 18388
-srccontainerchecksum f189ad485482da9e1802b1b2c96120a244a14f7e7e39a1759d7484ad236945f98b8330464223ad63127d9960eb4f10f04145f5eefef25f02775c009184ca4b9d
-srcfiles size=20
+srccontainersize 23420
+srccontainerchecksum 0d0ce4d75bb6d73e24a47c8d66ac0b72a0cfe273a6daa4af1fd3a89f853c3c5c1f856d749321fc9ef79b0e0a9c27465045a48202536b73270971deb2d4cc7a30
+srcfiles size=27
+ RELOC/source/latex/phfqit/Makefile
RELOC/source/latex/phfqit/phfqit.dtx
RELOC/source/latex/phfqit/phfqit.ins
-runfiles size=4
+ RELOC/source/latex/phfqit/pkg.mk
+runfiles size=5
RELOC/tex/latex/phfqit/phfqit.sty
catalogue-contact-repository https://github.com/phfaist/phfqitltx
catalogue-ctan /macros/latex/contrib/phfqit
catalogue-license lppl1.3
catalogue-topics maths physics
-catalogue-version 2.0
+catalogue-version 4.1
name phfquotetext
category Package
@@ -238033,7 +238115,7 @@ catalogue-version 1.0
name phfthm
category Package
-revision 41871
+revision 60735
shortdesc Goodies for theorems and proofs
relocated 1
longdesc This package provides enhanced theorem and proof environments
@@ -238042,27 +238124,27 @@ longdesc be placed, adds some default goodies and is highly
longdesc customizable. In particular, it can connect theorems to proofs,
longdesc automatically producing text such as "See proof on page XYZ"
longdesc and "Proof of Theorem 4: ...".
-containersize 5348
-containerchecksum c6aeab1fef49a56a7ab080945199a4f68186b53bd7fd00e4c3d3babcd3f63f998748635edded858d5904b8dc7604007753bec12fdc8ff6a7656cf1ef26c0ca9e
-doccontainersize 376988
-doccontainerchecksum c2439e7a3e7f1b0730b8fc48f933b9754777e7750a58ee6a5985ac458689c2df96d9e74d09c5ade2b0b8dac49e0be43ca60a0769dedc662e151e1dac5bb18cf0
-docfiles size=98
- RELOC/doc/latex/phfthm/Makefile
+containersize 5744
+containerchecksum 2a608898b9038cc46e4720423a42f403abcd105700e20e90274ca6e01ed3c4428a443466d0e32b0cf0da9735c0b7ea74b82e90a3d0b72583d38fa5a14094f806
+doccontainersize 393356
+doccontainerchecksum bb0c2da2d17b0c3c3550569428fbdb5532d1fe79b325289d71f35659d749fb952bacfa6140210ebbbdc661dc445ae8add1be6cc79b77bf6346fadc70553bf189
+docfiles size=99
RELOC/doc/latex/phfthm/README.md details="Readme"
RELOC/doc/latex/phfthm/phfthm.pdf details="Package documentation"
- RELOC/doc/latex/phfthm/pkg.mk
-srccontainersize 23912
-srccontainerchecksum b189f0320e5b8d1ecbb1bb34972b845d776190ada4ab76e44ade41e21d8f7eb0bfb6bd55a4352aad4d0c2455730b7803384eece70d2030faf9279aef0f70f540
-srcfiles size=26
+srccontainersize 27536
+srccontainerchecksum 7c234459aaa013a9d2d0c719791d99ad6db252e152a53f7111e6d9e04fed3c718efb4fedc85fd064825d40ef80fec2643d6310e582bf830486b8e43efa27c966
+srcfiles size=32
+ RELOC/source/latex/phfthm/Makefile
RELOC/source/latex/phfthm/phfthm.dtx
RELOC/source/latex/phfthm/phfthm.ins
-runfiles size=6
+ RELOC/source/latex/phfthm/pkg.mk
+runfiles size=7
RELOC/tex/latex/phfthm/phfthm.sty
catalogue-contact-repository https://github.com/phfaist/phfqitltx
catalogue-ctan /macros/latex/contrib/phfthm
catalogue-license lppl1.3
catalogue-topics maths maths-theorem
-catalogue-version 1.0
+catalogue-version 1.2
name philex
category Package
@@ -279415,7 +279497,7 @@ catalogue-version 2.3c-0-g7d3fc5b
name sttools
category Package
-revision 56774
+revision 60736
shortdesc Various macros
relocated 1
longdesc A collection of tools and macros, providing: miscellaneous
@@ -279423,11 +279505,11 @@ longdesc float control, page styles for floats, multipage tabulars, even
longdesc columns at end of twocolumn region, switching between one- and
longdesc two-column anywhere, simulating the effect of "midfloats", a
longdesc package to manipulate numerical lists and arrays.
-containersize 13432
-containerchecksum d9707fc22ad26d291288debdb2d9bb492175dade76ed398c3c0ffd1d4ba256d8c691bc2fb9d537ff01af4de7bf1352d4b1f62cc6c54afa8c02eea8b69185382b
-doccontainersize 764344
-doccontainerchecksum b32bd4fa10599b3ace5bc8e1b2dae79750aace26a98806de275fdd358554b6f26fde48c9e7b0fbb108de0a771728a68f6c09fa9c568a5e2fce7b9aaa1fb1f58f
-docfiles size=231
+containersize 13620
+containerchecksum 4e52219c4d3d668dd52d9a1e8e0de4f547871efb9f5515851b44e1c968cd564080c87c631d8cb53c76cdcfb8df884af0e9ea1492228929098a390b6184f5ed37
+doccontainersize 744196
+doccontainerchecksum c07922c52f57ffeeb57a9bf3b444e251f01f859f2218933889112b86d9dadc5791d7d926091eb3a2753a6ebebe439bc7037ef857b6d19a1e6e7b516fe879f4d4
+docfiles size=240
RELOC/doc/latex/sttools/README.md details="Readme"
RELOC/doc/latex/sttools/cuted.pdf
RELOC/doc/latex/sttools/floatpag.pdf
@@ -279437,9 +279519,9 @@ docfiles size=231
RELOC/doc/latex/sttools/stfloats.pdf
RELOC/doc/latex/sttools/sttools.pdf details="Overview of the bundle"
RELOC/doc/latex/sttools/texsort.pdf
-srccontainersize 21348
-srccontainerchecksum 56a096fbc8f28a0ea2f1ef31ebf277204319eaf6fb9bfcbd5449d24b2689a111f192ee1c723adcf8800c9ca2069c934cde8d0bdefae473e6eced2b043b7fd8d8
-srcfiles size=42
+srccontainersize 21112
+srccontainerchecksum 65616cdefbe3d5b53f7f888412f8ada24860d33c2cd5babff26a3ae71c6c56a4d1a5eb5dd355d557c8fd947db82401746a4928a16587a88c3dfcc19f712f5e59
+srcfiles size=41
RELOC/source/latex/sttools/cuted.dtx
RELOC/source/latex/sttools/floatpag.dtx
RELOC/source/latex/sttools/flushend.dtx
@@ -279449,7 +279531,7 @@ srcfiles size=42
RELOC/source/latex/sttools/sttools.dtx
RELOC/source/latex/sttools/sttools.ins
RELOC/source/latex/sttools/texsort.dtx
-runfiles size=28
+runfiles size=27
RELOC/tex/latex/sttools/cuted.sty
RELOC/tex/latex/sttools/floatpag.sty
RELOC/tex/latex/sttools/flushend.sty
@@ -279460,7 +279542,7 @@ runfiles size=28
catalogue-ctan /macros/latex/contrib/sttools
catalogue-license lppl1.3
catalogue-topics collection
-catalogue-version 2.1
+catalogue-version 3.0
name stubs
category Package
@@ -286171,7 +286253,7 @@ binfiles arch=x86_64-solaris size=1
name tex4ht
category Package
-revision 60725
+revision 60739
shortdesc Convert (La)TeX to HTML/XML
longdesc A converter from TeX and LaTeX to SGML-based formats such as
longdesc (X)HTML, MathML, OpenDocument, and Docbook, providing a
@@ -286184,10 +286266,10 @@ longdesc helper DVI file that it can then process. This technique allows
longdesc TeX4ht to approach the robustness characteristic of
longdesc restricted-syntax systems such as gellmu.
depend tex4ht.ARCH
-containersize 908856
-containerchecksum 0b9ba670eb24e79f4bf16a6b0ac1dcb420ccd86522b234a2cfb5e7e163ee7bada5eba7fe4c5e30ec7122bb8d2a9c8c8963e68e61437e31ab3f3248860ba4b80b
+containersize 908868
+containerchecksum 5dfc885345fe21554d2e2ac85bc448fbfe7669042c1068d5fd231860fcf25489e57be5e73b04a3da0fbb7ef074773368b488f94b2a247b7b1f20cedb716f3154
doccontainersize 136384
-doccontainerchecksum fed79b60df3594d90006eaceb7ba914444f4364bdb4be1eb411fdf255a5533a8d55249cf1710a50fb2a4c4df8cf0299768ad60b241f4378eaaefe22f631be00d
+doccontainerchecksum c8e5696ca63706b879c800cae6c51c62241adcde5000fb5c7c8db9a8aeea672e14e63d8d6b366f70f4ad5d41ea46486ad0757bfd64c9522dce062f09ae31f7bd
docfiles size=260
texmf-dist/doc/generic/tex4ht/Makefile
texmf-dist/doc/generic/tex4ht/README details="Readme"
@@ -286259,8 +286341,8 @@ docfiles size=260
texmf-dist/doc/generic/tex4ht/mn56.html
texmf-dist/doc/generic/tex4ht/mn5x.png
texmf-dist/doc/generic/tex4ht/mn6x.png
-srccontainersize 1220780
-srccontainerchecksum 001d1082d66ee3af6f6a527c3b7482a3949e2876b772c3c555f3655057ff0890ecea94142ce93036511e2fcb599286c14347d7b8dcbf50ccbb2dd93ce094c843
+srccontainersize 1219960
+srccontainerchecksum c9fee0862554cda4997b04b407d8032923fb1fad8a698a088f05fddc35f3aa3a5daa31b6c6819b6a23fb4a6330507730d36e0d109d9b5d678619ad22c6441970
srcfiles size=3627
texmf-dist/source/generic/tex4ht/ChangeLog
texmf-dist/source/generic/tex4ht/Makefile
@@ -295396,7 +295478,7 @@ docfiles size=376
name texlive-scripts
category TLCore
-revision 60719
+revision 60727
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.
@@ -295404,10 +295486,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 108264
-containerchecksum 7759434af436db9094869fa4785e60f196e4a1b98aef3a2c4760aa1565a8a42a2cff509463c6835ce8d495f9dd610c0ba0de9849d82f1be9a05e015ecb132c5e
-doccontainersize 400476
-doccontainerchecksum 2df1cc0c5cec7de5d81c1bc0f6d9121819edeb5f4fdc72dcb63422468af13d6af40aab7d5a7671bae8a764ce263584c4b9b0bbac1fbc75cfa88adcbdf39abe1b
+containersize 108300
+containerchecksum 55f39c18c28cb38abfbd2cd1227cd70a8d09ced03ea07892215d7ff95b8331a26ba2d9902f03ab44d31b054dbb95ad30243d6500f3425cedd9dfa2cb31869103
+doccontainersize 400588
+doccontainerchecksum 9f09684a7d5ec4acdb2209692bf3335c69a778ca614083609c2d7ddb2833d789a216a27ca3f9a456fc36d0863e8c3ecf6dd1df77fe192413d848b3c177558dea
docfiles size=496
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 144494e22c..97c2dc4f56 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-ef51ab015c2ab87c35a40c2bcfe35975 texlive.tlpdb
+4d1c3f552e2585f317858f212e4c1ad2 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index aa3a1a4816..846dd0d158 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-72f7eb2c5059a997d29c45969295b601959628831c47ab99086772798c482769b0811f2bd8f63014224656b83a18ba31a6f627a26f82a946b92553c9a6f5adac texlive.tlpdb
+6772593d15bfd6276032a7ee8f672609e878c1772033a97be4c6a631965ee80abf64d37708fdf2b134945d231f1d5a05b29d0748d9a37ad7bac21c4d27f58c8b texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index 62a2491f23..54d6a700a5 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-----
-iQEcBAEBCgAGBQJhY3zhAAoJEEzhh34ZQ4xwHn8H/i1J0ubnPTXPnILa4+D2PM66
-7qUQnEkBr2Ea4WorchE8OF8p83XAL2KRwx08VgzT6UWbgfUJLt/M1RQtdSZ/qeW6
-E+UlHYax/ru/GeTqlPFsKSW3cjmtnpfnIV9q6dkhCqLE3v7Cag/xFLsr6+l4cVqV
-1jkqcupx9mHjNoHRdBsuf6BfJiTtFnilg4QDLeFUpb6UNxR9ZKaa4NmaARYqf7RE
-CcQQ0YusfAb80zo/5hSUTqW62wf+7GQiJ7jlR7mtMm/er9ErIpxu21QQ9mGZmgaN
-3HzQ5zXoDXj8wHzozEL1g1V+SDaje/nZnWcZx0eYUFE6l5l3yOBNF8XqfzKMIL8=
-=bY69
+iQEcBAEBCgAGBQJhZM5fAAoJEEzhh34ZQ4xwplAH/jmSXEnFm4f12qVYoM7XHBSx
+o5AWQjsECDOMd8t3hG8HHSx66pxWtrTRbpVAmggIuIbmPppjUNR1mgBxB8WXgfqN
+FW35N92vrXrAbdh5YvJDJViWaU7sLa+btIQ+wGHokDpkOEn37hpcJF348JfuODTT
+jDF7vJW/1xhyUaeqoCss3PJ141v6rrHl3+Z7l0OhAnql2hz+QrdrkODXn0gA9Z25
+LXFNQ8bv6WDulo0Nsms2UdCfkWckyz0nDtBRlckipHu1bEtCTOiTr7fKvhnGzd3o
+ZazGRDed3UV18cs1qWpGAnB8BYHs6N5rg9X2kCEQ9qCxkinBm1Kr159A8IxAsDo=
+=2XST
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index cdde531d72..9ce7c9262f 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
Binary files differ
diff --git a/systems/win32/miktex/tm/packages/next/pr.ini b/systems/win32/miktex/tm/packages/next/pr.ini
index 5e383f44ec..60f44e068d 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=1633896910
+date=1633983335
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=f442c6528bd92564ac444007c51f108f
+lstdigest=2056ace076412770c82def68fd092bf2
numpkg=4887
relstate=next
-version=7953
+version=7954
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: stNYiQvpDULTyzIPgIyKaXoSixQMV3uVJhNmZSkSqwQGiuqjKJnaOZ0hWIvlfEN8MJOAUUc5lRrR/iewfYMYs5Cc185o/9xClfJUI4pTUiYrNyJufXpC4ggghgfpiqt/nThbfD3xbvPsbZWAjoQ5Llfp7VybZ20T3b841riJ8wKsa6G+j/6+cCwIDkv0R+eGfxn7DEglMstjWeEHZaBNaFFS0+rwLM2v5BBCegkUbSLve78DrmtUEF2xDQkczOUf7qSLwC1AR/MbOCdIZ6DNwqmMzqiRrR7pgLk6tT0bS4mGJsSIp1PSju2NhrKlK9DhtDclTViJvAZE/lRR/YudKg==
+;;;; signature/miktex: klAFaebIOmkQm9EfC+128rIvhDZyeGn9wW/5zlvw/CzHeSZ/5yS6yIZrmyiUp5f6C16QfkVDJ0aZHYjODXK2vb1GcujDI2y2PjRr432KIMEX9ErCyn2nhndjQFxbB75xvA61apDc+qjkxhY02HfCZuBQkuEN8j2n+kqyaXFVd0+fQ7Tgl079wt5Hda++jkZP5OHjpvXGmB8L829i5APlEEHoNaKvZ9FC8a2zOhgQ3/dy+9yeFVTsAlRj6GfVofI37h6Hujp8TEPeNJSFSMFucPU82u7NWmoMEp8NR2vk9sGV2IKx1ihmHXSYygD25gxF5Sw8MdYxmpUOKcOiJTbScA==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/systems/win32/miktex/tm/packages/pr.ini b/systems/win32/miktex/tm/packages/pr.ini
index 86217a5504..18eccad06e 100644
--- a/systems/win32/miktex/tm/packages/pr.ini
+++ b/systems/win32/miktex/tm/packages/pr.ini
@@ -1,13 +1,13 @@
[repository]
-date=1633896677
+date=1633983070
lastupd=ptex-manual ptex-manual__source profcollege profcollege__doc profcollege__source euclideangeometry euclideangeometry__doc euclideangeometry__source kpfonts-otf kpfonts-otf__doc kpfonts-otf__source 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
-lstdigest=99cf2293f1132bc6ef57ac928fc7fb78
+lstdigest=b4f2a90b2512e143231f45507bfc29d3
numpkg=4887
relstate=stable
-version=7953
+version=7954
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: knapd1+qL9+cwmf5QGbUiKvgkFwlM3+CsPBrGyYkSc+W4aIqnPMacTtV6yEJ//OEAPvj0b85fUmuRoI3tmg8BqNudMUsTYULha5X8hn4Yl7CCXFfyyBuhPOpEXB3zoiGL7M90pwKcfdxCBwPoAKixMmiF61fJy/MCkhk1pJQz33grSF+7628P7qTykQjqnQXx51pX/5NdcJL3+dZt0x8dmdjnxJ0Rf0w10m1vA7xjyoaGvauvcYu6HcrewBkJYoZVKBCXPTJIy14YBrAlVSzDT2FR0eESGf9iuOO615LqkSBTHmQRa+SwtuI1r3lVDc7s/Mfi8JVww0mZm+0R1qBrw==
+;;;; signature/miktex: jR0Z6GrccnM6I+AGLBP56COJhY3ZOpYYBRd+khQqSE5JubSOwb7TkjYM7dkGDsV2BbfDOeBd1k7BRxRZsuJL8WLrF0lKV11/YyL8KCoNxvv6p47t+fMgc5X+ZQEZQrXZAzGAWmKwuGLz+NBKGSMin+EWnOGkz1iSnDa173N3q1dRUSV38ZjKFoUYBhi5cy48wsZFW0eB7R9aOSF/Ay+6VFKYj47Beh/dwK3w806uYPoOWYJXQOWPhobB5vwmLU0vXbsEegcX6/mGz+ODNJN3OQjxHKRCYO1gQsf//Bx04V6SuZTHAOyY9EmrSssR5IrbBhSzVygt7yc/HP4vFChrnA==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/timestamp b/timestamp
index b81018ac54..d179c1e0b7 100644
--- a/timestamp
+++ b/timestamp
@@ -2,4 +2,4 @@
# The source CTAN of this site's material:
dante.ctan.org
# The year-month-day-hour-minute of this site's material:
-2021-10-11-02-02
+2021-10-12-02-02