summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-10-12 03:00:58 +0000
committerNorbert Preining <norbert@preining.info>2021-10-12 03:00:58 +0000
commit20b79660fb560eb1dd8e80d44837e0d4c17ca03c (patch)
treea96f0dee853efcdecf8395053a4919908aeeb71a
parentaac7fdc4c391b318efbdee17381ac83783b2fbbb (diff)
CTAN sync 202110120300
-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%