summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-11-08 03:02:04 +0000
committerNorbert Preining <norbert@preining.info>2023-11-08 03:02:04 +0000
commitdada699771828d1aa3c78ecf55a2131e5f5799f3 (patch)
tree454888fc413a3cff3d4aec62d5950c02446c364e
parent02646b6e89ef69971235e0c883e86fd746955e2b (diff)
CTAN sync 202311080302
-rw-r--r--FILES.byname240
-rw-r--r--FILES.byname.gzbin2558260 -> 2558511 bytes
-rw-r--r--FILES.last07days229
-rw-r--r--biblio/ctan-bibdata/ctan.bib81
-rw-r--r--biblio/ctan-bibdata/ctan.pdfbin3725247 -> 3726593 bytes
-rw-r--r--fonts/newtx/README7
-rw-r--r--fonts/newtx/afm/txbex-bar.afm20
-rw-r--r--fonts/newtx/afm/txbsys.afm13
-rw-r--r--fonts/newtx/afm/txex-bar.afm90
-rw-r--r--fonts/newtx/afm/txsys.afm17
-rw-r--r--fonts/newtx/doc/newtxdoc.pdfbin675906 -> 682647 bytes
-rw-r--r--fonts/newtx/doc/newtxdoc.tex12
-rw-r--r--fonts/newtx/tfm/ntxbexx.tfmbin1784 -> 1796 bytes
-rw-r--r--fonts/newtx/tfm/ntxbsy.tfmbin1988 -> 2020 bytes
-rw-r--r--fonts/newtx/tfm/ntxbsy5.tfmbin2004 -> 2036 bytes
-rw-r--r--fonts/newtx/tfm/ntxbsy7.tfmbin1984 -> 2016 bytes
-rw-r--r--fonts/newtx/tfm/ntxexx.tfmbin1772 -> 1788 bytes
-rw-r--r--fonts/newtx/tfm/ntxsy.tfmbin2000 -> 2028 bytes
-rw-r--r--fonts/newtx/tfm/ntxsy5.tfmbin1992 -> 2024 bytes
-rw-r--r--fonts/newtx/tfm/ntxsy7.tfmbin1964 -> 1992 bytes
-rw-r--r--fonts/newtx/tfm/txbex-bar.tfmbin888 -> 908 bytes
-rw-r--r--fonts/newtx/tfm/txbsys.tfmbin1616 -> 1692 bytes
-rw-r--r--fonts/newtx/tfm/txex-bar.tfmbin872 -> 900 bytes
-rw-r--r--fonts/newtx/tfm/txsys.tfmbin1580 -> 1660 bytes
-rw-r--r--fonts/newtx/type1/txbex-bar.pfbbin12805 -> 15466 bytes
-rw-r--r--fonts/newtx/type1/txbsys.pfbbin46217 -> 47027 bytes
-rw-r--r--fonts/newtx/type1/txex-bar.pfbbin12648 -> 15299 bytes
-rw-r--r--fonts/newtx/type1/txsys.pfbbin40320 -> 45943 bytes
-rw-r--r--fonts/newtx/vf/ntxbexx.vfbin1620 -> 1692 bytes
-rw-r--r--fonts/newtx/vf/ntxbsy.vfbin1820 -> 1852 bytes
-rw-r--r--fonts/newtx/vf/ntxbsy5.vfbin1828 -> 1860 bytes
-rw-r--r--fonts/newtx/vf/ntxbsy7.vfbin1888 -> 1924 bytes
-rw-r--r--fonts/newtx/vf/ntxexx.vfbin1648 -> 1716 bytes
-rw-r--r--fonts/newtx/vf/ntxsy.vfbin1772 -> 1804 bytes
-rw-r--r--fonts/newtx/vf/ntxsy5.vfbin1816 -> 1852 bytes
-rw-r--r--fonts/newtx/vf/ntxsy7.vfbin1900 -> 1932 bytes
-rw-r--r--graphics/pmdraw/README.md73
-rw-r--r--graphics/pmdraw/examples/example-1.tex36
-rw-r--r--graphics/pmdraw/examples/example-10.tex37
-rw-r--r--graphics/pmdraw/examples/example-11.tex37
-rw-r--r--graphics/pmdraw/examples/example-12.tex101
-rw-r--r--graphics/pmdraw/examples/example-13.tex126
-rw-r--r--graphics/pmdraw/examples/example-14.tex76
-rw-r--r--graphics/pmdraw/examples/example-15.tex76
-rw-r--r--graphics/pmdraw/examples/example-16.tex127
-rw-r--r--graphics/pmdraw/examples/example-17.tex70
-rw-r--r--graphics/pmdraw/examples/example-18.tex52
-rw-r--r--graphics/pmdraw/examples/example-19.tex53
-rw-r--r--graphics/pmdraw/examples/example-2.tex39
-rw-r--r--graphics/pmdraw/examples/example-20.tex171
-rw-r--r--graphics/pmdraw/examples/example-21.tex183
-rw-r--r--graphics/pmdraw/examples/example-22.tex179
-rw-r--r--graphics/pmdraw/examples/example-23.tex179
-rw-r--r--graphics/pmdraw/examples/example-24.tex160
-rw-r--r--graphics/pmdraw/examples/example-25.tex63
-rw-r--r--graphics/pmdraw/examples/example-3.tex53
-rw-r--r--graphics/pmdraw/examples/example-4.tex77
-rw-r--r--graphics/pmdraw/examples/example-5.tex118
-rw-r--r--graphics/pmdraw/examples/example-6.tex55
-rw-r--r--graphics/pmdraw/examples/example-7.tex63
-rw-r--r--graphics/pmdraw/examples/example-8.tex63
-rw-r--r--graphics/pmdraw/examples/example-9.tex37
-rw-r--r--graphics/pmdraw/pmdraw.pdfbin0 -> 376051 bytes
-rw-r--r--graphics/pmdraw/pmdraw.sty903
-rw-r--r--graphics/pmdraw/pmdraw.tex2811
-rw-r--r--macros/latex/contrib/hyperref/ChangeLog.txt7
-rw-r--r--macros/latex/contrib/hyperref/README.md2
-rw-r--r--macros/latex/contrib/hyperref/doc/backref.pdfbin206681 -> 206681 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc.html1452
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc.pdfbin317671 -> 318399 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc.tex11
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc7.html2
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc8.html2
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc9.html2
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdfbin440050 -> 439955 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref.pdfbin2347765 -> 2350345 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/nameref.pdfbin184798 -> 184798 bytes
-rw-r--r--macros/latex/contrib/hyperref/hluatex.dtx4
-rw-r--r--macros/latex/contrib/hyperref/hyperref-linktarget.dtx4
-rw-r--r--macros/latex/contrib/hyperref/hyperref-patches.dtx2
-rw-r--r--macros/latex/contrib/hyperref/hyperref.dtx135
-rw-r--r--macros/latex/contrib/hyperref/xr-hyper.sty2
-rw-r--r--macros/latex/contrib/ipsum/README.md7
-rw-r--r--macros/latex/contrib/ipsum/doc/ipsum-doc.pdfbin0 -> 169585 bytes
-rw-r--r--macros/latex/contrib/ipsum/doc/ipsum-doc.tex268
-rw-r--r--macros/latex/contrib/ipsum/tex/ipsum.sty741
-rw-r--r--support/latexmk/CHANGES16
-rw-r--r--support/latexmk/INSTALL2
-rw-r--r--support/latexmk/README2
-rw-r--r--support/latexmk/example_rcfiles/README-latexmk-rcfiles2
-rw-r--r--support/latexmk/example_rcfiles/pdflatex_latexmkrc6
-rw-r--r--support/latexmk/example_rcfiles/pythontex-latexmkrc7
-rw-r--r--support/latexmk/example_rcfiles/schulz-texshop-latexmkrc (renamed from support/latexmk/example_rcfiles/schultz-texshop-latexmkrc)0
-rw-r--r--support/latexmk/example_rcfiles/xr_latexmkrc9
-rw-r--r--support/latexmk/latexmk.198
-rw-r--r--support/latexmk/latexmk.pdfbin212107 -> 215760 bytes
-rwxr-xr-xsupport/latexmk/latexmk.pl437
-rw-r--r--support/latexmk/latexmk.txt940
-rw-r--r--systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl1
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb14
-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.asc16
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.xzbin2484232 -> 2483212 bytes
-rw-r--r--timestamp2
105 files changed, 9258 insertions, 1666 deletions
diff --git a/FILES.byname b/FILES.byname
index 484a5db192..a68fe34ad0 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -2060,12 +2060,12 @@
2023/10/05 | 1710 | biblio/citation-style-language/README.md
2023/10/05 | 12878 | biblio/citation-style-language/vancouver.csl
2023/10/05 | 4531754 | biblio/citation-style-language.zip
-2023/11/06 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/11/07 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2022/10/08 | 127 | biblio/ctan-bibdata/biblatex-ctan/ctan.cbx
-2023/11/06 | 2825145 | biblio/ctan-bibdata/ctan.bib
-2023/11/06 | 3725247 | biblio/ctan-bibdata/ctan.pdf
+2023/11/07 | 2826768 | biblio/ctan-bibdata/ctan.bib
+2023/11/07 | 3726593 | biblio/ctan-bibdata/ctan.pdf
2023/01/16 | 1489 | biblio/ctan-bibdata/README
-2023/11/06 | 4129215 | biblio/ctan-bibdata.zip
+2023/11/07 | 4132465 | biblio/ctan-bibdata.zip
2023/02/23 | 3126 | biblio/pbibtex/pbibtex-base/cpp.awk
2023/02/23 | 1009 | biblio/pbibtex/pbibtex-base/generate.sh
2023/02/23 | 22362 | biblio/pbibtex/pbibtex-base/jabbrv.bst
@@ -5422,7 +5422,7 @@
1990/10/02 | 5440 | dviware/vutex/vaxvms.hlp
1990/10/02 | 812 | dviware/vutex/vaxvms.ins
1990/10/02 | 127576 | dviware/vutex/vutex.web
-2023/11/06 | 227945 | FILES.last07days
+2023/11/07 | 227683 | 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
@@ -84972,19 +84972,19 @@
2023/10/03 | 635532 | fonts/newtx/afm/TeXGyreTermesX-Regular.afm
2022/01/08 | 623388 | fonts/newtx/afm/TeXGyreTermesX-Slanted.afm
2017/02/11 | 5019 | fonts/newtx/afm/txbexas.afm
-2019/06/17 | 5212 | fonts/newtx/afm/txbex-bar.afm
+2023/11/07 | 5909 | fonts/newtx/afm/txbex-bar.afm
2021/03/21 | 10301 | fonts/newtx/afm/txbexs.afm
2020/12/09 | 3924 | fonts/newtx/afm/txbmiaSTbb.afm
2021/10/06 | 9488 | fonts/newtx/afm/txbmiaX.afm
2023/08/17 | 13400 | fonts/newtx/afm/txbsym.afm
-2022/05/20 | 10480 | fonts/newtx/afm/txbsys.afm
+2023/11/07 | 10833 | fonts/newtx/afm/txbsys.afm
2019/08/25 | 5028 | fonts/newtx/afm/txexas.afm
-2017/02/11 | 5184 | fonts/newtx/afm/txex-bar.afm
+2023/11/07 | 5904 | fonts/newtx/afm/txex-bar.afm
2021/05/10 | 11399 | fonts/newtx/afm/txexs.afm
2019/06/02 | 3906 | fonts/newtx/afm/txmiaSTbb.afm
2021/10/21 | 10271 | fonts/newtx/afm/txmiaX.afm
2023/08/14 | 13519 | fonts/newtx/afm/txsym.afm
-2019/09/12 | 10400 | fonts/newtx/afm/txsys.afm
+2023/11/07 | 10753 | fonts/newtx/afm/txsys.afm
2023/09/20 | 629209 | fonts/newtx/afm/ztmb.afm
2023/09/22 | 658377 | fonts/newtx/afm/ztmbi.afm
2023/09/20 | 629679 | fonts/newtx/afm/ztmbsl.afm
@@ -84999,8 +84999,8 @@
2015/01/31 | 478 | fonts/newtx/doc/MANIFEST-newtx.txt
2013/09/09 | 188187 | fonts/newtx/doc/mathnotes.pdf
2013/09/09 | 4388 | fonts/newtx/doc/mathnotes.tex
-2023/10/29 | 675906 | fonts/newtx/doc/newtxdoc.pdf
-2023/10/29 | 129272 | fonts/newtx/doc/newtxdoc.tex
+2023/11/07 | 682647 | fonts/newtx/doc/newtxdoc.pdf
+2023/11/07 | 130069 | fonts/newtx/doc/newtxdoc.tex
2012/05/27 | 17530 | fonts/newtx/doc/sample-lib-crop.pdf
2012/05/22 | 18519 | fonts/newtx/doc/sample-libmtp-crop.pdf
2012/05/06 | 18157 | fonts/newtx/doc/sample-mtp-crop.pdf
@@ -85085,7 +85085,7 @@
2023/09/20 | 217888 | fonts/newtx/opentype/TeXGyreTermesX-Italic.otf
2023/10/29 | 226088 | fonts/newtx/opentype/TeXGyreTermesX-Regular.otf
2023/09/20 | 237316 | fonts/newtx/opentype/TeXGyreTermesX-Slanted.otf
-2023/11/01 | 46326 | fonts/newtx/README
+2023/11/07 | 46592 | fonts/newtx/README
2023/05/07 | 245268 | fonts/newtxsf/doc/newtxsf-doc.pdf
2023/05/07 | 6715 | fonts/newtxsf/doc/newtxsf-doc.tex
2014/09/30 | 43780 | fonts/newtxsf/doc/OFL-FAQ.txt
@@ -85286,7 +85286,7 @@
2012/06/18 | 520 | fonts/newtx/tfm/ntxbexb.tfm
2013/05/26 | 816 | fonts/newtx/tfm/ntxbexmods.tfm
2013/05/26 | 1176 | fonts/newtx/tfm/ntxbex.tfm
-2021/03/21 | 1784 | fonts/newtx/tfm/ntxbexx.tfm
+2023/11/06 | 1796 | fonts/newtx/tfm/ntxbexx.tfm
2021/06/02 | 1904 | fonts/newtx/tfm/ntxbmi05.tfm
2021/06/02 | 3332 | fonts/newtx/tfm/ntxbmi07.tfm
2021/06/02 | 4176 | fonts/newtx/tfm/ntxbmi0.tfm
@@ -85428,11 +85428,11 @@
2023/10/04 | 3144 | fonts/newtx/tfm/ntx-Bold-tosf-sc-ot1.tfm
2023/10/04 | 12300 | fonts/newtx/tfm/ntx-Bold-tosf-sc-t1.tfm
2023/10/04 | 11576 | fonts/newtx/tfm/ntx-Bold-tosf-t1.tfm
-2022/05/20 | 2004 | fonts/newtx/tfm/ntxbsy5.tfm
-2022/05/20 | 1984 | fonts/newtx/tfm/ntxbsy7.tfm
+2023/11/07 | 2036 | fonts/newtx/tfm/ntxbsy5.tfm
+2023/11/07 | 2016 | fonts/newtx/tfm/ntxbsy7.tfm
2020/05/18 | 1040 | fonts/newtx/tfm/ntxbsyc.tfm
2023/08/26 | 1572 | fonts/newtx/tfm/ntxbsym.tfm
-2022/05/20 | 1988 | fonts/newtx/tfm/ntxbsy.tfm
+2023/11/07 | 2020 | fonts/newtx/tfm/ntxbsy.tfm
2023/10/04 | 360 | fonts/newtx/tfm/ntxdnom-BoldItalic-ly1.tfm
2023/10/04 | 360 | fonts/newtx/tfm/ntxdnom-BoldItalic-ot1.tfm
2023/10/04 | 288 | fonts/newtx/tfm/ntxdnom-BoldItalic-t1.tfm
@@ -85458,7 +85458,7 @@
2020/05/18 | 760 | fonts/newtx/tfm/ntxexa.tfm
2012/06/18 | 184 | fonts/newtx/tfm/ntxexb.tfm
2013/05/25 | 816 | fonts/newtx/tfm/ntxexmods.tfm
-2021/05/10 | 1772 | fonts/newtx/tfm/ntxexx.tfm
+2023/11/06 | 1788 | fonts/newtx/tfm/ntxexx.tfm
2023/10/04 | 364 | fonts/newtx/tfm/ntxinfalt-BoldItalic-ly1.tfm
2023/10/04 | 364 | fonts/newtx/tfm/ntxinfalt-BoldItalic-ot1.tfm
2023/10/04 | 292 | fonts/newtx/tfm/ntxinfalt-BoldItalic-t1.tfm
@@ -85673,13 +85673,13 @@
2023/10/04 | 1452 | fonts/newtx/tfm/ntxsups-Regular-t1.tfm
2023/09/17 | 1452 | fonts/newtx/tfm/ntxsups-Regular.tfm
2023/09/17 | 1164 | fonts/newtx/tfm/ntxsups-Regular-ts1.tfm
-2022/05/20 | 1992 | fonts/newtx/tfm/ntxsy5.tfm
-2022/05/20 | 1964 | fonts/newtx/tfm/ntxsy7.tfm
+2023/11/07 | 2024 | fonts/newtx/tfm/ntxsy5.tfm
+2023/11/07 | 1992 | fonts/newtx/tfm/ntxsy7.tfm
2015/02/13 | 712 | fonts/newtx/tfm/ntxsybalt.tfm
2020/05/18 | 1028 | fonts/newtx/tfm/ntxsyc.tfm
2023/08/26 | 1560 | fonts/newtx/tfm/ntxsym.tfm
2015/02/13 | 728 | fonts/newtx/tfm/ntxsyralt.tfm
-2022/05/20 | 2000 | fonts/newtx/tfm/ntxsy.tfm
+2023/11/07 | 2028 | fonts/newtx/tfm/ntxsy.tfm
2022/05/19 | 7204 | fonts/newtx/tfm/ntxth-Italic-osf-ly1.tfm
2022/05/19 | 3120 | fonts/newtx/tfm/ntxth-Italic-osf-ot1.tfm
2022/05/19 | 11300 | fonts/newtx/tfm/ntxth-Italic-osf-t1.tfm
@@ -85782,21 +85782,21 @@
2021/05/07 | 6956 | fonts/newtx/tfm/t1xsl-osf.tfm
2021/05/07 | 6924 | fonts/newtx/tfm/t1xsl-tosf.tfm
2017/02/11 | 864 | fonts/newtx/tfm/txbexas.tfm
-2019/06/17 | 888 | fonts/newtx/tfm/txbex-bar.tfm
+2023/11/07 | 908 | fonts/newtx/tfm/txbex-bar.tfm
2021/03/21 | 1544 | fonts/newtx/tfm/txbexs.tfm
2020/12/09 | 956 | fonts/newtx/tfm/txbmiaSTbb.tfm
2021/10/06 | 1704 | fonts/newtx/tfm/txbmiaX.tfm
2012/05/19 | 1156 | fonts/newtx/tfm/txbsy5.tfm
2012/05/19 | 1160 | fonts/newtx/tfm/txbsy7.tfm
-2022/05/20 | 1616 | fonts/newtx/tfm/txbsys.tfm
+2023/11/07 | 1692 | fonts/newtx/tfm/txbsys.tfm
2019/06/17 | 816 | fonts/newtx/tfm/txexas.tfm
-2017/02/11 | 872 | fonts/newtx/tfm/txex-bar.tfm
+2023/11/07 | 900 | fonts/newtx/tfm/txex-bar.tfm
2021/05/10 | 1552 | fonts/newtx/tfm/txexs.tfm
2019/06/02 | 920 | fonts/newtx/tfm/txmiaSTbb.tfm
2021/10/21 | 1716 | fonts/newtx/tfm/txmiaX.tfm
2012/05/19 | 1172 | fonts/newtx/tfm/txsy5.tfm
2012/05/19 | 1156 | fonts/newtx/tfm/txsy7.tfm
-2019/09/12 | 1580 | fonts/newtx/tfm/txsys.tfm
+2023/11/07 | 1660 | fonts/newtx/tfm/txsys.tfm
2021/05/08 | 3236 | fonts/newtx/tfm/ztmbsl-lf-ot1.tfm
2021/05/07 | 11508 | fonts/newtx/tfm/ztmbsl-lf-t1.tfm
2021/05/08 | 7432 | fonts/newtx/tfm/ztmbsl-lf-texnansi.tfm
@@ -86044,23 +86044,23 @@
2013/02/12 | 20809 | fonts/newtx/type1/rtxmi7.pfb
2019/08/27 | 77528 | fonts/newtx/type1/stxscr.pfb
2017/02/11 | 24222 | fonts/newtx/type1/txbexas.pfb
-2019/06/17 | 12805 | fonts/newtx/type1/txbex-bar.pfb
+2023/11/07 | 15466 | fonts/newtx/type1/txbex-bar.pfb
2021/03/21 | 31874 | fonts/newtx/type1/txbexs.pfb
2020/12/09 | 15627 | fonts/newtx/type1/txbmiaSTbb.pfb
2021/10/06 | 51382 | fonts/newtx/type1/txbmiaX.pfb
2015/07/04 | 28828 | fonts/newtx/type1/txbsy5.pfb
2015/07/04 | 28622 | fonts/newtx/type1/txbsy7.pfb
2023/08/17 | 47786 | fonts/newtx/type1/txbsym.pfb
-2022/05/20 | 46217 | fonts/newtx/type1/txbsys.pfb
+2023/11/07 | 47027 | fonts/newtx/type1/txbsys.pfb
2019/08/25 | 23767 | fonts/newtx/type1/txexas.pfb
-2017/02/11 | 12648 | fonts/newtx/type1/txex-bar.pfb
+2023/11/07 | 15299 | fonts/newtx/type1/txex-bar.pfb
2021/05/10 | 33424 | fonts/newtx/type1/txexs.pfb
2019/06/02 | 15249 | fonts/newtx/type1/txmiaSTbb.pfb
2021/10/21 | 56686 | fonts/newtx/type1/txmiaX.pfb
2012/05/16 | 29142 | fonts/newtx/type1/txsy5.pfb
2012/05/15 | 29124 | fonts/newtx/type1/txsy7.pfb
2023/08/14 | 44726 | fonts/newtx/type1/txsym.pfb
-2019/09/12 | 40320 | fonts/newtx/type1/txsys.pfb
+2023/11/07 | 45943 | fonts/newtx/type1/txsys.pfb
2023/10/04 | 260277 | fonts/newtx/type1/ztmbi.pfb
2023/10/04 | 255251 | fonts/newtx/type1/ztmb.pfb
2023/10/04 | 233549 | fonts/newtx/type1/ztmbsl.pfb
@@ -86083,7 +86083,7 @@
2021/05/08 | 1772 | fonts/newtx/vf/ly1xsl-tosf.vf
2020/05/18 | 580 | fonts/newtx/vf/ntxbexa.vf
2013/05/26 | 1072 | fonts/newtx/vf/ntxbex.vf
-2021/03/21 | 1620 | fonts/newtx/vf/ntxbexx.vf
+2023/11/06 | 1692 | fonts/newtx/vf/ntxbexx.vf
2021/06/02 | 1828 | fonts/newtx/vf/ntxbmi05.vf
2021/06/02 | 2704 | fonts/newtx/vf/ntxbmi07.vf
2021/06/02 | 2740 | fonts/newtx/vf/ntxbmi0.vf
@@ -86103,16 +86103,16 @@
2023/10/04 | 956 | fonts/newtx/vf/ntx-Bold-osf-ot1.vf
2023/10/04 | 956 | fonts/newtx/vf/ntx-Bold-tlf-ot1.vf
2023/10/04 | 956 | fonts/newtx/vf/ntx-Bold-tosf-ot1.vf
-2022/05/20 | 1828 | fonts/newtx/vf/ntxbsy5.vf
-2022/05/20 | 1888 | fonts/newtx/vf/ntxbsy7.vf
+2023/11/07 | 1860 | fonts/newtx/vf/ntxbsy5.vf
+2023/11/07 | 1924 | fonts/newtx/vf/ntxbsy7.vf
2020/05/18 | 1416 | fonts/newtx/vf/ntxbsyc.vf
-2022/05/20 | 1820 | fonts/newtx/vf/ntxbsy.vf
+2023/11/07 | 1852 | fonts/newtx/vf/ntxbsy.vf
2020/12/20 | 1960 | fonts/newtx/vf/ntxebgbmia.vf
2020/12/20 | 2700 | fonts/newtx/vf/ntxebgbmi.vf
2020/12/20 | 1980 | fonts/newtx/vf/ntxebgmia.vf
2020/12/20 | 2592 | fonts/newtx/vf/ntxebgmi.vf
2020/05/18 | 576 | fonts/newtx/vf/ntxexa.vf
-2021/05/10 | 1648 | fonts/newtx/vf/ntxexx.vf
+2023/11/06 | 1716 | fonts/newtx/vf/ntxexx.vf
2023/10/04 | 956 | fonts/newtx/vf/ntx-Italic-lf-ot1.vf
2023/10/04 | 956 | fonts/newtx/vf/ntx-Italic-osf-ot1.vf
2023/10/04 | 956 | fonts/newtx/vf/ntx-Italic-tlf-ot1.vf
@@ -86131,10 +86131,10 @@
2023/10/04 | 956 | fonts/newtx/vf/ntx-Regular-osf-ot1.vf
2023/10/04 | 956 | fonts/newtx/vf/ntx-Regular-tlf-ot1.vf
2023/10/04 | 956 | fonts/newtx/vf/ntx-Regular-tosf-ot1.vf
-2022/05/20 | 1816 | fonts/newtx/vf/ntxsy5.vf
-2022/05/20 | 1900 | fonts/newtx/vf/ntxsy7.vf
+2023/11/07 | 1852 | fonts/newtx/vf/ntxsy5.vf
+2023/11/07 | 1932 | fonts/newtx/vf/ntxsy7.vf
2020/05/18 | 1416 | fonts/newtx/vf/ntxsyc.vf
-2022/05/20 | 1772 | fonts/newtx/vf/ntxsy.vf
+2023/11/07 | 1804 | fonts/newtx/vf/ntxsy.vf
2019/12/01 | 2740 | fonts/newtx/vf/nxlbmi015.vf
2019/12/01 | 2740 | fonts/newtx/vf/nxlbmi017.vf
2019/12/01 | 2740 | fonts/newtx/vf/nxlbmi01.vf
@@ -86199,7 +86199,7 @@
2019/11/02 | 2656 | fonts/newtx/vf/zutbmi.vf
2021/03/22 | 2176 | fonts/newtx/vf/zutmia.vf
2019/11/02 | 2552 | fonts/newtx/vf/zutmi.vf
-2023/11/01 | 9636068 | fonts/newtx.zip
+2023/11/07 | 9655283 | fonts/newtx.zip
2005/10/24 | 6224 | fonts/niceframe/afm/bbding10.afm
2005/10/24 | 2299 | fonts/niceframe/afm/dingbat.afm
2005/10/24 | 9099 | fonts/niceframe/afm/karta15.afm
@@ -164174,6 +164174,36 @@
1989/11/26 | 7270 | graphics/pictex/texpictex.tex
1992/08/31 | 11382 | graphics/pictex/tree.sty
2021/06/10 | 1136553 | graphics/pictex.zip
+2023/10/10 | 1025 | graphics/pmdraw/examples/example-10.tex
+2023/10/10 | 1025 | graphics/pmdraw/examples/example-11.tex
+2023/10/12 | 3451 | graphics/pmdraw/examples/example-12.tex
+2023/10/12 | 3018 | graphics/pmdraw/examples/example-13.tex
+2023/10/12 | 1839 | graphics/pmdraw/examples/example-14.tex
+2023/10/12 | 1826 | graphics/pmdraw/examples/example-15.tex
+2023/10/12 | 3049 | graphics/pmdraw/examples/example-16.tex
+2023/10/17 | 1787 | graphics/pmdraw/examples/example-17.tex
+2023/10/12 | 1413 | graphics/pmdraw/examples/example-18.tex
+2023/10/12 | 1452 | graphics/pmdraw/examples/example-19.tex
+2023/10/10 | 875 | graphics/pmdraw/examples/example-1.tex
+2023/10/17 | 4403 | graphics/pmdraw/examples/example-20.tex
+2023/10/17 | 4525 | graphics/pmdraw/examples/example-21.tex
+2023/10/17 | 4583 | graphics/pmdraw/examples/example-22.tex
+2023/10/17 | 4591 | graphics/pmdraw/examples/example-23.tex
+2023/10/16 | 3885 | graphics/pmdraw/examples/example-24.tex
+2023/10/16 | 1529 | graphics/pmdraw/examples/example-25.tex
+2023/10/10 | 937 | graphics/pmdraw/examples/example-2.tex
+2023/10/10 | 1348 | graphics/pmdraw/examples/example-3.tex
+2023/10/17 | 1901 | graphics/pmdraw/examples/example-4.tex
+2023/10/17 | 2854 | graphics/pmdraw/examples/example-5.tex
+2023/10/10 | 1366 | graphics/pmdraw/examples/example-6.tex
+2023/10/10 | 1587 | graphics/pmdraw/examples/example-7.tex
+2023/10/10 | 1584 | graphics/pmdraw/examples/example-8.tex
+2023/10/10 | 1025 | graphics/pmdraw/examples/example-9.tex
+2023/11/07 | 376051 | graphics/pmdraw/pmdraw.pdf
+2023/11/07 | 43983 | graphics/pmdraw/pmdraw.sty
+2023/11/07 | 76918 | graphics/pmdraw/pmdraw.tex
+2023/11/07 | 1804 | graphics/pmdraw/README.md
+2023/11/07 | 395112 | graphics/pmdraw.zip
2018/05/31 | 17537 | graphics/postage/postage.dtx
2018/05/31 | 2443 | graphics/postage/postage.ins
2018/05/30 | 335762 | graphics/postage/postage.pdf
@@ -194683,7 +194713,7 @@
2016/06/07 | 215651 | install/macros/latex/contrib/he-she.tds.zip
2023/02/26 | 450556 | install/macros/latex/contrib/hrefhide.tds.zip
2016/11/20 | 951051 | install/macros/latex/contrib/hustthesis.tds.zip
-2023/10/31 | 4480772 | install/macros/latex/contrib/hyperref.tds.zip
+2023/11/07 | 4485853 | install/macros/latex/contrib/hyperref.tds.zip
2023/09/11 | 1365373 | install/macros/latex/contrib/hyperxmp.tds.zip
2009/09/02 | 167274 | install/macros/latex/contrib/hyphenat.tds.zip
2009/04/05 | 198256 | install/macros/latex/contrib/IEEEconf.tds.zip
@@ -225983,40 +226013,40 @@
2010/03/06 | 1833 | macros/latex/contrib/hypernat/hypernat.tex
2010/03/06 | 187989 | macros/latex/contrib/hypernat.zip
1999/03/09 | 1563 | macros/latex/contrib/hyper/README
-2023/10/31 | 28694 | macros/latex/contrib/hyperref/backref.dtx
-2023/10/31 | 3161 | macros/latex/contrib/hyperref/bmhydoc.sty
-2023/10/31 | 125755 | macros/latex/contrib/hyperref/ChangeLog.txt
-2023/10/31 | 206681 | macros/latex/contrib/hyperref/doc/backref.pdf
-2023/10/31 | 928 | macros/latex/contrib/hyperref/doc/hyperref-doc2.html
-2023/10/31 | 795 | macros/latex/contrib/hyperref/doc/hyperref-doc3.html
-2023/10/31 | 1030 | macros/latex/contrib/hyperref/doc/hyperref-doc4.html
-2023/10/31 | 882 | macros/latex/contrib/hyperref/doc/hyperref-doc5.html
-2023/10/31 | 793 | macros/latex/contrib/hyperref/doc/hyperref-doc6.html
-2023/10/31 | 854 | macros/latex/contrib/hyperref/doc/hyperref-doc7.html
-2023/10/31 | 795 | macros/latex/contrib/hyperref/doc/hyperref-doc8.html
-2023/10/31 | 795 | macros/latex/contrib/hyperref/doc/hyperref-doc9.html
-2023/10/31 | 15673 | macros/latex/contrib/hyperref/doc/hyperref-doc.css
-2023/10/31 | 525392 | macros/latex/contrib/hyperref/doc/hyperref-doc.html
-2023/10/31 | 317671 | macros/latex/contrib/hyperref/doc/hyperref-doc.pdf
-2023/10/31 | 171497 | macros/latex/contrib/hyperref/doc/hyperref-doc.tex
-2023/10/31 | 440050 | macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf
-2023/10/31 | 2347765 | macros/latex/contrib/hyperref/doc/hyperref.pdf
-2023/10/31 | 184798 | macros/latex/contrib/hyperref/doc/nameref.pdf
-2023/10/31 | 132446 | macros/latex/contrib/hyperref/doc/paper.pdf
-2023/10/31 | 384001 | macros/latex/contrib/hyperref/doc/slides.pdf
-2023/10/31 | 50695 | macros/latex/contrib/hyperref/hluatex.dtx
-2023/10/31 | 872111 | macros/latex/contrib/hyperref/hyperref.dtx
-2023/10/31 | 5024 | macros/latex/contrib/hyperref/hyperref.ins
-2023/10/31 | 19445 | macros/latex/contrib/hyperref/hyperref-linktarget.dtx
-2023/10/31 | 7536 | macros/latex/contrib/hyperref/hyperref-patches.dtx
-2023/10/31 | 1929 | macros/latex/contrib/hyperref/manifest.txt
-2023/10/31 | 280 | macros/latex/contrib/hyperref/minitoc-hyper.sty
-2023/10/31 | 28789 | macros/latex/contrib/hyperref/nameref.dtx
-2023/10/31 | 284 | macros/latex/contrib/hyperref/ntheorem-hyper.sty
-2023/10/31 | 247116 | macros/latex/contrib/hyperref/paperslides99.zip
-2023/10/31 | 4479 | macros/latex/contrib/hyperref/README.md
-2023/10/31 | 5766 | macros/latex/contrib/hyperref/xr-hyper.sty
-2023/10/31 | 4300186 | macros/latex/contrib/hyperref.zip
+2023/11/07 | 28694 | macros/latex/contrib/hyperref/backref.dtx
+2023/11/07 | 3161 | macros/latex/contrib/hyperref/bmhydoc.sty
+2023/11/07 | 125941 | macros/latex/contrib/hyperref/ChangeLog.txt
+2023/11/07 | 206681 | macros/latex/contrib/hyperref/doc/backref.pdf
+2023/11/07 | 928 | macros/latex/contrib/hyperref/doc/hyperref-doc2.html
+2023/11/07 | 795 | macros/latex/contrib/hyperref/doc/hyperref-doc3.html
+2023/11/07 | 1030 | macros/latex/contrib/hyperref/doc/hyperref-doc4.html
+2023/11/07 | 882 | macros/latex/contrib/hyperref/doc/hyperref-doc5.html
+2023/11/07 | 793 | macros/latex/contrib/hyperref/doc/hyperref-doc6.html
+2023/11/07 | 854 | macros/latex/contrib/hyperref/doc/hyperref-doc7.html
+2023/11/07 | 795 | macros/latex/contrib/hyperref/doc/hyperref-doc8.html
+2023/11/07 | 795 | macros/latex/contrib/hyperref/doc/hyperref-doc9.html
+2023/11/07 | 15673 | macros/latex/contrib/hyperref/doc/hyperref-doc.css
+2023/11/07 | 526220 | macros/latex/contrib/hyperref/doc/hyperref-doc.html
+2023/11/07 | 318399 | macros/latex/contrib/hyperref/doc/hyperref-doc.pdf
+2023/11/07 | 171911 | macros/latex/contrib/hyperref/doc/hyperref-doc.tex
+2023/11/07 | 439955 | macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf
+2023/11/07 | 2350345 | macros/latex/contrib/hyperref/doc/hyperref.pdf
+2023/11/07 | 184798 | macros/latex/contrib/hyperref/doc/nameref.pdf
+2023/11/07 | 132446 | macros/latex/contrib/hyperref/doc/paper.pdf
+2023/11/07 | 384001 | macros/latex/contrib/hyperref/doc/slides.pdf
+2023/11/07 | 50695 | macros/latex/contrib/hyperref/hluatex.dtx
+2023/11/07 | 874328 | macros/latex/contrib/hyperref/hyperref.dtx
+2023/11/07 | 5024 | macros/latex/contrib/hyperref/hyperref.ins
+2023/11/07 | 19473 | macros/latex/contrib/hyperref/hyperref-linktarget.dtx
+2023/11/07 | 7536 | macros/latex/contrib/hyperref/hyperref-patches.dtx
+2023/11/07 | 1929 | macros/latex/contrib/hyperref/manifest.txt
+2023/11/07 | 280 | macros/latex/contrib/hyperref/minitoc-hyper.sty
+2023/11/07 | 28789 | macros/latex/contrib/hyperref/nameref.dtx
+2023/11/07 | 284 | macros/latex/contrib/hyperref/ntheorem-hyper.sty
+2023/11/07 | 247116 | macros/latex/contrib/hyperref/paperslides99.zip
+2023/11/07 | 4479 | macros/latex/contrib/hyperref/README.md
+2023/11/07 | 5766 | macros/latex/contrib/hyperref/xr-hyper.sty
+2023/11/07 | 4305174 | macros/latex/contrib/hyperref.zip
1997/08/24 | 1034 | macros/latex/contrib/hyper/scontrib/harvard.hyp
1997/08/24 | 297 | macros/latex/contrib/hyper/scontrib/README
1997/08/24 | 1381 | macros/latex/contrib/hyper/TODO
@@ -226642,6 +226672,11 @@
2012/08/16 | 2265 | macros/latex/contrib/ionumbers/Makefile
2011/06/12 | 4247 | macros/latex/contrib/ionumbers/README
2014/04/15 | 497195 | macros/latex/contrib/ionumbers.zip
+2023/11/07 | 169585 | macros/latex/contrib/ipsum/doc/ipsum-doc.pdf
+2023/11/07 | 5509 | macros/latex/contrib/ipsum/doc/ipsum-doc.tex
+2023/11/07 | 461 | macros/latex/contrib/ipsum/README.md
+2023/11/07 | 50800 | macros/latex/contrib/ipsum/tex/ipsum.sty
+2023/11/07 | 183816 | macros/latex/contrib/ipsum.zip
2017/11/14 | 5128 | macros/latex/contrib/iscram/HMI.pdf
2017/11/14 | 3861 | macros/latex/contrib/iscram/iscram-class-doc.bib
2017/11/14 | 262899 | macros/latex/contrib/iscram/iscram-class-doc.pdf
@@ -284293,7 +284328,7 @@
2021/10/26 | 246523 | support/latex-make/texdepends.pdf
2021/10/26 | 1069049 | support/latex-make.zip
2006/03/12 | 5889 | support/latexmake.zip
-2023/04/04 | 41032 | support/latexmk/CHANGES
+2023/11/07 | 41821 | support/latexmk/CHANGES
2013/12/03 | 17993 | support/latexmk/COPYING
2022/01/28 | 2881 | support/latexmk/example_rcfiles/asymptote_latexmkrc
2017/11/20 | 853 | support/latexmk/example_rcfiles/bib2gls_latexmkrc
@@ -284311,18 +284346,19 @@
2022/01/15 | 1986 | support/latexmk/example_rcfiles/minted_latexmkrc
2014/03/04 | 991 | support/latexmk/example_rcfiles/mpost_latexmkrc
2016/10/13 | 303 | support/latexmk/example_rcfiles/nomenclature_latexmkrc
+2023/05/08 | 106 | support/latexmk/example_rcfiles/pdflatex_latexmkrc
2020/02/01 | 163 | support/latexmk/example_rcfiles/pweave-latexmkrc
-2022/01/28 | 1449 | support/latexmk/example_rcfiles/pythontex-latexmkrc
-2018/10/25 | 3002 | support/latexmk/example_rcfiles/README-latexmk-rcfiles
+2023/04/20 | 1822 | support/latexmk/example_rcfiles/pythontex-latexmkrc
+2023/11/06 | 3006 | support/latexmk/example_rcfiles/README-latexmk-rcfiles
2021/09/11 | 1024 | support/latexmk/example_rcfiles/sagetex_latexmkrc
-2012/08/04 | 3447 | support/latexmk/example_rcfiles/schultz-texshop-latexmkrc
+2012/08/04 | 3447 | support/latexmk/example_rcfiles/schulz-texshop-latexmkrc
2019/03/26 | 1378 | support/latexmk/example_rcfiles/splitindex.latexmkrc
2020/02/13 | 2535 | support/latexmk/example_rcfiles/sweave_latexmkrc
2012/10/02 | 1161 | support/latexmk/example_rcfiles/tex4ht-latexmkrc
2021/11/20 | 2176 | support/latexmk/example_rcfiles/texinfo-latexmkrc
2018/08/06 | 2798 | support/latexmk/example_rcfiles/tikz-externalized-latexmkrc
2017/01/14 | 382 | support/latexmk/example_rcfiles/xelatex_latexmkrc
-2023/03/31 | 4162 | support/latexmk/example_rcfiles/xr_latexmkrc
+2023/11/06 | 3959 | support/latexmk/example_rcfiles/xr_latexmkrc
2007/01/20 | 328 | support/latexmk/extra-scripts/dvipdfm_call
2007/01/20 | 381 | support/latexmk/extra-scripts/dvipdfm_call.bat
2007/01/20 | 331 | support/latexmk/extra-scripts/dvipdfmx_call
@@ -284336,14 +284372,14 @@
2007/09/29 | 1492 | support/latexmk/extra-scripts/pst2pdf_for_latexmk_README.txt
2016/10/13 | 4828 | support/latexmk/extra-scripts/README-latexmk-scripts
2006/01/14 | 5588 | support/latexmk/extra-scripts/startacroread
-2023/04/04 | 17951 | support/latexmk/INSTALL
-2023/04/04 | 188084 | support/latexmk/latexmk.1
+2023/11/06 | 17951 | support/latexmk/INSTALL
+2023/11/06 | 191834 | support/latexmk/latexmk.1
2022/03/15 | 1219 | support/latexmk/latexmk.cmd
-2023/04/04 | 212107 | support/latexmk/latexmk.pdf
-2023/04/04 | 483924 | support/latexmk/latexmk.pl
-2023/04/04 | 232876 | support/latexmk/latexmk.txt
-2023/04/04 | 2505 | support/latexmk/README
-2023/04/04 | 512258 | support/latexmk.zip
+2023/11/06 | 215760 | support/latexmk/latexmk.pdf
+2023/11/06 | 491813 | support/latexmk/latexmk.pl
+2023/11/06 | 237968 | support/latexmk/latexmk.txt
+2023/11/06 | 2505 | support/latexmk/README
+2023/11/07 | 521303 | support/latexmk.zip
1997/11/24 | 7551 | support/latexn/latexn
2023/02/27 | 22923 | support/latexpand/latexpand
2023/02/24 | 1529 | support/latexpand/LICENCE
@@ -303124,7 +303160,7 @@
2022/09/13 | 600 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r64356.tar.xz
-2023/11/06 | 428596 | systems/texlive/tlnet/archive/texlive-scripts.doc.r68742.tar.xz
+2023/11/07 | 428680 | systems/texlive/tlnet/archive/texlive-scripts.doc.r68744.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
@@ -303146,7 +303182,7 @@
2022/09/13 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r64356.tar.xz
-2023/11/06 | 114240 | systems/texlive/tlnet/archive/texlive-scripts.r68742.tar.xz
+2023/11/07 | 114252 | systems/texlive/tlnet/archive/texlive-scripts.r68744.tar.xz
2022/09/13 | 580 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r64356.tar.xz
2023/05/14 | 60312 | systems/texlive/tlnet/archive/texlive-scripts.windows.r67095.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r64356.tar.xz
@@ -305028,16 +305064,16 @@
2020/07/18 | 47816 | systems/texlive/tlnet/archive/zztex.doc.r55862.tar.xz
2020/07/18 | 101724 | systems/texlive/tlnet/archive/zztex.r55862.tar.xz
2023/08/07 | 125713 | systems/texlive/tlnet/install-tl
-2023/11/06 | 5743906 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2023/11/06 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2023/11/06 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2023/11/07 | 5743145 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2023/11/07 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2023/11/07 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2023/05/13 | 5083 | systems/texlive/tlnet/install-tl-windows.bat
-2023/11/06 | 21038445 | systems/texlive/tlnet/install-tl-windows.exe
-2023/11/06 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2023/11/06 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2023/11/06 | 26029225 | systems/texlive/tlnet/install-tl.zip
-2023/11/06 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2023/11/06 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2023/11/07 | 21040163 | systems/texlive/tlnet/install-tl-windows.exe
+2023/11/07 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2023/11/07 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2023/11/07 | 26029231 | systems/texlive/tlnet/install-tl.zip
+2023/11/07 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2023/11/07 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2023/03/19 | 1229 | systems/texlive/tlnet/README.md
2023/03/19 | 0 | systems/texlive/tlnet/TEXLIVE_2023
2023/01/17 | 8401 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
@@ -305047,7 +305083,7 @@
2023/01/17 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg
2023/09/20 | 50622 | systems/texlive/tlnet/tlpkg/installer/config.guess
2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt
-2023/11/05 | 7508 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2023/11/06 | 7563 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2023/08/23 | 221470 | 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
@@ -305089,12 +305125,12 @@
2023/02/21 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm
2021/12/21 | 5429 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm
2023/04/08 | 28167 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm
-2023/11/06 | 18319509 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2023/11/06 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2023/11/07 | 18319509 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2023/11/07 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2023/10/16 | 87924 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2023/11/06 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2023/11/06 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2023/11/06 | 2484232 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2023/11/07 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2023/11/07 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2023/11/07 | 2483212 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2023/02/20 | 58928 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2023/06/11 | 42749 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2023/02/21 | 16138 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -315993,7 +316029,7 @@
2014/07/05 | 611 | systems/win32/yandy/README
2014/07/05 | 1004628 | systems/win32/yandy/yandy-src.tar.xz
2014/07/05 | 1012416 | systems/win32/yandy.zip
-2023/11/07 | 186 | timestamp
+2023/11/08 | 186 | timestamp
2002/08/26 | 61898 | usergrps/dante/antrag.pdf
2002/08/26 | 118217 | usergrps/dante/antrag.ps
2021/11/11 | 917 | usergrps/dante/dtk/doc/beispiel.bib
diff --git a/FILES.byname.gz b/FILES.byname.gz
index 2d799cd80f..6e192b2c33 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index 9a825187ed..e0272efb95 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,3 +1,98 @@
+2023/11/07 | 9655283 | fonts/newtx.zip
+2023/11/07 | 928 | macros/latex/contrib/hyperref/doc/hyperref-doc2.html
+2023/11/07 | 908 | fonts/newtx/tfm/txbex-bar.tfm
+2023/11/07 | 900 | fonts/newtx/tfm/txex-bar.tfm
+2023/11/07 | 882 | macros/latex/contrib/hyperref/doc/hyperref-doc5.html
+2023/11/07 | 874328 | macros/latex/contrib/hyperref/hyperref.dtx
+2023/11/07 | 854 | macros/latex/contrib/hyperref/doc/hyperref-doc7.html
+2023/11/07 | 795 | macros/latex/contrib/hyperref/doc/hyperref-doc9.html
+2023/11/07 | 795 | macros/latex/contrib/hyperref/doc/hyperref-doc8.html
+2023/11/07 | 795 | macros/latex/contrib/hyperref/doc/hyperref-doc3.html
+2023/11/07 | 793 | macros/latex/contrib/hyperref/doc/hyperref-doc6.html
+2023/11/07 | 76918 | graphics/pmdraw/pmdraw.tex
+2023/11/07 | 7536 | macros/latex/contrib/hyperref/hyperref-patches.dtx
+2023/11/07 | 682647 | fonts/newtx/doc/newtxdoc.pdf
+2023/11/07 | 5909 | fonts/newtx/afm/txbex-bar.afm
+2023/11/07 | 5904 | fonts/newtx/afm/txex-bar.afm
+2023/11/07 | 5766 | macros/latex/contrib/hyperref/xr-hyper.sty
+2023/11/07 | 5743145 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2023/11/07 | 5509 | macros/latex/contrib/ipsum/doc/ipsum-doc.tex
+2023/11/07 | 526220 | macros/latex/contrib/hyperref/doc/hyperref-doc.html
+2023/11/07 | 521303 | support/latexmk.zip
+2023/11/07 | 50800 | macros/latex/contrib/ipsum/tex/ipsum.sty
+2023/11/07 | 50695 | macros/latex/contrib/hyperref/hluatex.dtx
+2023/11/07 | 5024 | macros/latex/contrib/hyperref/hyperref.ins
+2023/11/07 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2023/11/07 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2023/11/07 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2023/11/07 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2023/11/07 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2023/11/07 | 47027 | fonts/newtx/type1/txbsys.pfb
+2023/11/07 | 46592 | fonts/newtx/README
+2023/11/07 | 461 | macros/latex/contrib/ipsum/README.md
+2023/11/07 | 45943 | fonts/newtx/type1/txsys.pfb
+2023/11/07 | 4485853 | install/macros/latex/contrib/hyperref.tds.zip
+2023/11/07 | 4479 | macros/latex/contrib/hyperref/README.md
+2023/11/07 | 439955 | macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf
+2023/11/07 | 43983 | graphics/pmdraw/pmdraw.sty
+2023/11/07 | 4305174 | macros/latex/contrib/hyperref.zip
+2023/11/07 | 428680 | systems/texlive/tlnet/archive/texlive-scripts.doc.r68744.tar.xz
+2023/11/07 | 41821 | support/latexmk/CHANGES
+2023/11/07 | 4132465 | biblio/ctan-bibdata.zip
+2023/11/07 | 395112 | graphics/pmdraw.zip
+2023/11/07 | 384001 | macros/latex/contrib/hyperref/doc/slides.pdf
+2023/11/07 | 376051 | graphics/pmdraw/pmdraw.pdf
+2023/11/07 | 3726593 | biblio/ctan-bibdata/ctan.pdf
+2023/11/07 | 318399 | macros/latex/contrib/hyperref/doc/hyperref-doc.pdf
+2023/11/07 | 3161 | macros/latex/contrib/hyperref/bmhydoc.sty
+2023/11/07 | 28789 | macros/latex/contrib/hyperref/nameref.dtx
+2023/11/07 | 28694 | macros/latex/contrib/hyperref/backref.dtx
+2023/11/07 | 284 | macros/latex/contrib/hyperref/ntheorem-hyper.sty
+2023/11/07 | 2826768 | biblio/ctan-bibdata/ctan.bib
+2023/11/07 | 280 | macros/latex/contrib/hyperref/minitoc-hyper.sty
+2023/11/07 | 26029231 | systems/texlive/tlnet/install-tl.zip
+2023/11/07 | 2483212 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2023/11/07 | 247116 | macros/latex/contrib/hyperref/paperslides99.zip
+2023/11/07 | 2350345 | macros/latex/contrib/hyperref/doc/hyperref.pdf
+2023/11/07 | 21040163 | systems/texlive/tlnet/install-tl-windows.exe
+2023/11/07 | 206681 | macros/latex/contrib/hyperref/doc/backref.pdf
+2023/11/07 | 2036 | fonts/newtx/tfm/ntxbsy5.tfm
+2023/11/07 | 2028 | fonts/newtx/tfm/ntxsy.tfm
+2023/11/07 | 2024 | fonts/newtx/tfm/ntxsy5.tfm
+2023/11/07 | 2020 | fonts/newtx/tfm/ntxbsy.tfm
+2023/11/07 | 2016 | fonts/newtx/tfm/ntxbsy7.tfm
+2023/11/07 | 1992 | fonts/newtx/tfm/ntxsy7.tfm
+2023/11/07 | 19473 | macros/latex/contrib/hyperref/hyperref-linktarget.dtx
+2023/11/07 | 1932 | fonts/newtx/vf/ntxsy7.vf
+2023/11/07 | 1929 | macros/latex/contrib/hyperref/manifest.txt
+2023/11/07 | 1924 | fonts/newtx/vf/ntxbsy7.vf
+2023/11/07 | 1860 | fonts/newtx/vf/ntxbsy5.vf
+2023/11/07 | 1852 | fonts/newtx/vf/ntxsy5.vf
+2023/11/07 | 1852 | fonts/newtx/vf/ntxbsy.vf
+2023/11/07 | 184798 | macros/latex/contrib/hyperref/doc/nameref.pdf
+2023/11/07 | 183816 | macros/latex/contrib/ipsum.zip
+2023/11/07 | 18319509 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2023/11/07 | 1804 | graphics/pmdraw/README.md
+2023/11/07 | 1804 | fonts/newtx/vf/ntxsy.vf
+2023/11/07 | 171911 | macros/latex/contrib/hyperref/doc/hyperref-doc.tex
+2023/11/07 | 169585 | macros/latex/contrib/ipsum/doc/ipsum-doc.pdf
+2023/11/07 | 1692 | fonts/newtx/tfm/txbsys.tfm
+2023/11/07 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/11/07 | 1660 | fonts/newtx/tfm/txsys.tfm
+2023/11/07 | 15673 | macros/latex/contrib/hyperref/doc/hyperref-doc.css
+2023/11/07 | 15466 | fonts/newtx/type1/txbex-bar.pfb
+2023/11/07 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2023/11/07 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2023/11/07 | 15299 | fonts/newtx/type1/txex-bar.pfb
+2023/11/07 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2023/11/07 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2023/11/07 | 132446 | macros/latex/contrib/hyperref/doc/paper.pdf
+2023/11/07 | 130069 | fonts/newtx/doc/newtxdoc.tex
+2023/11/07 | 125941 | macros/latex/contrib/hyperref/ChangeLog.txt
+2023/11/07 | 114252 | systems/texlive/tlnet/archive/texlive-scripts.r68744.tar.xz
+2023/11/07 | 10833 | fonts/newtx/afm/txbsys.afm
+2023/11/07 | 10753 | fonts/newtx/afm/txsys.afm
+2023/11/07 | 1030 | macros/latex/contrib/hyperref/doc/hyperref-doc4.html
2023/11/06 | 99253 | graphics/pstricks/base/doc/pst-news23.pdf
2023/11/06 | 92448 | macros/luatex/latex/innerscript/innerscript_code.pdf
2023/11/06 | 9239 | macros/latex/contrib/siunitx/siunitx-symbol.dtx
@@ -9,6 +104,7 @@
2023/11/06 | 8109 | graphics/pstricks/base/latex/pstricks.sty
2023/11/06 | 807 | macros/latex/contrib/q-and-a/demo/theme-ChatGPT/code/Q-and-A-example-code-1.py
2023/11/06 | 78250 | macros/latex/contrib/siunitx/CHANGELOG.md
+2023/11/06 | 7563 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2023/11/06 | 72331 | macros/luatex/latex/innerscript/innerscript_code.dtx
2023/11/06 | 705592 | macros/latex/contrib/siunitx/siunitx.pdf
2023/11/06 | 668 | graphics/pgf/contrib/polyhedra/README.md
@@ -16,7 +112,6 @@
2023/11/06 | 6208 | macros/latex/contrib/affilauthor/affilauthor-doc.tex
2023/11/06 | 5831 | macros/latex/contrib/siunitx/siunitx-locale.dtx
2023/11/06 | 575 | macros/latex/contrib/q-and-a/demo/theme-ChatGPT/Q-and-A-demo-ChatGPT.tex
-2023/11/06 | 5743906 | systems/texlive/tlnet/install-tl-unx.tar.gz
2023/11/06 | 560069 | macros/latex/contrib/q-and-a.zip
2023/11/06 | 55728 | macros/latex/contrib/siunitx/siunitx-table.dtx
2023/11/06 | 52791 | macros/latex/contrib/q-and-a/demo/lang-de/Q-and-A-demo-de.pdf
@@ -28,11 +123,7 @@
2023/11/06 | 51255 | macros/latex/contrib/homework/homework-demo-en.pdf
2023/11/06 | 5068 | macros/latex/contrib/q-and-a/demo/lang-de/Q-and-A-demo-de-content.tex
2023/11/06 | 49773 | macros/latex/contrib/q-and-a/demo/lang-en/Q-and-A-demo-en.pdf
-2023/11/06 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
-2023/11/06 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2023/11/06 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2023/11/06 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2023/11/06 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2023/11/06 | 491813 | support/latexmk/latexmk.pl
2023/11/06 | 48816 | macros/latex/contrib/q-and-a/demo/lang-fr/Q-and-A-demo-fr.pdf
2023/11/06 | 4748 | macros/latex/contrib/siunitx/siunitx-abbreviations.cfg
2023/11/06 | 4636 | graphics/pstricks/base/doc/pst-news23.tex
@@ -45,11 +136,9 @@
2023/11/06 | 4336 | macros/latex/contrib/q-and-a/README.md
2023/11/06 | 43260 | macros/latex/contrib/q-and-a/demo/theme-ChatGPT/Q-and-A-demo-ChatGPT-dark.pdf
2023/11/06 | 43239 | macros/latex/contrib/q-and-a/demo/theme-ChatGPT/Q-and-A-demo-ChatGPT-light.pdf
-2023/11/06 | 428596 | systems/texlive/tlnet/archive/texlive-scripts.doc.r68742.tar.xz
-2023/11/06 | 4129215 | biblio/ctan-bibdata.zip
+2023/11/06 | 3959 | support/latexmk/example_rcfiles/xr_latexmkrc
2023/11/06 | 39328 | macros/latex/contrib/siunitx/siunitx-complex.dtx
2023/11/06 | 37724 | macros/latex/contrib/siunitx/siunitx-print.dtx
-2023/11/06 | 3725247 | biblio/ctan-bibdata/ctan.pdf
2023/11/06 | 37196 | macros/latex/contrib/q-and-a/Q-and-A.cls
2023/11/06 | 3687 | macros/latex/contrib/siunitx/siunitx.ins
2023/11/06 | 365 | macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-content.tex
@@ -72,50 +161,50 @@
2023/11/06 | 310 | macros/latex/contrib/q-and-a/demo/lang-cn/Q-and-A-demo-cn.tex
2023/11/06 | 302 | macros/latex/contrib/q-and-a/demo/lang-en/Q-and-A-demo-en.tex
2023/11/06 | 30103 | macros/latex/contrib/homework/homework-example-sheet-answer.pdf
+2023/11/06 | 3006 | support/latexmk/example_rcfiles/README-latexmk-rcfiles
2023/11/06 | 29 | macros/latex/contrib/q-and-a/demo/lang-de/code/Q-and-A-demo-de-code-list.py
2023/11/06 | 2951 | macros/latex/contrib/siunitx/siunitx-binary.dtx
2023/11/06 | 2946 | macros/latex/contrib/q-and-a/demo/theme-ChatGPT/Q-and-A-demo-ChatGPT-content.tex
-2023/11/06 | 2825145 | biblio/ctan-bibdata/ctan.bib
2023/11/06 | 273398 | macros/latex/contrib/siunitx/siunitx-v2.sty
2023/11/06 | 271 | macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-document.tex
2023/11/06 | 26 | macros/latex/contrib/q-and-a/demo/lang-fr/code/Q-and-A-demo-fr-code-list.py
2023/11/06 | 2696 | macros/latex/contrib/homework/homework-example-sheet.tex
2023/11/06 | 2636 | macros/latex/contrib/siunitx/siunitx-code.tex
-2023/11/06 | 26029225 | systems/texlive/tlnet/install-tl.zip
2023/11/06 | 25 | macros/latex/contrib/q-and-a/demo/lang-en/code/Q-and-A-demo-en-code-list.py
2023/11/06 | 25 | macros/latex/contrib/q-and-a/demo/lang-cn/code/Q-and-A-demo-cn-code-list.py
-2023/11/06 | 2484232 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2023/11/06 | 2505 | support/latexmk/README
2023/11/06 | 245837 | macros/latex/contrib/affilauthor.zip
+2023/11/06 | 237968 | support/latexmk/latexmk.txt
2023/11/06 | 2360 | macros/latex/contrib/fancyvrb/Changes
2023/11/06 | 22231 | macros/latex/contrib/siunitx/siunitx.dtx
2023/11/06 | 21936 | macros/latex/contrib/homework/homework-example-sheet.pdf
2023/11/06 | 21837 | macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-content-result.pdf
+2023/11/06 | 215760 | support/latexmk/latexmk.pdf
2023/11/06 | 212414 | macros/luatex/latex/innerscript.zip
2023/11/06 | 2106 | macros/latex/contrib/q-and-a/demo/theme-ChatGPT/images/Q-and-A-demo-logo-ChatGPT.pdf
-2023/11/06 | 21038445 | systems/texlive/tlnet/install-tl-windows.exe
2023/11/06 | 204 | macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-content-result.tex
2023/11/06 | 194023 | macros/latex/contrib/fancyvrb.zip
+2023/11/06 | 191834 | support/latexmk/latexmk.1
2023/11/06 | 19106 | macros/latex/contrib/q-and-a/LICENSE
2023/11/06 | 19106 | macros/latex/contrib/homework/LICENSE
2023/11/06 | 188326 | graphics/pgf/contrib/polyhedra.zip
2023/11/06 | 18441 | macros/latex/contrib/siunitx/siunitx-angle.dtx
2023/11/06 | 183790 | graphics/pgf/contrib/polyhedra/polyhedra-doc.pdf
-2023/11/06 | 18319509 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2023/11/06 | 1796 | fonts/newtx/tfm/ntxbexx.tfm
+2023/11/06 | 17951 | support/latexmk/INSTALL
+2023/11/06 | 1788 | fonts/newtx/tfm/ntxexx.tfm
2023/11/06 | 175682 | macros/latex/contrib/q-and-a/demo/lang-cn/Q-and-A-demo-cn.pdf
2023/11/06 | 17523 | graphics/pgf/contrib/polyhedra/polyhedra.sty
2023/11/06 | 1729 | macros/latex/contrib/siunitx/siunitx-binary.cfg
+2023/11/06 | 1716 | fonts/newtx/vf/ntxexx.vf
2023/11/06 | 170570 | macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf
+2023/11/06 | 1692 | fonts/newtx/vf/ntxbexx.vf
2023/11/06 | 168660 | macros/latex/contrib/siunitx/siunitx.tex
-2023/11/06 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2023/11/06 | 162316 | macros/latex/contrib/siunitx/siunitx-number.dtx
2023/11/06 | 1594512 | install/macros/latex/contrib/siunitx.tds.zip
2023/11/06 | 15869 | macros/latex/contrib/q-and-a/doc/Q-and-A-doc.tex
2023/11/06 | 1547221 | macros/latex/contrib/siunitx.zip
-2023/11/06 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
2023/11/06 | 15311 | macros/latex/contrib/siunitx/siunitx-quantity.dtx
-2023/11/06 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2023/11/06 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2023/11/06 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
2023/11/06 | 1444 | macros/latex/contrib/q-and-a/demo/theme-ChatGPT/images/Q-and-A-demo-logo-User.pdf
2023/11/06 | 138 | macros/latex/contrib/q-and-a/demo/lang-de/code/Q-and-A-demo-de-code-func.py
2023/11/06 | 12 | macros/latex/contrib/q-and-a/DEPENDS.txt
@@ -125,7 +214,6 @@
2023/11/06 | 117 | macros/latex/contrib/q-and-a/demo/lang-en/code/Q-and-A-demo-en-code-func.py
2023/11/06 | 1179 | macros/latex/contrib/siunitx/README.md
2023/11/06 | 11783 | macros/latex/contrib/homework/README.md
-2023/11/06 | 114240 | systems/texlive/tlnet/archive/texlive-scripts.r68742.tar.xz
2023/11/06 | 113778 | macros/luatex/latex/innerscript/innerscript_user_guide.pdf
2023/11/06 | 11266 | macros/latex/contrib/siunitx/siunitx-abbreviation.dtx
2023/11/06 | 11140 | graphics/pgf/contrib/polyhedra/polyhedra-doc.tex
@@ -207,7 +295,6 @@
2023/11/05 | 7528 | support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__jain_1999.txt.snap
2023/11/05 | 751518 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
2023/11/05 | 750 | support/texlab/crates/diagnostics/src/util.rs
-2023/11/05 | 7508 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2023/11/05 | 746 | support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@block_comments.txt.snap
2023/11/05 | 745 | support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_874.txt.snap
2023/11/05 | 742 | support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_simple.txt.snap
@@ -1552,7 +1639,6 @@
2023/11/01 | 9887 | macros/latex/base/format.ins
2023/11/01 | 96 | macros/latex-dev/base/doc-code.tex
2023/11/01 | 96 | macros/latex/base/doc-code.tex
-2023/11/01 | 9636068 | fonts/newtx.zip
2023/11/01 | 96044 | macros/latex/contrib/l3experimental/l3galley.dtx
2023/11/01 | 9559 | macros/latex/required/tools/shellesc.dtx
2023/11/01 | 9559 | macros/latex-dev/required/tools/shellesc.dtx
@@ -1606,7 +1692,6 @@
2023/11/01 | 85099 | macros/latex-dev/required/amsmath/amsmath-2018-12-01.sty
2023/11/01 | 8481 | macros/latex/contrib/l3kernel/l3news11.tex
2023/11/01 | 84779 | macros/latex/contrib/l3kernel/l3fp-basics.dtx
-2023/11/01 | 84691 | macros/latex/contrib/notebeamer/doc/images/HDU.pdf
2023/11/01 | 8425 | macros/latex/required/amsmath/changes.txt
2023/11/01 | 8425 | macros/latex-dev/required/amsmath/changes.txt
2023/11/01 | 84215 | macros/latex-dev/base/ltfssini.dtx
@@ -1615,7 +1700,6 @@
2023/11/01 | 82917 | macros/latex-dev/base/ltfssbas.dtx
2023/11/01 | 82917 | macros/latex/base/ltfssbas.dtx
2023/11/01 | 82683 | macros/latex/contrib/l3kernel/l3prefixes.pdf
-2023/11/01 | 823 | macros/latex/contrib/notebeamer/README.md
2023/11/01 | 823832 | install/macros/latex/contrib/l3build.tds.zip
2023/11/01 | 82320 | macros/latex/contrib/l3kernel/l3msg.dtx
2023/11/01 | 821655 | macros/latex-dev/base/ltshipout-code.pdf
@@ -1938,7 +2022,6 @@
2023/11/01 | 47316 | macros/latex/base/ltspace.dtx
2023/11/01 | 47242 | macros/latex/contrib/l3kernel/l3fp-aux.dtx
2023/11/01 | 4716 | macros/latex/contrib/l3kernel/l3news05.tex
-2023/11/01 | 46326 | fonts/newtx/README
2023/11/01 | 4574 | macros/latex/contrib/l3kernel/l3legacy.dtx
2023/11/01 | 456933 | macros/latex-dev/base/ltnews37.pdf
2023/11/01 | 456933 | macros/latex/base/ltnews37.pdf
@@ -2035,7 +2118,6 @@
2023/11/01 | 389721 | macros/latex-dev/required/latex-lab/latex-lab-new-or-1.pdf
2023/11/01 | 389003 | macros/latex/required/latex-lab/documentmetadata-support-doc.pdf
2023/11/01 | 389003 | macros/latex-dev/required/latex-lab/documentmetadata-support-doc.pdf
-2023/11/01 | 38878 | macros/latex/contrib/notebeamer/doc/images/Inuyasa.jpg
2023/11/01 | 387794 | macros/latex/required/tools/ftnright.pdf
2023/11/01 | 387794 | macros/latex-dev/required/tools/ftnright.pdf
2023/11/01 | 38730 | macros/latex-dev/base/latex209.dtx
@@ -2647,7 +2729,6 @@
2023/11/01 | 12136 | macros/latex/contrib/l3kernel/l3tl-build.dtx
2023/11/01 | 12133 | macros/latex/required/tools/longtable-2020-01-07.sty
2023/11/01 | 12133 | macros/latex-dev/required/tools/longtable-2020-01-07.sty
-2023/11/01 | 12057 | macros/latex/contrib/notebeamer/doc/images/titlepage.pdf
2023/11/01 | 12005 | macros/latex/required/amsmath/technote.tex
2023/11/01 | 12005 | macros/latex-dev/required/amsmath/technote.tex
2023/11/01 | 1189 | macros/latex-dev/required/graphics/graphics.ins
@@ -2738,97 +2819,3 @@
2023/11/01 | 10199 | macros/latex-dev/required/amsmath/amsopn.dtx
2023/11/01 | 10138 | macros/latex/contrib/l3experimental/l3draw-transforms.dtx
2023/11/01 | 10018 | macros/latex/contrib/l3experimental/l3draw-scopes.dtx
-2023/10/31 | 992 | macros/xetex/latex/quran-id/doc/quran-id-test.tex
-2023/10/31 | 96368 | systems/texlive/tlnet/archive/pgfornament-han.r68704.tar.xz
-2023/10/31 | 94820 | fonts/kpfonts-otf/fonts/KpSans-BoldItalic.otf
-2023/10/31 | 94764 | fonts/kpfonts-otf/fonts/KpSans-Italic.otf
-2023/10/31 | 92 | fonts/kpfonts-otf/tex/KpMath-Light.fontspec
-2023/10/31 | 928 | macros/latex/contrib/hyperref/doc/hyperref-doc2.html
-2023/10/31 | 91 | fonts/kpfonts-otf/tex/KpMath-Sans.fontspec
-2023/10/31 | 90 | fonts/kpfonts-otf/tex/KpMath-Regular.fontspec
-2023/10/31 | 8846 | macros/xetex/latex/quran-id/doc/quran.png
-2023/10/31 | 882 | macros/latex/contrib/hyperref/doc/hyperref-doc5.html
-2023/10/31 | 88144 | systems/texlive/tlnet/archive/pstricks.r68705.tar.xz
-2023/10/31 | 872111 | macros/latex/contrib/hyperref/hyperref.dtx
-2023/10/31 | 86976 | fonts/kpfonts-otf/fonts/KpSans-Bold.otf
-2023/10/31 | 85760 | fonts/kpfonts-otf/fonts/KpSans-Regular.otf
-2023/10/31 | 854 | macros/latex/contrib/hyperref/doc/hyperref-doc7.html
-2023/10/31 | 8195 | macros/xetex/latex/quran-id/tex/quran-id.sty
-2023/10/31 | 795 | macros/latex/contrib/hyperref/doc/hyperref-doc9.html
-2023/10/31 | 795 | macros/latex/contrib/hyperref/doc/hyperref-doc8.html
-2023/10/31 | 795 | macros/latex/contrib/hyperref/doc/hyperref-doc3.html
-2023/10/31 | 793 | macros/latex/contrib/hyperref/doc/hyperref-doc6.html
-2023/10/31 | 78812 | macros/xetex/latex/quran-id/doc/quran-id-doc.pdf
-2023/10/31 | 765 | macros/xetex/latex/quran-id/README
-2023/10/31 | 7536 | macros/latex/contrib/hyperref/hyperref-patches.dtx
-2023/10/31 | 7495528 | systems/texlive/tlnet/archive/pstricks.doc.r68705.tar.xz
-2023/10/31 | 73552 | systems/texlive/tlnet/archive/cweb.doc.r68702.tar.xz
-2023/10/31 | 6691 | macros/xetex/latex/quran-id/doc/quran-id-doc.tex
-2023/10/31 | 5766 | macros/latex/contrib/hyperref/xr-hyper.sty
-2023/10/31 | 525392 | macros/latex/contrib/hyperref/doc/hyperref-doc.html
-2023/10/31 | 5079 | macros/latex/contrib/coloredbelts/tex/coloredbelts.sty
-2023/10/31 | 50695 | macros/latex/contrib/hyperref/hluatex.dtx
-2023/10/31 | 5024 | macros/latex/contrib/hyperref/hyperref.ins
-2023/10/31 | 49568 | fonts/kpfonts-otf/fonts/KpMono-Italic.otf
-2023/10/31 | 48260 | fonts/kpfonts-otf/fonts/KpMono-BoldItalic.otf
-2023/10/31 | 480 | fonts/kpfonts-otf/tex/KpLight.fontspec
-2023/10/31 | 469 | fonts/kpfonts-otf/tex/KpRoman.fontspec
-2023/10/31 | 451456 | fonts/kpfonts-otf/fonts/KpMath-Light.otf
-2023/10/31 | 4480772 | install/macros/latex/contrib/hyperref.tds.zip
-2023/10/31 | 4479 | macros/latex/contrib/hyperref/README.md
-2023/10/31 | 440050 | macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf
-2023/10/31 | 4382954 | fonts/kpfonts-otf.zip
-2023/10/31 | 4300186 | macros/latex/contrib/hyperref.zip
-2023/10/31 | 425332 | fonts/kpfonts-otf/fonts/KpMath-Regular.otf
-2023/10/31 | 42248 | fonts/kpfonts-otf/fonts/KpMono-Regular.otf
-2023/10/31 | 41096 | fonts/kpfonts-otf/fonts/KpMono-Bold.otf
-2023/10/31 | 384001 | macros/latex/contrib/hyperref/doc/slides.pdf
-2023/10/31 | 37768 | macros/xetex/latex/quran-id/doc/quran-id-test.pdf
-2023/10/31 | 35903 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.ltx
-2023/10/31 | 33476 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.ltx
-2023/10/31 | 317671 | macros/latex/contrib/hyperref/doc/hyperref-doc.pdf
-2023/10/31 | 3161 | macros/latex/contrib/hyperref/bmhydoc.sty
-2023/10/31 | 3035780 | macros/xetex/latex/quran-id/tex/qurantext-idii.translation.def
-2023/10/31 | 292840 | fonts/kpfonts-otf/fonts/KpMath-Sans.otf
-2023/10/31 | 28789 | macros/latex/contrib/hyperref/nameref.dtx
-2023/10/31 | 28694 | macros/latex/contrib/hyperref/backref.dtx
-2023/10/31 | 284 | macros/latex/contrib/hyperref/ntheorem-hyper.sty
-2023/10/31 | 280 | macros/latex/contrib/hyperref/minitoc-hyper.sty
-2023/10/31 | 26680 | systems/texlive/tlnet/archive/cweb.r68702.tar.xz
-2023/10/31 | 257264 | fonts/kpfonts-otf/fonts/KpMath-Semibold.otf
-2023/10/31 | 247116 | macros/latex/contrib/hyperref/paperslides99.zip
-2023/10/31 | 2347765 | macros/latex/contrib/hyperref/doc/hyperref.pdf
-2023/10/31 | 233864 | fonts/kpfonts-otf/fonts/KpMath-Bold.otf
-2023/10/31 | 231 | fonts/kpfonts-otf/tex/KpSans.fontspec
-2023/10/31 | 2263593 | macros/luatex/latex/autotype.zip
-2023/10/31 | 206681 | macros/latex/contrib/hyperref/doc/backref.pdf
-2023/10/31 | 20068 | fonts/kpfonts-otf/tex/kpfonts-otf.sty
-2023/10/31 | 196420 | fonts/kpfonts-otf/fonts/KpMath-SansBold.otf
-2023/10/31 | 19445 | macros/latex/contrib/hyperref/hyperref-linktarget.dtx
-2023/10/31 | 1929 | macros/latex/contrib/hyperref/manifest.txt
-2023/10/31 | 1865864 | systems/texlive/tlnet/archive/circuitikz.doc.r68706.tar.xz
-2023/10/31 | 185 | fonts/kpfonts-otf/tex/KpMono.fontspec
-2023/10/31 | 184798 | macros/latex/contrib/hyperref/doc/nameref.pdf
-2023/10/31 | 1834074 | fonts/kpfonts-otf/doc/unimath-kpfonts.pdf
-2023/10/31 | 180195 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.pdf
-2023/10/31 | 176956 | systems/texlive/tlnet/archive/circuitikz.r68706.tar.xz
-2023/10/31 | 176761 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.pdf
-2023/10/31 | 171497 | macros/latex/contrib/hyperref/doc/hyperref-doc.tex
-2023/10/31 | 16806 | fonts/kpfonts-otf/doc/unimath-kpfonts.ltx
-2023/10/31 | 15673 | macros/latex/contrib/hyperref/doc/hyperref-doc.css
-2023/10/31 | 1441530 | macros/xetex/latex/quran-id/tex/qurantext-idi.translation.def
-2023/10/31 | 1350376 | systems/texlive/tlnet/archive/pgfornament-han.doc.r68704.tar.xz
-2023/10/31 | 132446 | macros/latex/contrib/hyperref/doc/paper.pdf
-2023/10/31 | 1319102 | macros/xetex/latex/quran-id.zip
-2023/10/31 | 126664 | fonts/kpfonts-otf/fonts/KpRoman-BoldItalic.otf
-2023/10/31 | 125755 | macros/latex/contrib/hyperref/ChangeLog.txt
-2023/10/31 | 124228 | fonts/kpfonts-otf/fonts/KpRoman-SemiboldItalic.otf
-2023/10/31 | 117168 | fonts/kpfonts-otf/fonts/KpRoman-Italic.otf
-2023/10/31 | 116696 | fonts/kpfonts-otf/fonts/KpRoman-LightItalic.otf
-2023/10/31 | 116612 | fonts/kpfonts-otf/fonts/KpRoman-Bold.otf
-2023/10/31 | 114500 | fonts/kpfonts-otf/fonts/KpRoman-Regular.otf
-2023/10/31 | 114088 | fonts/kpfonts-otf/fonts/KpRoman-Light.otf
-2023/10/31 | 113644 | fonts/kpfonts-otf/fonts/KpRoman-Semibold.otf
-2023/10/31 | 1030 | macros/latex/contrib/hyperref/doc/hyperref-doc4.html
-2023/10/31 | 10297 | fonts/kpfonts-otf/README.md
-2023/10/31 | 1018882 | macros/latex/contrib/coloredbelts.zip
diff --git a/biblio/ctan-bibdata/ctan.bib b/biblio/ctan-bibdata/ctan.bib
index 7bbdb042d4..561476cc88 100644
--- a/biblio/ctan-bibdata/ctan.bib
+++ b/biblio/ctan-bibdata/ctan.bib
@@ -1,7 +1,7 @@
%% bib file of all CTAN packages
%% (C) Herbert Voß
%%
-%% created at 06-11-2023, 02:00:38
+%% created at 07-11-2023, 02:00:36
%%
%% This file is provided under the terms of the LPPL v1.3 or
@@ -1189,6 +1189,25 @@
url = {https://ctan.org/pkg/aesupp},
}
+@manual{ctan-affilauthor,
+ title = {The \texttt{affilauthor} package},
+ subtitle = {Tag author and affiliation information in a key-value style},
+ author = {Selvam P.},
+ date = {2023-11-06},
+ version = {1.0.0},
+ license = {lppl1.3c},
+ mirror = {https://mirror.ctan.org/macros/latex/contrib/affilauthor},
+ url = {https://ctan.org/pkg/affilauthor},
+ annotation = {This package provides key-value style author and affiliation
+ information tagging in a structured format.
+ Each field has a specific name similar to the bib format.
+ We can customize the styles as per preferences for
+ class layout.
+ Instead of giving all the information (author and affiliation)
+ in a single tag, we can split the information in a format of
+ key-value style.},
+}
+
@manual{ctan-afmtopl-clark,
title = {The \texttt{AFMtoPL (Clark)} package},
subtitle = {Convert AFM files to PLs for use with dvitops},
@@ -24700,8 +24719,8 @@
title = {The \texttt{fancyvrb} package},
subtitle = {Sophisticated verbatim text},
author = {Timothy Van Zandt and Herbert Voß and Denis Girou and Sebastian Rahtz and Niall Mansfield},
- date = {2023-01-19},
- version = {4.5a},
+ date = {2023-11-06},
+ version = {4.5b},
license = {lppl1.3},
mirror = {https://mirror.ctan.org/macros/latex/contrib/fancyvrb},
url = {https://ctan.org/pkg/fancyvrb},
@@ -32185,8 +32204,8 @@
title = {The \texttt{homework} package},
subtitle = {A \LaTeX{} class for writing your homework},
author = {Jinwen XU},
- date = {2023-10-15},
- version = {},
+ date = {2023-11-06},
+ version = {2023-10-15a},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/homework},
url = {https://ctan.org/pkg/homework},
@@ -34149,19 +34168,20 @@
@manual{ctan-innerscript,
title = {The \texttt{innerscript} package},
- subtitle = {Modifies automatic mathematics spacing},
+ subtitle = {Small modifications to math formatting},
author = {Conrad Kosowsky},
- date = {2021-02-11},
- version = {1.1},
+ date = {2023-11-06},
+ version = {1.2},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/luatex/latex/innerscript},
url = {https://ctan.org/pkg/innerscript},
- annotation = {This package modifies two aspects of \TeX{}'s automatic interatom
- mathematics spacing. It uses LuaTeX's primitives
- to make superscripts and subscripts more closely resemble
- and math and to treat
- subformulas as ,
- effectively eliminating this class.},
+ annotation = {This package optionally modifies four aspects of \TeX{}’s automatic
+ math formatting to improve typesetting: (1) it adds extra space around
+ relation and operation symbols in superscripts and subscripts; (2) it removes
+ extra space around - delimiter pairs;
+ (3) it adds extra space after right delimiters in certain situations;
+ and (4) it forces and delimiters to completely
+ cover their contents. Using Lua\LaTeX{} is required.},
}
@manual{ctan-inputenc,
@@ -52184,8 +52204,8 @@
title = {The \texttt{pdfmanagement-testphase} package},
subtitle = {\LaTeX{} PDF management testphase bundle},
author = {{The \LaTeX{} Project Team}},
- date = {2023-10-10},
- version = {0.96a},
+ date = {2023-11-06},
+ version = {0.96b},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/pdfmanagement-testphase},
url = {https://ctan.org/pkg/pdfmanagement-testphase},
@@ -54468,6 +54488,23 @@
least.},
}
+@manual{ctan-polyhedra,
+ title = {The \texttt{polyhedra} package},
+ subtitle = {A TikZ package for drawing polyhedra},
+ author = {Zafeirakis Zafeirakopoulos},
+ date = {2023-11-06},
+ version = {0.3},
+ license = {lppl1.3c},
+ mirror = {https://mirror.ctan.org/graphics/pgf/contrib/polyhedra},
+ url = {https://ctan.org/pkg/polyhedra},
+ annotation = {This package provides macros for creating polyhedral objects
+ in 2D and 3D. It requires
+ and
+ .
+ The macros provided can be used for drawing vertices, edges,
+ rays, polygons and cones.},
+}
+
@manual{ctan-polynom,
title = {The \texttt{polynom} package},
subtitle = {Macros for manipulating polynomials},
@@ -57243,8 +57280,8 @@
title = {The \texttt{pstricks-base} package},
subtitle = {PostScript macros for \TeX{}},
author = {Herbert Voß and Denis Girou and Timothy Van Zandt},
- date = {2023-10-30},
- version = {3.19a},
+ date = {2023-11-06},
+ version = {3.19b},
license = {lppl1.3},
mirror = {https://mirror.ctan.org/graphics/pstricks/base},
url = {https://ctan.org/pkg/pstricks-base},
@@ -57872,7 +57909,7 @@
title = {The \texttt{Q-and-A} package},
subtitle = {Typesetting Q\&A-style conversation made easier},
author = {Jinwen XU},
- date = {2023-11-05},
+ date = {2023-11-06},
version = {},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/q-and-a},
@@ -63216,8 +63253,8 @@
title = {The \texttt{siunitx} package},
subtitle = {A comprehensive (SI) units package},
author = {Joseph Wright},
- date = {2023-10-07},
- version = {3.3.7},
+ date = {2023-11-06},
+ version = {3.3.8},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/siunitx},
url = {https://ctan.org/pkg/siunitx},
@@ -71054,7 +71091,7 @@
title = {The \texttt{tkz-euclide} package},
subtitle = {Tools for drawing Euclidean geometry},
author = {Alain Matthes},
- date = {2023-10-26},
+ date = {2023-11-06},
version = {5.04c},
license = {lppl1.3},
mirror = {https://mirror.ctan.org/macros/latex/contrib/tkz/tkz-euclide},
diff --git a/biblio/ctan-bibdata/ctan.pdf b/biblio/ctan-bibdata/ctan.pdf
index d13fec5538..12990d6e2c 100644
--- a/biblio/ctan-bibdata/ctan.pdf
+++ b/biblio/ctan-bibdata/ctan.pdf
Binary files differ
diff --git a/fonts/newtx/README b/fonts/newtx/README
index ca0aae79c4..af0a4693a6 100644
--- a/fonts/newtx/README
+++ b/fonts/newtx/README
@@ -1,10 +1,15 @@
This package, initially based on txfonts, provides many fixes and enhancements to the txfonts package, splitting it into two separate packages---newtxtext and newtxmath, which may be run independently of one another. It provides scaling, improved metrics, and other options. In particular, newtxmath offers a libertine option which substitutes Linux Libertine (provided with TeXLive and MikTeX) italic and Greek letters for the default Times letters, providing a good match for the Libertine text font, which is heavier than Computer Modern but lighter than Times, and in my experience, looks very sharp and clear on the screen.
-Current version: 1.731 2023-10-31
+Current version: 1.732 2023-11-06
This material is subject to the LaTeX Project Public License. See http://www.ctan.org/license/lppl1.3
for the details of that license.
+Changes in version 1.732
+1. Introduced a sequence of curly braces to replace standard braces if you specify
+the option curlybraces to newtxmath.
+2. Introduced three new math symbols: \laplace, \laplac and \dAlembertian. See the package documentation for details.
+
Changes in version 1.731
Removed zplsups-Regular-ts1.tfm from the newtx package as it conflicted with a file of the same name in newpx.
diff --git a/fonts/newtx/afm/txbex-bar.afm b/fonts/newtx/afm/txbex-bar.afm
index 9342e0cdbc..2ba48b45d7 100644
--- a/fonts/newtx/afm/txbex-bar.afm
+++ b/fonts/newtx/afm/txbex-bar.afm
@@ -1,14 +1,14 @@
StartFontMetrics 2.0
-Comment Generated by FontForge 20170730
-Comment Creation Date: Sun Jun 16 15:43:29 2019
+Comment Generated by FontForge 20230101
+Comment Creation Date: Mon Nov 6 15:47:13 2023
FontName txbex-bar
ItalicAngle 0
IsFixedPitch false
UnderlinePosition -100
UnderlineThickness 50
EncodingScheme FontSpecific
-FontBBox -11 -2364 2900 1444
-StartCharMetrics 93
+FontBBox -11 -3544 2900 1444
+StartCharMetrics 105
C 0 ; WX 343 ; N parenleftbigx ; B 50 -1069 313 56 ;
C 1 ; WX 343 ; N parenrightbigx ; B 30 -1069 293 56 ;
C 2 ; WX 359 ; N bracketleftbigx ; B 88 -1064 325 56 ;
@@ -94,6 +94,18 @@ C 84 ; WX 1450 ; N oarcwider ; B 3 574 1496 832 ;
C 85 ; WX 1900 ; N oarcwiderr ; B 5 560 1949 825 ;
C 86 ; WX 2350 ; N oarcwidest ; B 8 541 2390 815 ;
C 87 ; WX 2800 ; N oarcwideult ; B 17 538 2835 822 ;
+C 88 ; WX 545 ; N braceleft.alt ; B 58 -198 487 712 ;
+C 89 ; WX 545 ; N braceright.alt ; B 58 -198 487 712 ;
+C 90 ; WX 655 ; N braceleftbig.alt ; B 118 -1144 567 56 ;
+C 91 ; WX 655 ; N bracerightbig.alt ; B 138 -1144 587 56 ;
+C 92 ; WX 649 ; N braceleftBig.alt ; B 118 -1744 561 56 ;
+C 93 ; WX 649 ; N bracerightBig.alt ; B 138 -1744 581 56 ;
+C 94 ; WX 729 ; N braceleftbigg.alt ; B 118 -2368 641 56 ;
+C 95 ; WX 729 ; N bracerightbigg.alt ; B 138 -2368 661 56 ;
+C 96 ; WX 719 ; N braceleftBigg.alt ; B 118 -2944 631 56 ;
+C 97 ; WX 719 ; N bracerightBigg.alt ; B 138 -2944 651 56 ;
+C 98 ; WX 719 ; N braceleft.size5 ; B 118 -3544 631 56 ;
+C 99 ; WX 719 ; N braceright.size5 ; B 138 -3544 651 56 ;
C 102 ; WX 369 ; N bracketleftBig ; B 88 -1398 335 56 ;
C 103 ; WX 369 ; N bracketrightBig ; B 34 -1398 281 56 ;
C 104 ; WX 411 ; N floorleftBig ; B 88 -1398 377 56 ;
diff --git a/fonts/newtx/afm/txbsys.afm b/fonts/newtx/afm/txbsys.afm
index 0e376952f4..dbbec44514 100644
--- a/fonts/newtx/afm/txbsys.afm
+++ b/fonts/newtx/afm/txbsys.afm
@@ -1,6 +1,6 @@
StartFontMetrics 2.0
-Comment Generated by FontForge 20220308
-Comment Creation Date: Fri May 20 10:13:09 2022
+Comment Generated by FontForge 20230101
+Comment Creation Date: Mon Nov 6 15:45:42 2023
FontName txbsys
FullName txbsys
FamilyName txbsys
@@ -14,7 +14,7 @@ Version 3.0
EncodingScheme FontSpecific
FontBBox -20 -929 1460 904
CapHeight 692
-StartCharMetrics 205
+StartCharMetrics 212
C 0 ; WX 676 ; N minus ; B 62 209 614 305 ;
C 1 ; WX 250 ; N periodcentered ; B 41 173 210 342 ;
C 2 ; WX 676 ; N multiply ; B 62 -17 614 531 ;
@@ -220,5 +220,12 @@ C 201 ; WX 631 ; N dblbracketright ; B 54 -193 493 717 ;
C 202 ; WX 410 ; N hermitconj ; B -20 0 390 536 ;
C 203 ; WX 752 ; N uni2AEB ; B 62 0 690 550 ;
C 204 ; WX 752 ; N nPerp ; B 62 -99 690 611 ;
+C 205 ; WX 706 ; N uni22A2.alt ; B 150 0 707 678 ;
+C 206 ; WX 707 ; N uni22A3.alt ; B 0 0 557 678 ;
+C 215 ; WX 605 ; N braceleft.alt ; B 88 -198 517 712 ;
+C 216 ; WX 605 ; N braceright.alt ; B 88 -198 517 712 ;
+C 217 ; WX 719 ; N uni2206 ; B 30 0 689 677 ;
+C 218 ; WX 856 ; N uni29E0 ; B 90 0 766 676 ;
+C 219 ; WX 856 ; N uni29E0.alt ; B 90 0 766 676 ;
EndCharMetrics
EndFontMetrics
diff --git a/fonts/newtx/afm/txex-bar.afm b/fonts/newtx/afm/txex-bar.afm
index 76f2c70ec2..7f75648b90 100644
--- a/fonts/newtx/afm/txex-bar.afm
+++ b/fonts/newtx/afm/txex-bar.afm
@@ -1,30 +1,30 @@
StartFontMetrics 2.0
-Comment Generated by FontForge 20161003
-Comment Creation Date: Fri Feb 10 16:25:07 2017
+Comment Generated by FontForge 20230101
+Comment Creation Date: Mon Nov 6 15:46:29 2023
FontName txex-bar
ItalicAngle 0
IsFixedPitch false
UnderlinePosition -100
UnderlineThickness 50
EncodingScheme FontSpecific
-FontBBox -47 -2364 2900 1444
-StartCharMetrics 93
-C 0 ; WX 343 ; N parenleftbigx ; B 50 -1064 313 56 ;
-C 1 ; WX 343 ; N parenrightbigx ; B 30 -1064 293 56 ;
+FontBBox -47 -3544 2900 1444
+StartCharMetrics 105
+C 0 ; WX 343 ; N parenleftbigx ; B 50 -1069 313 56 ;
+C 1 ; WX 343 ; N parenrightbigx ; B 30 -1069 293 56 ;
C 2 ; WX 333 ; N bracketleftbigx ; B 88 -1064 299 56 ;
C 3 ; WX 333 ; N bracketrightbigx ; B 34 -1064 245 56 ;
C 4 ; WX 371 ; N floorleftbigx ; B 88 -1064 337 56 ;
C 5 ; WX 371 ; N floorrightbigx ; B 34 -1064 283 56 ;
C 6 ; WX 371 ; N ceilingleftbigx ; B 88 -1064 337 56 ;
C 7 ; WX 371 ; N ceilingrightbigx ; B 34 -1064 283 56 ;
-C 8 ; WX 432 ; N braceleftbigx ; B 58 -1064 374 56 ;
-C 9 ; WX 432 ; N bracerightbigx ; B 58 -1064 374 56 ;
+C 8 ; WX 432 ; N braceleftbigx ; B 58 -1069 374 56 ;
+C 9 ; WX 432 ; N bracerightbigx ; B 58 -1069 374 56 ;
C 10 ; WX 402 ; N angleleftbigx ; B 50 -1064 352 56 ;
C 11 ; WX 402 ; N anglerightbigx ; B 50 -1064 352 56 ;
-C 12 ; WX 232 ; N barex ; B 86 0 146 484 ;
-C 13 ; WX 436 ; N bardblex ; B 86 0 350 484 ;
-C 14 ; WX 232 ; N barexbigx ; B 86 -1064 146 56 ;
-C 15 ; WX 436 ; N bardblexbigx ; B 86 -1064 350 56 ;
+C 12 ; WX 232 ; N barex ; B 86 -5 146 489 ;
+C 13 ; WX 436 ; N bardblex ; B 86 -5 350 489 ;
+C 14 ; WX 232 ; N barexbigx ; B 86 -1065 146 56 ;
+C 15 ; WX 436 ; N bardblexbigx ; B 86 -1065 350 56 ;
C 16 ; WX 300 ; N grouphtipdownleft ; B -7 -100 310 90 ;
C 17 ; WX 300 ; N grouphtipdownright ; B -10 -100 307 90 ;
C 18 ; WX 300 ; N grouphtipupleft ; B -7 0 310 190 ;
@@ -48,32 +48,32 @@ C 38 ; WX 371 ; N ceilingleftBigg ; B 88 -2364 337 56 ;
C 39 ; WX 371 ; N ceilingrightBigg ; B 34 -2364 283 56 ;
C 40 ; WX 414 ; N braceleftBig ; B 68 -1397 346 56 ;
C 41 ; WX 414 ; N bracerightBig ; B 68 -1397 345 56 ;
-C 42 ; WX 450 ; N parenlefttpA ; B 50 0 420 1424 ;
-C 43 ; WX 450 ; N parenrighttpA ; B 30 0 400 1424 ;
-C 44 ; WX 450 ; N parenleftbtA ; B 50 0 420 1424 ;
-C 45 ; WX 450 ; N parenrightbtA ; B 30 0 400 1424 ;
-C 46 ; WX 450 ; N parenleftexA ; B 50 0 144 484 ;
-C 47 ; WX 450 ; N parenrightexA ; B 306 0 400 484 ;
-C 48 ; WX 400 ; N parenlefttp ; B 50 -1153 370 56 ;
-C 49 ; WX 400 ; N parenrighttp ; B 30 -1153 350 56 ;
-C 50 ; WX 363 ; N bracketlefttp ; B 88 0 329 484 ;
-C 51 ; WX 363 ; N bracketrighttp ; B 34 0 275 484 ;
-C 52 ; WX 363 ; N bracketleftbt ; B 88 0 329 484 ;
-C 53 ; WX 363 ; N bracketrightbt ; B 34 0 275 484 ;
-C 54 ; WX 363 ; N bracketleftex ; B 88 0 165 484 ;
-C 55 ; WX 363 ; N bracketrightex ; B 198 0 275 484 ;
-C 56 ; WX 552 ; N bracelefttp ; B 231 0 504 752 ;
-C 57 ; WX 552 ; N bracerighttp ; B 48 0 321 752 ;
-C 58 ; WX 552 ; N braceleftbt ; B 231 0 504 752 ;
-C 59 ; WX 552 ; N bracerightbt ; B 48 0 321 752 ;
-C 60 ; WX 552 ; N braceleftmid ; B 58 -438 321 484 ;
-C 61 ; WX 552 ; N bracerightmid ; B 231 -438 494 484 ;
-C 62 ; WX 552 ; N braceex ; B 231 0 321 242 ;
-C 63 ; WX 533 ; N arrowvertex ; B 240 0 292 484 ;
-C 64 ; WX 400 ; N parenleftbt ; B 50 -829 370 380 ;
-C 65 ; WX 400 ; N parenrightbt ; B 30 -829 350 380 ;
-C 66 ; WX 400 ; N parenleftex ; B 50 0 144 484 ;
-C 67 ; WX 400 ; N parenrightex ; B 256 0 350 484 ;
+C 42 ; WX 450 ; N parenlefttpA ; B 50 -20 420 1424 ;
+C 43 ; WX 450 ; N parenrighttpA ; B 30 -20 400 1424 ;
+C 44 ; WX 450 ; N parenleftbtA ; B 50 -6 420 1438 ;
+C 45 ; WX 450 ; N parenrightbtA ; B 30 0 400 1444 ;
+C 46 ; WX 450 ; N parenleftexA ; B 50 -21 144 500 ;
+C 47 ; WX 450 ; N parenrightexA ; B 306 -21 400 500 ;
+C 48 ; WX 400 ; N parenlefttp ; B 50 -1173 370 56 ;
+C 49 ; WX 400 ; N parenrighttp ; B 30 -1173 350 56 ;
+C 50 ; WX 363 ; N bracketlefttp ; B 88 -22 329 484 ;
+C 51 ; WX 363 ; N bracketrighttp ; B 34 -22 275 484 ;
+C 52 ; WX 363 ; N bracketleftbt ; B 88 0 329 840 ;
+C 53 ; WX 363 ; N bracketrightbt ; B 34 0 275 839 ;
+C 54 ; WX 363 ; N bracketleftex ; B 88 -12 165 495 ;
+C 55 ; WX 363 ; N bracketrightex ; B 198 -11 275 495 ;
+C 56 ; WX 552 ; N bracelefttp ; B 231 -20 504 752 ;
+C 57 ; WX 552 ; N bracerighttp ; B 48 -20 321 752 ;
+C 58 ; WX 552 ; N braceleftbt ; B 231 0 504 772 ;
+C 59 ; WX 552 ; N bracerightbt ; B 48 0 321 772 ;
+C 60 ; WX 552 ; N braceleftmid ; B 58 -462 321 507 ;
+C 61 ; WX 552 ; N bracerightmid ; B 231 -461 494 507 ;
+C 62 ; WX 552 ; N braceex ; B 231 -20 321 256 ;
+C 63 ; WX 533 ; N arrowvertex ; B 240 -20 292 504 ;
+C 64 ; WX 400 ; N parenleftbt ; B 50 -829 370 400 ;
+C 65 ; WX 400 ; N parenrightbt ; B 30 -829 350 400 ;
+C 66 ; WX 400 ; N parenleftex ; B 50 -21 144 500 ;
+C 67 ; WX 400 ; N parenrightex ; B 256 -21 350 500 ;
C 68 ; WX 666 ; N hatwide ; B 53 596 613 752 ;
C 69 ; WX 1900 ; N hat4 ; B 0 589 1900 752 ;
C 70 ; WX 2400 ; N hat5 ; B 0 586 2400 752 ;
@@ -94,6 +94,18 @@ C 84 ; WX 1450 ; N oarcwider ; B 3 574 1496 832 ;
C 85 ; WX 1900 ; N oarcwiderr ; B 4 560 1949 825 ;
C 86 ; WX 2350 ; N oarcwidest ; B 8 561 2390 815 ;
C 87 ; WX 2800 ; N oarcwideult ; B 17 548 2835 822 ;
+C 88 ; WX 485 ; N braceleft.alt ; B 48 -198 437 712 ;
+C 89 ; WX 485 ; N braceright.alt ; B 48 -198 437 712 ;
+C 90 ; WX 525 ; N braceleftbig.alt ; B 58 -1144 467 56 ;
+C 91 ; WX 525 ; N bracerightbig.alt ; B 58 -1144 467 56 ;
+C 92 ; WX 519 ; N braceleftBig.alt ; B 58 -1744 461 56 ;
+C 93 ; WX 519 ; N bracerightBig.alt ; B 58 -1744 461 56 ;
+C 94 ; WX 599 ; N braceleftbigg.alt ; B 58 -2368 541 56 ;
+C 95 ; WX 599 ; N bracerightbigg.alt ; B 58 -2368 541 56 ;
+C 96 ; WX 589 ; N braceleftBigg.alt ; B 58 -2944 531 56 ;
+C 97 ; WX 589 ; N bracerightBigg.alt ; B 58 -2944 531 56 ;
+C 98 ; WX 589 ; N braceleft.size5 ; B 58 -3544 531 56 ;
+C 99 ; WX 589 ; N braceright.size5 ; B 58 -3544 531 56 ;
C 102 ; WX 343 ; N bracketleftBig ; B 88 -1398 309 56 ;
C 103 ; WX 343 ; N bracketrightBig ; B 34 -1398 255 56 ;
C 104 ; WX 371 ; N floorleftBig ; B 88 -1398 337 56 ;
@@ -101,6 +113,6 @@ C 105 ; WX 371 ; N floorrightBig ; B 34 -1398 283 56 ;
C 106 ; WX 371 ; N ceilingleftBig ; B 88 -1398 337 56 ;
C 107 ; WX 371 ; N ceilingrightBig ; B 34 -1398 283 56 ;
C 118 ; WX 939 ; N radicaltp ; B 645 -244 999 56 ;
-C 119 ; WX 629 ; N arrowvertexdbl ; B 187 0 442 484 ;
+C 119 ; WX 629 ; N arrowvertexdbl ; B 187 -20 442 504 ;
EndCharMetrics
EndFontMetrics
diff --git a/fonts/newtx/afm/txsys.afm b/fonts/newtx/afm/txsys.afm
index 11cc2b58d7..c05efcda2e 100644
--- a/fonts/newtx/afm/txsys.afm
+++ b/fonts/newtx/afm/txsys.afm
@@ -1,6 +1,6 @@
StartFontMetrics 2.0
-Comment Generated by FontForge 20190801
-Comment Creation Date: Thu Sep 12 14:29:00 2019
+Comment Generated by FontForge 20230101
+Comment Creation Date: Mon Nov 6 15:45:33 2023
FontName txsys
FullName txsys
FamilyName txsys
@@ -13,7 +13,7 @@ UnderlineThickness 50
Version 3.0
EncodingScheme FontSpecific
FontBBox -47 -944 2835 838
-StartCharMetrics 205
+StartCharMetrics 212
C 0 ; WX 636 ; N minus ; B 62 229 574 285 ;
C 1 ; WX 250 ; N periodcentered ; B 70 202 181 313 ;
C 2 ; WX 636 ; N multiply ; B 56 -5 580 520 ;
@@ -36,8 +36,8 @@ C 18 ; WX 636 ; N reflexsubset ; B 52 -58 584 572 ;
C 19 ; WX 636 ; N reflexsuperset ; B 52 -58 584 572 ;
C 20 ; WX 636 ; N lessequal ; B 62 -58 574 574 ;
C 21 ; WX 636 ; N greaterequal ; B 62 -58 574 574 ;
-C 22 ; WX 636 ; N precedesequal ; B 62 -58 574 590 ;
-C 23 ; WX 636 ; N followsequal ; B 62 -58 574 590 ;
+C 22 ; WX 636 ; N precedesequal ; B 62 -58 574 591 ;
+C 23 ; WX 636 ; N followsequal ; B 62 -58 574 591 ;
C 24 ; WX 636 ; N similar ; B 56 177 581 337 ;
C 25 ; WX 636 ; N approxequal ; B 56 75 581 439 ;
C 26 ; WX 636 ; N propersubset ; B 52 8 584 506 ;
@@ -219,5 +219,12 @@ C 201 ; WX 546 ; N dblbracketright ; B 54 -243 408 757 ;
C 202 ; WX 410 ; N hermitconj ; B -18 0 392 536 ;
C 203 ; WX 712 ; N uni2AEB ; B 62 0 650 550 ;
C 204 ; WX 712 ; N nPerp ; B 62 -74 650 616 ;
+C 205 ; WX 706 ; N uni22A2.alt ; B 150 0 707 678 ;
+C 206 ; WX 707 ; N uni22A3.alt ; B 0 0 557 678 ;
+C 215 ; WX 535 ; N braceleft.alt ; B 73 -198 462 712 ;
+C 216 ; WX 535 ; N braceright.alt ; B 73 -198 462 712 ;
+C 217 ; WX 664 ; N uni2206 ; B 33 0 631 676 ;
+C 218 ; WX 856 ; N uni29E0 ; B 90 0 766 676 ;
+C 219 ; WX 856 ; N uni29E0.alt ; B 90 0 766 676 ;
EndCharMetrics
EndFontMetrics
diff --git a/fonts/newtx/doc/newtxdoc.pdf b/fonts/newtx/doc/newtxdoc.pdf
index a7e7083b8f..e2206ca01a 100644
--- a/fonts/newtx/doc/newtxdoc.pdf
+++ b/fonts/newtx/doc/newtxdoc.pdf
Binary files differ
diff --git a/fonts/newtx/doc/newtxdoc.tex b/fonts/newtx/doc/newtxdoc.tex
index df038a7787..e7c72ca40d 100644
--- a/fonts/newtx/doc/newtxdoc.tex
+++ b/fonts/newtx/doc/newtxdoc.tex
@@ -15,7 +15,7 @@
\usepackage{url}
\usepackage{trace}
\usepackage{fonttable}
-\usepackage[debugshow]{tracefnt}
+%\usepackage[debugshow]{tracefnt}
\usepackage{xcolor}
\usepackage{array,booktabs}
% some ad-hoc symbol fonts
@@ -63,7 +63,6 @@
\title{New TX font package}
\author{Michael Sharpe}
\date{\today} % Activate to display a given date or no date
-
\begin{document}
\makeatletter
%\expandafter\show\csname @textsuperior\endcsname
@@ -89,6 +88,15 @@ This package is meant to be a replacement for Young Ryu's {\tt txfonts}. It is
\item
Superior letters and figures distinct from numerators have been added along with some special features. The text switch \verb|\sustyle| (or \verb|\sufigures|) or the commands \verb|\textsu|, \verb|\textsup|, \verb|\textsups| may be used to invoke ordinary superiors. The command \verb|\textsuperscript| is reserved for a form of superiors that respond to adjustments you may specify in the package options, and which are used for footnote marker typesetting: \verb|supscale| rescales them, \verb|supsraised| specifies an amount to move them vertically, and \verb|supLspaced|, \verb|supRspaced| specify additional kerning to be applied at the left and right. These changes are applied in the order: scaling, raising, kerning. All except \verb|supscale| should be dimensions with units like {\tt em} which will scale properly. Their relative vertical positions stack up like this: X\textinf{12}X\textde{345}X\textnu{678}X\textsu{90}.
There is also a {\tt supscolor} option that will apply a color specified in a form understood by {\tt xcolor}, like {\tt red!70!black}.
+\item
+Version 1.732 introduces some new mathematical glyphs. First, there are new curly braces invoked by the option {\tt curlybraces} with {\tt height+depth} of 940, 1200, 1800, 2400, 3000 and 3600 em units. Second, there are three new math symbols:
+\begin{itemize}
+\item
+\verb|\laplace|, $\laplace$, which is an inverted \verb|\nabla|, having more weight in the bottom segment than \verb|\Delta|, $\Delta$.
+\item
+\verb|\laplac|, $\laplac$. This is the unicode-math name for the official d'Alembertian operator, {\tt U+29E0}. Unlike $\laplace$, it has more weight in the left and top segments than \verb|\laplace|.
+\item \verb|\dAlembertian|, $\dAlembertian$, rotates $\laplac$ by 180${}^\circ$, making for a glyph whose weight distribution is a better match for the Laplacian.
+\end{itemize}
% \item A word of warning---there is a difference between XeLaTeX and LuaLaTeX that is very irritating. When processing some of the commands where there may be a numeric argument, such as, for example, \verb|{\addfontfeature{VerticalPosition=Superior}5}|, the output will be as expected with XeLaTeX but not with LuaLaTeX if you have set the document figures to be anything but the default tabular, lining. This happens even though the {\tt sups} table has entries for all other forms ({\tt oldstyle}, {\tt taboldstyle} and {\tt lining}) of main body figures, and the {\tt sups} lookup is ahead of the {\tt lnum}, {\tt tnum}, {\tt onum} and {\tt pnum} lookups. (Similarly for the {\tt subs}, {\tt numr} and {\tt dnom} tables.) The only solution I can see for the moment is to undo any possible figure features other than tabular lining before adding another feature. I've done this in {\tt newtxtext.sty} for the basic commands, like the font switches \verb|\sustyle| and \verb|\infstyle|, and their related commands \verb|\textsu{}| and \verb|\textinf{}|, all of which are safe to use with both XeLaTeX and LuaLaTeX. (Likewise for \verb|\destyle|, \verb|\nustyle| and \verb|\textde{}|, \verb|\textnum{}|.)
\item Option {\tt scosf}, which specifies oldstyle figure within small caps, has been extended and now works in all LaTeX engines with both the \verb|\scshape| switch and the macro \verb|\textsc{}|.
\end{itemize}
diff --git a/fonts/newtx/tfm/ntxbexx.tfm b/fonts/newtx/tfm/ntxbexx.tfm
index 39012ca426..19cfebbb5a 100644
--- a/fonts/newtx/tfm/ntxbexx.tfm
+++ b/fonts/newtx/tfm/ntxbexx.tfm
Binary files differ
diff --git a/fonts/newtx/tfm/ntxbsy.tfm b/fonts/newtx/tfm/ntxbsy.tfm
index 2c1e4c107c..8e43ff72db 100644
--- a/fonts/newtx/tfm/ntxbsy.tfm
+++ b/fonts/newtx/tfm/ntxbsy.tfm
Binary files differ
diff --git a/fonts/newtx/tfm/ntxbsy5.tfm b/fonts/newtx/tfm/ntxbsy5.tfm
index cb5e9ba3fa..e2b8116d30 100644
--- a/fonts/newtx/tfm/ntxbsy5.tfm
+++ b/fonts/newtx/tfm/ntxbsy5.tfm
Binary files differ
diff --git a/fonts/newtx/tfm/ntxbsy7.tfm b/fonts/newtx/tfm/ntxbsy7.tfm
index 872c6bf545..c45b85676d 100644
--- a/fonts/newtx/tfm/ntxbsy7.tfm
+++ b/fonts/newtx/tfm/ntxbsy7.tfm
Binary files differ
diff --git a/fonts/newtx/tfm/ntxexx.tfm b/fonts/newtx/tfm/ntxexx.tfm
index 34008c4fa1..d08626018d 100644
--- a/fonts/newtx/tfm/ntxexx.tfm
+++ b/fonts/newtx/tfm/ntxexx.tfm
Binary files differ
diff --git a/fonts/newtx/tfm/ntxsy.tfm b/fonts/newtx/tfm/ntxsy.tfm
index 667976e6d0..ea392568c3 100644
--- a/fonts/newtx/tfm/ntxsy.tfm
+++ b/fonts/newtx/tfm/ntxsy.tfm
Binary files differ
diff --git a/fonts/newtx/tfm/ntxsy5.tfm b/fonts/newtx/tfm/ntxsy5.tfm
index 22f4900be4..1bf17022e1 100644
--- a/fonts/newtx/tfm/ntxsy5.tfm
+++ b/fonts/newtx/tfm/ntxsy5.tfm
Binary files differ
diff --git a/fonts/newtx/tfm/ntxsy7.tfm b/fonts/newtx/tfm/ntxsy7.tfm
index dec513892e..4be297e5f2 100644
--- a/fonts/newtx/tfm/ntxsy7.tfm
+++ b/fonts/newtx/tfm/ntxsy7.tfm
Binary files differ
diff --git a/fonts/newtx/tfm/txbex-bar.tfm b/fonts/newtx/tfm/txbex-bar.tfm
index accc75f8d3..89ecd9d043 100644
--- a/fonts/newtx/tfm/txbex-bar.tfm
+++ b/fonts/newtx/tfm/txbex-bar.tfm
Binary files differ
diff --git a/fonts/newtx/tfm/txbsys.tfm b/fonts/newtx/tfm/txbsys.tfm
index de9df268da..4f74b9b38e 100644
--- a/fonts/newtx/tfm/txbsys.tfm
+++ b/fonts/newtx/tfm/txbsys.tfm
Binary files differ
diff --git a/fonts/newtx/tfm/txex-bar.tfm b/fonts/newtx/tfm/txex-bar.tfm
index d7ee4740b0..7afa197c3b 100644
--- a/fonts/newtx/tfm/txex-bar.tfm
+++ b/fonts/newtx/tfm/txex-bar.tfm
Binary files differ
diff --git a/fonts/newtx/tfm/txsys.tfm b/fonts/newtx/tfm/txsys.tfm
index 6298a9b500..e60f7af1ef 100644
--- a/fonts/newtx/tfm/txsys.tfm
+++ b/fonts/newtx/tfm/txsys.tfm
Binary files differ
diff --git a/fonts/newtx/type1/txbex-bar.pfb b/fonts/newtx/type1/txbex-bar.pfb
index ecf35354a7..acda4716bc 100644
--- a/fonts/newtx/type1/txbex-bar.pfb
+++ b/fonts/newtx/type1/txbex-bar.pfb
Binary files differ
diff --git a/fonts/newtx/type1/txbsys.pfb b/fonts/newtx/type1/txbsys.pfb
index 8aa690314e..812b781aa3 100644
--- a/fonts/newtx/type1/txbsys.pfb
+++ b/fonts/newtx/type1/txbsys.pfb
Binary files differ
diff --git a/fonts/newtx/type1/txex-bar.pfb b/fonts/newtx/type1/txex-bar.pfb
index fbf0f95633..36790bfbde 100644
--- a/fonts/newtx/type1/txex-bar.pfb
+++ b/fonts/newtx/type1/txex-bar.pfb
Binary files differ
diff --git a/fonts/newtx/type1/txsys.pfb b/fonts/newtx/type1/txsys.pfb
index 4e0637ffaf..5d7fc879a7 100644
--- a/fonts/newtx/type1/txsys.pfb
+++ b/fonts/newtx/type1/txsys.pfb
Binary files differ
diff --git a/fonts/newtx/vf/ntxbexx.vf b/fonts/newtx/vf/ntxbexx.vf
index 0923e47121..1dfb58f240 100644
--- a/fonts/newtx/vf/ntxbexx.vf
+++ b/fonts/newtx/vf/ntxbexx.vf
Binary files differ
diff --git a/fonts/newtx/vf/ntxbsy.vf b/fonts/newtx/vf/ntxbsy.vf
index 56df5b442c..7fb409d635 100644
--- a/fonts/newtx/vf/ntxbsy.vf
+++ b/fonts/newtx/vf/ntxbsy.vf
Binary files differ
diff --git a/fonts/newtx/vf/ntxbsy5.vf b/fonts/newtx/vf/ntxbsy5.vf
index a59c07d427..5ae108cac0 100644
--- a/fonts/newtx/vf/ntxbsy5.vf
+++ b/fonts/newtx/vf/ntxbsy5.vf
Binary files differ
diff --git a/fonts/newtx/vf/ntxbsy7.vf b/fonts/newtx/vf/ntxbsy7.vf
index 223bc23b53..8f66e9b86b 100644
--- a/fonts/newtx/vf/ntxbsy7.vf
+++ b/fonts/newtx/vf/ntxbsy7.vf
Binary files differ
diff --git a/fonts/newtx/vf/ntxexx.vf b/fonts/newtx/vf/ntxexx.vf
index 7f47998615..bb96b928bc 100644
--- a/fonts/newtx/vf/ntxexx.vf
+++ b/fonts/newtx/vf/ntxexx.vf
Binary files differ
diff --git a/fonts/newtx/vf/ntxsy.vf b/fonts/newtx/vf/ntxsy.vf
index 21c70c92eb..f56fb0b4db 100644
--- a/fonts/newtx/vf/ntxsy.vf
+++ b/fonts/newtx/vf/ntxsy.vf
Binary files differ
diff --git a/fonts/newtx/vf/ntxsy5.vf b/fonts/newtx/vf/ntxsy5.vf
index c98b3697ac..46e97beebd 100644
--- a/fonts/newtx/vf/ntxsy5.vf
+++ b/fonts/newtx/vf/ntxsy5.vf
Binary files differ
diff --git a/fonts/newtx/vf/ntxsy7.vf b/fonts/newtx/vf/ntxsy7.vf
index 7b37e2f37f..a93505aed1 100644
--- a/fonts/newtx/vf/ntxsy7.vf
+++ b/fonts/newtx/vf/ntxsy7.vf
Binary files differ
diff --git a/graphics/pmdraw/README.md b/graphics/pmdraw/README.md
new file mode 100644
index 0000000000..a2feb8f4e5
--- /dev/null
+++ b/graphics/pmdraw/README.md
@@ -0,0 +1,73 @@
+pmdraw
+======
+
+<!--
+*------------------------------*
+|0````````````````````````````5|
+|`````____````____`````````````|
+|````|MFMF\ /MFMF|````````````|
+|````|MF|MF\/MF|MF|````````````|
+|````|MF|\MFMF/|MF|_______`````|
+|````|MF|``````|MFMFMFMFMF|````|
+|````|MF|``````|MF|````````````|
+|````|MF|``````|MF|___`````````|
+|``````````````|MFMFMF|````````|
+|``````````````|MF|````````````|
+|``````````````|MF|````````````|
+|``````````````|MF|````````````|
+|3````````````````````````````8|
+*------------------------------*
+-->
+
+
+The `pmdraw` package allows you to draw elements of the Partition
+Monoids, commonly referred to diagrams. The package provides a lot of
+flexibility to draw most diagrams and can be customised as needed.
+
+The package makes use of the `tikz` and `keyval` packages.
+
+
+Usage
+-----
+
+The usage of the package requires some basic understanding of
+partition diagrams as well as the interface used. Please read the
+manual for a complete explanation.
+
+
+Contact
+-------
+
+If you discover a bug, please be so kind and send me a minimum working
+example of the bug in action and I will work on fixing it. My details
+are <matthias.ypg37@slmail.me>.
+
+
+Author
+-------
+
+- Matthias Fresacher
+
+
+License
+-------
+
+Copyright 2023-10-16 Matthias Fresacher
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is found via
+<http://www.latex-project.org/lppl.txt>.
+
+This work has the LPPL maintenance status `maintained`.
+
+The Current Maintainer of this work is Matthias Fresacher.
+
+
+Contents
+-------
+
+This work consists of the files `pmdraw.sty`, `pmdraw.tex` and the
+examples in the folder `examples`, in addition to the derived file
+`pmdraw.pdf`.
diff --git a/graphics/pmdraw/examples/example-1.tex b/graphics/pmdraw/examples/example-1.tex
new file mode 100644
index 0000000000..74ee80e96b
--- /dev/null
+++ b/graphics/pmdraw/examples/example-1.tex
@@ -0,0 +1,36 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdBrick[ % Options
+ degree=5,
+ levels top=4,
+ levels bottom=3
+]{ % Upper non transversal edges
+ {1}{2}
+ {3}{4}
+ [level=2]{2}{4}
+ [level=3]{2}{5}
+ [level=4]{1}{5}
+}{ % Lower non transversal edges
+ {1}{2}
+ {3}{4}
+ [level=2]{2}{4}
+ [level=3]{2}{5}
+}{ % Transversal edges
+ \pmdEmpty
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-10.tex b/graphics/pmdraw/examples/example-10.tex
new file mode 100644
index 0000000000..ae6535244e
--- /dev/null
+++ b/graphics/pmdraw/examples/example-10.tex
@@ -0,0 +1,37 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=17
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ [height=1.75]{11}{1}
+ [height=1.5]{12}{2}
+ [height=1.25]{13}{3}
+ [height=1]{14}{4}
+ [height=0.75]{15}{5}
+ [height=0.5]{16}{6}
+ [height=0.25]{17}{7}
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-11.tex b/graphics/pmdraw/examples/example-11.tex
new file mode 100644
index 0000000000..84c6ae8a93
--- /dev/null
+++ b/graphics/pmdraw/examples/example-11.tex
@@ -0,0 +1,37 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=14
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ [height=1.75]{11}{1}
+ [height=1.25]{12}{2}
+ [height=0.75]{13}{3}
+ [height=0.25]{14}{4}
+ [height=0.5]{1}{11}
+ [height=1]{2}{12}
+ [height=1.5]{3}{13}
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-12.tex b/graphics/pmdraw/examples/example-12.tex
new file mode 100644
index 0000000000..2e72dc7519
--- /dev/null
+++ b/graphics/pmdraw/examples/example-12.tex
@@ -0,0 +1,101 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=16,
+ row sep=3, % Must be before levels key
+ levels=3,
+ vertices options={
+ \fill[red] (#1,#2) circle (.5);
+ },
+ edges upper={very thick},
+ edges transversal={red,very thick},
+ brace={
+ left=1,
+ right=4,
+ label={4},
+ options={
+ \draw [
+ red,
+ very thick,
+ decorate,
+ decoration={calligraphic brace,mirror,amplitude=6pt}
+ ] (#1-0.17,-0.5) -- (#2+0.17,-0.5) node[pos=0.5,below=6pt]{\(#3\)};
+ }
+ }
+ ]{ % Upper non transversal edges
+ {4}{5}
+ [ % Options
+ options={
+ \draw[blue] (#1,3) arc (180:270:\pmdraw{edgeHeight}); % Draw left arch
+ \draw[blue] (#1+\pmdraw{edgeHeight},3-\pmdraw{edgeHeight}) -- (#2-\pmdraw{edgeHeight},3-\pmdraw{edgeHeight}); % Draw straight line
+ \draw[blue] (#2-\pmdraw{edgeHeight},3-\pmdraw{edgeHeight}) arc (270:360:\pmdraw{edgeHeight}); % Draw right arc
+ }
+ ]{4}{6}
+ [level=2]{4}{7}
+ [level=3]{4}{8}
+ }{ % Lower non transversal edges
+ {4}{5}
+ [
+ options={
+ \draw[green] (#1,0) arc (180:90:\pmdraw{edgeHeight}); % Draw left arch
+ \draw[green] (#1+\pmdraw{edgeHeight},\pmdraw{edgeHeight}) -- (#2-\pmdraw{edgeHeight},\pmdraw{edgeHeight}); % Draw straight line
+ \draw[green] (#2-\pmdraw{edgeHeight},\pmdraw{edgeHeight}) arc (90:0:\pmdraw{edgeHeight}); % Draw right arc
+ }
+ ]{4}{6}
+ [level=2]{4}{7}
+ [level=3]{4}{8}
+ }
+ { % Transversal edges
+ [height=1.75]{11}{1}
+ [height=1.25]{12}{2}
+ [height=0.75]{13}{3}
+ [height=0.25]{14}{4}
+ [height=0.5]{1}{11}
+ [height=1]{2}{12}
+ [height=1.5]{3}{13}
+ [
+ options={
+ \draw[dashed] (#1, 3) -- (#2, 0); % Draw straight line
+ }
+ ]{16}{16}
+ {15}{15}
+ }
+ }
+ { % Brick 2
+ [ % Options
+ degree=14,
+ row sep=3, % Must be before levels key
+ levels=3
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ [height=1.75]{11}{1}
+ [height=1.25]{12}{2}
+ [height=0.75]{13}{3}
+ [height=0.25]{14}{4}
+ [height=0.5]{1}{11}
+ [height=1]{2}{12}
+ [height=1.5]{3}{13}
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-13.tex b/graphics/pmdraw/examples/example-13.tex
new file mode 100644
index 0000000000..716e8b1165
--- /dev/null
+++ b/graphics/pmdraw/examples/example-13.tex
@@ -0,0 +1,126 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdProduct
+[ % Options
+ row sep=3,
+ diagram sep=2,
+ dots options={
+ \draw (#1,#2) node[red] {\(\dots\dots\)};
+ }
+]{ % Added edges
+ {1}{3}
+ {7}{11}
+ {18}{21}
+}{ % Top Diagram
+ { % Brick 1
+ [ % Options
+ degree top=3,
+ degree bottom=4
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{2}
+ {2}{3}
+ {3}{4}
+ {7}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree top=7,
+ blank bottom=1,
+ degree bottom=5,
+ levels=2
+ ]{ % Upper non transversal edges
+ [level=2]{3}{16}
+ {4}{5}
+ {6}{7}
+ }{ % Lower non transversal edges
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ {1}{2}
+ }
+ }{ % Brick 3
+ [ % Options
+ blank top=3,
+ degree top=5,
+ blank bottom=4,
+ degree bottom=4,
+ levels=2
+ ]{ % Upper non transversal edges
+ {4}{5}
+ {6}{7}
+ }{ % Lower non transversal edges
+ {5}{6}
+ {7}{8}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}{ % Bottom Diagram
+ { % Brick 1
+ [ % Options
+ degree top=3,
+ degree bottom=4
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{2}
+ {2}{3}
+ {3}{4}
+ [height=1.5]{7}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree top=7,
+ blank bottom=1,
+ degree bottom=5,
+ levels=2
+ ]{ % Upper non transversal edges
+ [level=2]{3}{16}
+ {4}{5}
+ {6}{7}
+ }{ % Lower non transversal edges
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ {1}{2}
+ }
+ }{ % Brick 3
+ [ % Options
+ blank top=3,
+ degree top=5,
+ blank bottom=4,
+ degree bottom=4,
+ levels=2
+ ]{ % Upper non transversal edges
+ {4}{5}
+ {6}{7}
+ }{ % Lower non transversal edges
+ {5}{6}
+ {7}{8}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-14.tex b/graphics/pmdraw/examples/example-14.tex
new file mode 100644
index 0000000000..72d2b8ead0
--- /dev/null
+++ b/graphics/pmdraw/examples/example-14.tex
@@ -0,0 +1,76 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdDiagram
+[ % Options
+ row sep=3,
+ diagram sep=2,
+ dots options={
+ \draw (#1,#2) node[red] {\(\mid\)};
+ }
+]{
+ { % Brick 1
+ [ % Options
+ degree top=3,
+ degree bottom=4
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{2}
+ {2}{3}
+ {3}{4}
+ {7}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree top=7,
+ blank bottom=1,
+ degree bottom=5,
+ levels=2
+ ]{ % Upper non transversal edges
+ [level=2]{3}{16}
+ {4}{5}
+ {6}{7}
+ }{ % Lower non transversal edges
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ {1}{2}
+ }
+ }{ % Brick 3
+ [ % Options
+ blank top=-1,
+ degree top=9,
+ blank bottom=4,
+ degree bottom=4,
+ levels=2
+ ]{ % Upper non transversal edges
+ {0}{1}
+ {2}{3}
+ {4}{5}
+ {6}{7}
+ }{ % Lower non transversal edges
+ {5}{6}
+ {7}{8}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-15.tex b/graphics/pmdraw/examples/example-15.tex
new file mode 100644
index 0000000000..bed21df510
--- /dev/null
+++ b/graphics/pmdraw/examples/example-15.tex
@@ -0,0 +1,76 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdDiagram
+[ % Options
+ row sep=3,
+ diagram sep=2,
+ dots options={
+ \draw (#1,#2) node {};
+ }
+]{
+ { % Brick 1
+ [ % Options
+ degree top=3,
+ degree bottom=4
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{2}
+ {2}{3}
+ {3}{4}
+ {7}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree top=7,
+ blank bottom=1,
+ degree bottom=5,
+ levels=2
+ ]{ % Upper non transversal edges
+ [level=2]{3}{16}
+ {4}{5}
+ {6}{7}
+ }{ % Lower non transversal edges
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ {1}{2}
+ }
+ }{ % Brick 3
+ [ % Options
+ blank top=-1,
+ degree top=9,
+ blank bottom=4,
+ degree bottom=4,
+ levels=2
+ ]{ % Upper non transversal edges
+ {0}{1}
+ {2}{3}
+ {4}{5}
+ {6}{7}
+ }{ % Lower non transversal edges
+ {5}{6}
+ {7}{8}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-16.tex b/graphics/pmdraw/examples/example-16.tex
new file mode 100644
index 0000000000..4a5f4f90bb
--- /dev/null
+++ b/graphics/pmdraw/examples/example-16.tex
@@ -0,0 +1,127 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdProduct
+[ % options
+ row sep=3,
+ diagram sep=2,
+ dots options={
+ \draw (#1,#2) node[red] {\(\dots\dots\)};
+ },
+ edges added={dashed,blue}
+]{ % Added edges
+ {1}{3}
+ {7}{11}
+ {18}{21}
+}{ % Top Diagram
+ { % Brick 1
+ [ % Options
+ degree top=3,
+ degree bottom=4
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{2}
+ {2}{3}
+ {3}{4}
+ {7}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree top=7,
+ blank bottom=1,
+ degree bottom=5,
+ levels=2
+ ]{ % Upper non transversal edges
+ [level=2]{3}{16}
+ {4}{5}
+ {6}{7}
+ }{ % Lower non transversal edges
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ {1}{2}
+ }
+ }{ % Brick 3
+ [ % Options
+ blank top=3,
+ degree top=5,
+ blank bottom=4,
+ degree bottom=4,
+ levels=2
+ ]{ % Upper non transversal edges
+ {4}{5}
+ {6}{7}
+ }{ % Lower non transversal edges
+ {5}{6}
+ {7}{8}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}{ % Bottom Diagram
+ { % Brick 1
+ [ % Options
+ degree top=3,
+ degree bottom=4
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{2}
+ {2}{3}
+ {3}{4}
+ [height=1.5]{7}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree top=7,
+ blank bottom=1,
+ degree bottom=5,
+ levels=2
+ ]{ % Upper non transversal edges
+ [level=2]{3}{16}
+ {4}{5}
+ {6}{7}
+ }{ % Lower non transversal edges
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ {1}{2}
+ }
+ }{ % Brick 3
+ [ % Options
+ blank top=3,
+ degree top=5,
+ blank bottom=4,
+ degree bottom=4,
+ levels=2
+ ]{ % Upper non transversal edges
+ {4}{5}
+ {6}{7}
+ }{ % Lower non transversal edges
+ {5}{6}
+ {7}{8}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-17.tex b/graphics/pmdraw/examples/example-17.tex
new file mode 100644
index 0000000000..8b23ff0903
--- /dev/null
+++ b/graphics/pmdraw/examples/example-17.tex
@@ -0,0 +1,70 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdDiagram[grid]{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace node=red,
+ edges transversal=blue,
+ brace={
+ left=1,
+ right=4,
+ label={p - 1}
+ }
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }
+ { % Brick 2
+ [ % Options
+ degree top=6,
+ degree bottom=5,
+ dots node=blue,
+ edges upper=red,
+ edges lower=green,
+ edges transversal=blue
+ ]{ % Upper non transversal edges
+ {3}{4}
+ {5}{6}
+ }{ % Lower non transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ [height=1]{2}{10}
+ {1}{1}
+ }
+ }{ % Brick 3
+ [ % Options
+ degree top=2,
+ blank top=1,
+ degree bottom=3
+ ]{ % Upper non transversal edges
+ {2}{3}
+ }{ % Lower non transversal edges
+ {1}{2}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-18.tex b/graphics/pmdraw/examples/example-18.tex
new file mode 100644
index 0000000000..136fd35d72
--- /dev/null
+++ b/graphics/pmdraw/examples/example-18.tex
@@ -0,0 +1,52 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=5,
+ levels top=1,
+ levels bottom=1,
+ labels,
+ labels top node={red,above=16pt}
+ ]{ % Upper non transversal edges
+ [height=1.1]{2}{5}
+ }{ % Lower non transversal edges
+ [height=0.3]{2}{5}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=2,
+ levels top=1,
+ levels bottom=1,
+ labels,
+ labels bottom options={
+ \draw (#1,#2) node[below=6pt] {\(#3''\)};
+ },
+ labels bottom start=6
+ ]{ % Upper non transversal edges
+ {1}{2}
+ }{ % Lower non transversal edges
+ {1}{2}
+ }{ % Transversal edges
+ {1}{2}
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-19.tex b/graphics/pmdraw/examples/example-19.tex
new file mode 100644
index 0000000000..14b31e8211
--- /dev/null
+++ b/graphics/pmdraw/examples/example-19.tex
@@ -0,0 +1,53 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdDiagram[grid]{
+ { % Brick 1
+ [ % Options
+ degree=5,
+ levels top=1,
+ levels bottom=1,
+ labels,
+ labels top node={red,above=16pt}
+ ]{ % Upper non transversal edges
+ [height=1.1]{2}{5}
+ }{ % Lower non transversal edges
+ [height=0.3]{2}{5}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=2,
+ levels top=1,
+ levels bottom=1,
+ labels,
+ labels bottom options={
+ \draw (#1,#2) node[below=6pt] {\(#3''\)};
+ },
+ labels bottom start=6,
+ labels top start=-4
+ ]{ % Upper non transversal edges
+ {1}{2}
+ }{ % Lower non transversal edges
+ {1}{2}
+ }{ % Transversal edges
+ {1}{2}
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-2.tex b/graphics/pmdraw/examples/example-2.tex
new file mode 100644
index 0000000000..3b72c7bf01
--- /dev/null
+++ b/graphics/pmdraw/examples/example-2.tex
@@ -0,0 +1,39 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdBrick[ % Options
+ blank top=2,
+ degree top=5,
+ blank bottom=1,
+ degree bottom=4,
+ levels top=4,
+ levels bottom=3
+]{ % Upper non transversal edges
+ {3}{4}
+ {5}{6}
+ [level=2]{4}{6}
+ [level=3]{4}{7}
+ [level=4]{3}{7}
+}{ % Lower non transversal edges
+ {1}{2}
+ {3}{4}
+ [level=2]{2}{4}
+ [level=3]{2}{5}
+}{ % Transversal edges
+ \pmdEmpty
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-20.tex b/graphics/pmdraw/examples/example-20.tex
new file mode 100644
index 0000000000..f6f179ff5a
--- /dev/null
+++ b/graphics/pmdraw/examples/example-20.tex
@@ -0,0 +1,171 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\usetikzlibrary{patterns}
+
+\newcommand{\blockStyles}{
+ \tikzstyle{typeI} = [
+ very thick,
+ rounded corners=5pt,
+ red,
+ preaction={fill, red!3}
+ ]
+ \tikzstyle{typeT} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 7.5pt off 2.5pt},
+ green,
+ preaction={fill, green!3}
+ ]
+ \tikzstyle{typeB} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 2.5pt off 2.5pt},
+ blue,
+ preaction={fill, blue!3}
+ ]
+ \tikzstyle{typeO} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 2.5pt off 2.5pt on 7.5pt off 2.5pt},
+ orange,
+ preaction={fill, orange!3}
+ ]
+ \tikzstyle{typeU} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 2.5pt off 2.5pt on 2.5pt off 2.5pt on 7.5pt off 2.5pt},
+ violet,
+ preaction={fill, violet!3}
+ ]
+ \tikzstyle{typeN} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 7.5pt off 2.5pt on 7.5pt off 2.5pt on 2.5pt off 2.5pt},
+ yellow,
+ preaction={fill, yellow!3}
+ ]
+}
+
+\pmdProduct[ % Options
+ decorate before={
+ \blockStyles
+ \draw[typeI] (0.6, 2.4) -- (1.4, 2.4) -- (1.4, 0.7) -- (3.4, 0.7) -- (3.4, -3.4) -- (2.6, -3.4) -- (2.6, -1.7) -- (0.6, -1.7) -- cycle;
+ \draw[typeT] (1.6, 1.3) rectangle (3.4, 2.4);
+ \draw[typeB] (0.6, -3.4) rectangle (2.4, -2.3);
+ }
+]{ % Added edges
+ {1}{3}
+}{ % Top Diagram
+ { % Brick 1
+ [ % Options
+ degree=3
+ ]{ % Upper non transversal edges
+ {2}{3}
+ }{ % Lower non transversal edges
+ {2}{3}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}{ % Bottom Diagram
+ { % Brick 1
+ [ % Options
+ degree=3
+ ]{ % Upper non transversal edges
+ {1}{2}
+ }{ % Lower non transversal edges
+ {1}{2}
+ }{ % Transversal edges
+ {3}{3}
+ }
+ }
+}
+\hspace{5em}
+\pmdProduct[ % Options
+ decorate before={
+ \blockStyles
+ \draw[typeI] (0.6, 2.4) -- (1.4, 2.4) -- (1.4, 0.7) -- (10.4, 0.7) -- (10.4, -3.4) -- (9.6, -3.4) -- (9.6, -1.7) -- (0.6, -1.7) -- cycle;
+ \foreach \x in {0,2,7} {
+ \begin{scope}[shift={(\x,0)}]
+ \draw[typeT] (1.6, 1.3) rectangle (3.4, 2.4);
+ \end{scope}
+ }
+ \foreach \x in {0,2,4,7} {
+ \begin{scope}[shift={(\x,0)}]
+ \draw[typeB] (0.6, -3.4) rectangle (2.4, -2.3);
+ \end{scope}
+ }
+ }
+]{ % Added edges
+ {1}{5}
+ {9}{10}
+}{ % Top Diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ blank top=2,
+ degree top=2,
+ blank bottom=2,
+ degree bottom=2
+ ]{ % Upper non transversal edges
+ {3}{4}
+ }{ % Lower non transversal edges
+ {3}{4}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}{ % Bottom Diagram
+ { % Brick 1
+ [ % Options
+ degree=6
+ ]{ % Upper non transversal edges
+ {1}{2}
+ {3}{4}
+ {5}{6}
+ }{ % Lower non transversal edges
+ {1}{2}
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=3
+ ]{ % Upper non transversal edges
+ {1}{2}
+ }{ % Lower non transversal edges
+ {1}{2}
+ }{ % Transversal edges
+ {3}{3}
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-21.tex b/graphics/pmdraw/examples/example-21.tex
new file mode 100644
index 0000000000..3c97be7e11
--- /dev/null
+++ b/graphics/pmdraw/examples/example-21.tex
@@ -0,0 +1,183 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\usetikzlibrary{patterns}
+
+\newcommand{\blockStyles}{
+ \tikzstyle{typeI} = [
+ very thick,
+ rounded corners=5pt,
+ red,
+ preaction={fill, red!3}
+ ]
+ \tikzstyle{typeT} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 7.5pt off 2.5pt},
+ green,
+ preaction={fill, green!3}
+ ]
+ \tikzstyle{typeB} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 2.5pt off 2.5pt},
+ blue,
+ preaction={fill, blue!3}
+ ]
+ \tikzstyle{typeO} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 2.5pt off 2.5pt on 7.5pt off 2.5pt},
+ orange,
+ preaction={fill, orange!3}
+ ]
+ \tikzstyle{typeU} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 2.5pt off 2.5pt on 2.5pt off 2.5pt on 7.5pt off 2.5pt},
+ violet,
+ preaction={fill, violet!3}
+ ]
+ \tikzstyle{typeN} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 7.5pt off 2.5pt on 7.5pt off 2.5pt on 2.5pt off 2.5pt},
+ yellow,
+ preaction={fill, yellow!3}
+ ]
+}
+
+\pmdProduct[ % Options
+ decorate before={
+ \blockStyles
+ \draw[typeO] (0.6, -1.9) rectangle (4.4, 0.7);
+ \foreach \x in {0,2} {
+ \begin{scope}[shift={(\x,0)}]
+ \draw[typeB] (0.6, -3.4) rectangle (2.4, -2.3);
+ \draw[typeT] (0.6, 1.3) rectangle (2.4, 2.4);
+ \end{scope}
+ }
+ }
+]{ % Added edges
+ {1}{4}
+}{ % Top Diagram
+ { % Brick 1
+ [ % Options
+ degree=4
+ ]{ % Upper non transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Lower non transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}{ % Bottom Diagram
+ { % Brick 1
+ [ % Options
+ degree=4,
+ levels top=2
+ ]{ % Upper non transversal edges
+ [level=2]{1}{4}
+ {2}{3}
+ }{ % Lower non transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}
+\hspace{5em}
+\pmdProduct[ % Options
+ decorate before={
+ \blockStyles
+ \draw[typeO] (0.6, -1.9) rectangle (11.4, 0.7);
+ \foreach \x in {0,2,4,7,9} {
+ \begin{scope}[shift={(\x,0)}]
+ \draw[typeB] (0.6, -3.4) rectangle (2.4, -2.3);
+ \draw[typeT] (0.6, 1.3) rectangle (2.4, 2.4);
+ \end{scope}
+ }
+ }
+]{ % Added edges
+ {1}{5}
+ {9}{11}
+}{ % Top Diagram
+ { % Brick 1
+ [ % Options
+ degree=6
+ ]{ % Upper non transversal edges
+ {1}{2}
+ {3}{4}
+ {5}{6}
+ }{ % Lower non transversal edges
+ {1}{2}
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=4
+ ]{ % Upper non transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Lower non transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}{ % Bottom Diagram
+ { % Brick 1
+ [ % Options
+ degree top=5,
+ levels top=2,
+ degree bottom=6
+ ]{ % Upper non transversal edges
+ [level=2]{1}{11}
+ {2}{3}
+ {4}{5}
+ }{ % Lower non transversal edges
+ {1}{2}
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }{ % Brick 2
+ [ % Options
+ blank top=1,
+ degree top=3,
+ degree bottom=4,
+ levels top=2
+ ]{ % Upper non transversal edges
+ {2}{3}
+ }{ % Lower non transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-22.tex b/graphics/pmdraw/examples/example-22.tex
new file mode 100644
index 0000000000..1f551db62b
--- /dev/null
+++ b/graphics/pmdraw/examples/example-22.tex
@@ -0,0 +1,179 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\usetikzlibrary{patterns}
+
+\newcommand{\blockStyles}{
+ \tikzstyle{typeI} = [
+ very thick,
+ rounded corners=5pt,
+ red,
+ preaction={fill, red!3}
+ ]
+ \tikzstyle{typeT} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 7.5pt off 2.5pt},
+ green,
+ preaction={fill, green!3}
+ ]
+ \tikzstyle{typeB} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 2.5pt off 2.5pt},
+ blue,
+ preaction={fill, blue!3}
+ ]
+ \tikzstyle{typeO} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 2.5pt off 2.5pt on 7.5pt off 2.5pt},
+ orange,
+ preaction={fill, orange!3}
+ ]
+ \tikzstyle{typeU} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 2.5pt off 2.5pt on 2.5pt off 2.5pt on 7.5pt off 2.5pt},
+ violet,
+ preaction={fill, violet!3}
+ ]
+ \tikzstyle{typeN} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 7.5pt off 2.5pt on 7.5pt off 2.5pt on 2.5pt off 2.5pt},
+ yellow,
+ preaction={fill, yellow!3}
+ ]
+}
+
+\pmdProduct[ % Options
+ decorate before={
+ \blockStyles
+ \draw[typeU] (0.6, 2.4) -- (1.4, 2.4) -- (1.4, 0.7) -- (3.6, 0.7) -- (3.6, 2.4) -- (4.4, 2.4) -- (4.4, -1.7) -- (0.6, -1.7) -- cycle;
+ \draw[typeT] (1.6, 1.3) rectangle (3.4, 2.4);
+ \foreach \x in {0,2} {
+ \begin{scope}[shift={(\x,0)}]
+ \draw[typeB] (0.6, -3.4) rectangle (2.4, -2.3);
+ \end{scope}
+ }
+ }
+]{ % Added edges
+ {1}{4}
+}{ % Top Diagram
+ { % Brick 1
+ [ % Options
+ degree=4
+ ]{ % Upper non transversal edges
+ {2}{3}
+ }{ % Lower non transversal edges
+ {2}{3}
+ }{ % Transversal edges
+ {1}{1}
+ {4}{4}
+ }
+ }
+}{ % Bottom Diagram
+ { % Brick 1
+ [ % Options
+ degree=4
+ ]{ % Upper non transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Lower non transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}
+\hspace{5em}
+\pmdProduct[ % Options
+ decorate before={
+ \blockStyles
+ \draw[typeU] (0.6, 2.4) -- (1.4, 2.4) -- (1.4, 0.7) -- (10.6, 0.7) -- (10.6, 2.4) -- (11.4, 2.4) -- (11.4, -1.7) -- (0.6, -1.7) -- cycle;
+ \foreach \x in {0,2,4,7,9} {
+ \begin{scope}[shift={(\x,0)}]
+ \draw[typeB] (0.6, -3.4) rectangle (2.4, -2.3);
+ \end{scope}
+ }
+ \foreach \x in {1,3,8} {
+ \begin{scope}[shift={(\x,0)}]
+ \draw[typeT] (0.6, 1.3) rectangle (2.4, 2.4);
+ \end{scope}
+ }
+ }
+]{ % Added edges
+ {1}{5}
+ {9}{11}
+}{ % Top Diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ blank top=2,
+ blank bottom=2,
+ degree=3
+ ]{ % Upper non transversal edges
+ {3}{4}
+ }{ % Lower non transversal edges
+ {3}{4}
+ }{ % Transversal edges
+ {5}{5}
+ }
+ }
+}{ % Bottom Diagram
+ { % Brick 1
+ [ % Options
+ degree=6
+ ]{ % Upper non transversal edges
+ {1}{2}
+ {3}{4}
+ {5}{6}
+ }{ % Lower non transversal edges
+ {1}{2}
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=4
+ ]{ % Upper non transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Lower non transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-23.tex b/graphics/pmdraw/examples/example-23.tex
new file mode 100644
index 0000000000..016bee3c5c
--- /dev/null
+++ b/graphics/pmdraw/examples/example-23.tex
@@ -0,0 +1,179 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\usetikzlibrary{patterns}
+
+\newcommand{\blockStyles}{
+ \tikzstyle{typeI} = [
+ very thick,
+ rounded corners=5pt,
+ red,
+ preaction={fill, red!3}
+ ]
+ \tikzstyle{typeT} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 7.5pt off 2.5pt},
+ green,
+ preaction={fill, green!3}
+ ]
+ \tikzstyle{typeB} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 2.5pt off 2.5pt},
+ blue,
+ preaction={fill, blue!3}
+ ]
+ \tikzstyle{typeO} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 2.5pt off 2.5pt on 7.5pt off 2.5pt},
+ orange,
+ preaction={fill, orange!3}
+ ]
+ \tikzstyle{typeU} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 2.5pt off 2.5pt on 2.5pt off 2.5pt on 7.5pt off 2.5pt},
+ violet,
+ preaction={fill, violet!3}
+ ]
+ \tikzstyle{typeN} = [
+ very thick,
+ rounded corners=5pt,
+ dash pattern={on 7.5pt off 2.5pt on 7.5pt off 2.5pt on 2.5pt off 2.5pt},
+ yellow,
+ preaction={fill, yellow!3}
+ ]
+}
+
+\pmdProduct[ % Options
+ decorate before={
+ \blockStyles
+ \draw[typeN] (0.6, -3.4) -- (1.4, -3.4) -- (1.4, -1.7) -- (3.6, -1.7) -- (3.6, -3.4) -- (4.4, -3.4) -- (4.4, 0.7) -- (0.6, 0.7) -- cycle;
+ \draw[typeB] (1.6, -3.4) rectangle (3.4, -2.3);
+ \foreach \x in {0,2} {
+ \begin{scope}[shift={(\x,0)}]
+ \draw[typeT] (0.6, 1.3) rectangle (2.4, 2.4);
+ \end{scope}
+ }
+ }
+]{ % Added edges
+ {1}{4}
+}{ % Top Diagram
+ { % Brick 1
+ [ % Options
+ degree=4
+ ]{ % Upper non transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Lower non transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}{ % Bottom Diagram
+ { % Brick 1
+ [ % Options
+ degree=4
+ ]{ % Upper non transversal edges
+ {2}{3}
+ }{ % Lower non transversal edges
+ {2}{3}
+ }{ % Transversal edges
+ {1}{1}
+ {4}{4}
+ }
+ }
+}
+\hspace{5em}
+\pmdProduct[ % Options
+ decorate before={
+ \blockStyles
+ \draw[typeN] (0.6, -3.4) -- (1.4, -3.4) -- (1.4, -1.7) -- (10.6, -1.7) -- (10.6, -3.4) -- (11.4, -3.4) -- (11.4, 0.7) -- (0.6, 0.7) -- cycle;
+ \foreach \x in {0,2,4,7,9} {
+ \begin{scope}[shift={(\x,0)}]
+ \draw[typeT] (0.6, 1.3) rectangle (2.4, 2.4);
+ \end{scope}
+ }
+ \foreach \x in {1,3,8} {
+ \begin{scope}[shift={(\x,0)}]
+ \draw[typeB] (0.6, -3.4) rectangle (2.4, -2.3);
+ \end{scope}
+ }
+ }
+]{ % Added edges
+ {1}{5}
+ {9}{11}
+}{ % Top Diagram
+ { % Brick 1
+ [ % Options
+ degree=6
+ ]{ % Upper non transversal edges
+ {1}{2}
+ {3}{4}
+ {5}{6}
+ }{ % Lower non transversal edges
+ {1}{2}
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=4
+ ]{ % Upper non transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Lower non transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}{ % Bottom Diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ blank top=2,
+ blank bottom=2,
+ degree=3
+ ]{ % Upper non transversal edges
+ {3}{4}
+ }{ % Lower non transversal edges
+ {3}{4}
+ }{ % Transversal edges
+ {5}{5}
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-24.tex b/graphics/pmdraw/examples/example-24.tex
new file mode 100644
index 0000000000..a4169912f7
--- /dev/null
+++ b/graphics/pmdraw/examples/example-24.tex
@@ -0,0 +1,160 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdProduct[ % Options
+ decorate after={
+ \draw (1, 2) node[above=6pt] {\( x \)\strut};
+ \draw (2, 2) node[above=6pt] {\( y \)\strut};
+ }
+]{ % Added edges
+ {1}{3}
+}{ % Top diagram
+ { % Brick 1
+ [
+ degree=3
+ ]{ % Upper non transversal edges
+ {1}{2}
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}{ % Bottom diagram
+ { % Brick 1
+ [
+ degree=3
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}
+\hspace{2em}
+\pmdProduct[ % Options
+ decorate after={
+ \draw (1, 2) node[above=6pt] {\( x \)};
+ \draw (1, 0) node[left=6pt] {\( y \)};
+ \draw (1, -1) node[left=6pt] {\( j''' \)};
+ \draw (1, -3) node[left=6pt] {\( z \)};
+ }
+]{ % Added edges
+ {1}{3}
+}{ % Top diagram
+ { % Brick 1
+ [
+ degree=3
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}{ % Bottom diagram
+ { % Brick 1
+ [
+ degree=3
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\hspace{2em}
+\pmdProduct[ % Options
+ decorate after={
+ \draw (1, 2) node[above=6pt] {\( x \)};
+ \draw (1, 0) node[left=6pt] {\( y \)};
+ \draw (1, -1) node[left=6pt] {\( j''' \)};
+ \draw (2, -1) node[below=4pt] {\( z \)};
+ \draw (2, 0) node[above right=0pt] {\( k'' \)};
+ \draw (2, 2) node[above=6pt] {\( w \)};
+ }
+]{ % Added edges
+ {1}{3}
+}{ % Top diagram
+ { % Brick 1
+ [
+ degree=3
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }
+}{ % Bottom diagram
+ { % Brick 1
+ [
+ degree=3
+ ]{ % Upper non transversal edges
+ {1}{2}
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}
+\hspace{2em}
+\pmdProduct[ % Options
+ decorate after={
+ \draw (1, 2) node[above=6pt] {\( x \)};
+ \draw (1, 0) node[left=6pt] {\( y \)};
+ \draw (1, -1) node[left=6pt] {\( j''' \)};
+ \draw (2, -1) node[below=4pt] {\( z \)};
+ \draw (2, 0) node[above=4pt] {\( k'' \)};
+ \draw (3, 0) node[above=4pt] {\( w \)};
+ }
+]{ % Added edges
+ {1}{4}
+}{ % Top diagram
+ { % Brick 1
+ [
+ degree=4
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ {2}{3}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}{ % Bottom diagram
+ { % Brick 1
+ [
+ degree=4
+ ]{ % Upper non transversal edges
+ {1}{2}
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-25.tex b/graphics/pmdraw/examples/example-25.tex
new file mode 100644
index 0000000000..b3ae92b546
--- /dev/null
+++ b/graphics/pmdraw/examples/example-25.tex
@@ -0,0 +1,63 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=5,
+ brace={
+ left=4,
+ right=7,
+ label={p - 3}
+ }
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{2}
+ {2}{3}
+ {3}{1}
+ {4}{4}
+ {5}{5}
+ }
+ }
+ { % Brick 2
+ [ % Options
+ degree=5
+ ]{ % Upper non transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }{ % Brick 3
+ [ % Options
+ degree=2
+ ]{ % Upper non transversal edges
+ {1}{2}
+ }{ % Lower non transversal edges
+ {1}{2}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-3.tex b/graphics/pmdraw/examples/example-3.tex
new file mode 100644
index 0000000000..5654553405
--- /dev/null
+++ b/graphics/pmdraw/examples/example-3.tex
@@ -0,0 +1,53 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=5,
+ levels top=4,
+ levels bottom=3
+ ]{ % Upper non transversal edges
+ {1}{2}
+ {3}{4}
+ [level=2]{2}{4}
+ [level=3]{2}{5}
+ [level=4]{1}{5}
+ [level=3]{5}{7}
+ }{ % Lower non transversal edges
+ {1}{2}
+ {3}{4}
+ [level=2]{2}{4}
+ [level=3]{2}{5}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=4
+ ]{ % Upper non transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Lower non transversal edges
+ {1}{2}
+ }{ % Transversal edges
+ {1}{2}
+ {3}{4}
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-4.tex b/graphics/pmdraw/examples/example-4.tex
new file mode 100644
index 0000000000..953fec4e42
--- /dev/null
+++ b/graphics/pmdraw/examples/example-4.tex
@@ -0,0 +1,77 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree top=3,
+ degree bottom=4,
+ brace={
+ left=2,
+ right=7,
+ label={p}
+ }
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{2}
+ {2}{3}
+ {3}{4}
+ {7}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree top=7,
+ blank bottom=1,
+ degree bottom=5,
+ levels=2,
+ brace={
+ left=4,
+ right=12,
+ label={q},
+ above
+ }
+ ]{ % Upper non transversal edges
+ [level=2]{3}{13}
+ {4}{5}
+ {6}{7}
+ }{ % Lower non transversal edges
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ {1}{2}
+ }
+ }{ % Brick 3
+ [ % Options
+ degree top=5,
+ blank bottom=1,
+ degree bottom=4,
+ levels=2
+ ]{ % Upper non transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Lower non transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-5.tex b/graphics/pmdraw/examples/example-5.tex
new file mode 100644
index 0000000000..5e5f7529d8
--- /dev/null
+++ b/graphics/pmdraw/examples/example-5.tex
@@ -0,0 +1,118 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdProduct{ % Added edges
+ {1}{3}
+ {7}{11}
+ {15}{18}
+}{ % Top Diagram
+ { % Brick 1
+ [ % Options
+ degree top=3,
+ degree bottom=4
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{2}
+ {2}{3}
+ {3}{4}
+ {7}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree top=7,
+ blank bottom=1,
+ degree bottom=5,
+ levels=2
+ ]{ % Upper non transversal edges
+ [level=2]{3}{13}
+ {4}{5}
+ {6}{7}
+ }{ % Lower non transversal edges
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ {1}{2}
+ }
+ }{ % Brick 3
+ [ % Options
+ degree top=5,
+ blank bottom=1,
+ degree bottom=4,
+ levels=2
+ ]{ % Upper non transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Lower non transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}{ % Bottom Diagram
+ { % Brick 1
+ [ % Options
+ degree top=3,
+ degree bottom=4
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{2}
+ {2}{3}
+ {3}{4}
+ {7}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree top=7,
+ blank bottom=1,
+ degree bottom=5,
+ levels=2,
+ no dots
+ ]{ % Upper non transversal edges
+ [level=2]{3}{13}
+ {4}{5}
+ {6}{7}
+ }{ % Lower non transversal edges
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ {1}{2}
+ }
+ }{ % Brick 3
+ [ % Options
+ degree top=5,
+ blank bottom=1,
+ degree bottom=4,
+ levels=2
+ ]{ % Upper non transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Lower non transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-6.tex b/graphics/pmdraw/examples/example-6.tex
new file mode 100644
index 0000000000..6061318eb2
--- /dev/null
+++ b/graphics/pmdraw/examples/example-6.tex
@@ -0,0 +1,55 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdProduct[ % Options
+ decorate after={
+ \draw[very thick,red,rounded corners=5pt] (0.6, -3.4) rectangle (1.4, 2.4);
+ }
+]{ % Added edges
+ {1}{4}
+}{ % Top Diagram
+ { % Brick 1
+ [ % Options
+ degree=4
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ {3}{3}
+ {4}{4}
+ }
+ }
+}{ % Bottom Diagram
+ { % Brick 1
+ [ % Options
+ degree=4
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ {3}{3}
+ {4}{4}
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-7.tex b/graphics/pmdraw/examples/example-7.tex
new file mode 100644
index 0000000000..50d66775ca
--- /dev/null
+++ b/graphics/pmdraw/examples/example-7.tex
@@ -0,0 +1,63 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace={
+ left=1,
+ right=4,
+ label={p}
+ }
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree top=5,
+ degree bottom=6
+ ]{ % Upper non transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non transversal edges
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ [height=1]{10}{2}
+ {1}{1}
+ }
+ }{ % Brick 3
+ [ % Options
+ degree top=3,
+ blank bottom=1,
+ degree bottom=2
+ ]{ % Upper non transversal edges
+ {1}{2}
+ }{ % Lower non transversal edges
+ {2}{3}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-8.tex b/graphics/pmdraw/examples/example-8.tex
new file mode 100644
index 0000000000..61e9ef6457
--- /dev/null
+++ b/graphics/pmdraw/examples/example-8.tex
@@ -0,0 +1,63 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace={
+ left=1,
+ right=4,
+ label={p}
+ }
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree top=6,
+ degree bottom=5
+ ]{ % Upper non transversal edges
+ {3}{4}
+ {5}{6}
+ }{ % Lower non transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ [height=1]{2}{10}
+ {1}{1}
+ }
+ }{ % Brick 3
+ [ % Options
+ degree top=2,
+ blank top=1,
+ degree bottom=3
+ ]{ % Upper non transversal edges
+ {2}{3}
+ }{ % Lower non transversal edges
+ {1}{2}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/examples/example-9.tex b/graphics/pmdraw/examples/example-9.tex
new file mode 100644
index 0000000000..39d5cc3319
--- /dev/null
+++ b/graphics/pmdraw/examples/example-9.tex
@@ -0,0 +1,37 @@
+%!TEX root = ../pmdraw.tex
+
+% *------------------------------*
+% |`````````````````````````````x|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````````````````````|
+% *------------------------------*
+
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=17
+ ]{ % Upper non transversal edges
+ \pmdEmpty
+ }{ % Lower non transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ [height=0.25]{1}{11}
+ [height=0.5]{2}{12}
+ [height=0.75]{3}{13}
+ [height=1]{4}{14}
+ [height=1.25]{5}{15}
+ [height=1.5]{6}{16}
+ [height=1.75]{7}{17}
+ }
+ }
+} \ No newline at end of file
diff --git a/graphics/pmdraw/pmdraw.pdf b/graphics/pmdraw/pmdraw.pdf
new file mode 100644
index 0000000000..4f598dde7e
--- /dev/null
+++ b/graphics/pmdraw/pmdraw.pdf
Binary files differ
diff --git a/graphics/pmdraw/pmdraw.sty b/graphics/pmdraw/pmdraw.sty
new file mode 100644
index 0000000000..9799aa628b
--- /dev/null
+++ b/graphics/pmdraw/pmdraw.sty
@@ -0,0 +1,903 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{pmdraw}[2023-11-08 v1.0 pmdraw]
+
+% *------------------------------*
+% |4````````````````````````````9|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |9````````````````````````````6|
+% *------------------------------*
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Required packages %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% \RequirePackage{datetime}
+\RequirePackage{keyval}
+\RequirePackage{tikz}
+\usetikzlibrary{math,decorations.pathreplacing,calligraphy,backgrounds}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Internal control and option commands %
+% - loosely ordered alphabetically %
+% - includes default values where appropriate %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\pmdraw@braceLabel}{} % Label of brace
+
+\newcommand{\pmdraw@diagSep}{1} % Vertical separation between bottom row of top diagram and top row of bottom diagram in product diagram
+
+\newcommand{\pmdraw@drawAedgesOptions}{} % Draw options for added edges in product diagram
+\newcommand{\pmdraw@drawAedges}[2]{ % Draws added edges in product diagram from #1 vertex to #2 vertex, assumes #1<#2
+ \foreach \x in {#1,...,#2} { % For each vertex in range
+ \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep); % Draw concatenation edge
+ }
+ \pmdraw@AedgesLoop % Restart for loop
+}
+
+\newcommand{\pmdraw@drawBraceDrawOptions}{} % Draw options for brace
+\newcommand{\pmdraw@drawBraceNodeOptions}{} % Node options for brace
+\newcommand{\pmdraw@drawBraceDefault}[3]{ % Draws brace a brace starting from #1 vertex to #2 vertex with label #3, assumes #1<#2 - DEFAULT
+ \ifnum\pmdraw@ifProdDiag=1 % If drawing a product diagram or if placing brace above diagram
+ \draw[
+ very thick,
+ decorate,
+ decoration={calligraphic brace,amplitude=6pt},
+ apply style/.expand once=\pmdraw@drawBraceDrawOptions
+ ] (#1-0.17,\pmdraw@rowSep+0.5) -- (#2+0.17,\pmdraw@rowSep+0.5)
+ node[
+ pos=0.5,
+ above=6pt,
+ apply style/.expand once=\pmdraw@drawBraceNodeOptions
+ ] {\(#3\)}; % Draw brace on top of diagram
+ \else % If not drawing a product diagram or if placing brace below diagram
+ \draw[
+ very thick,
+ decorate,
+ decoration={calligraphic brace,mirror,amplitude=6pt},
+ apply style/.expand once=\pmdraw@drawBraceDrawOptions
+ ] (#1-0.17,-0.5) -- (#2+0.17,-0.5)
+ node[
+ pos=0.5,
+ below=6pt,
+ apply style/.expand once=\pmdraw@drawBraceNodeOptions
+ ] {\(#3\)}; % Draw brace on bottom of diagram
+ \fi%
+}
+\let\pmdraw@drawBrace\pmdraw@drawBraceDefault % Draws brace a brace starting from #1 vertex to #2 vertex with label #3, assumes #1<#2
+
+\newcommand{\pmdraw@drawDotsDrawOptions}{} % Draw options for dots between bricks
+\newcommand{\pmdraw@drawDotsNodeOptions}{} % Node options for dots between bricks
+\newcommand{\pmdraw@drawDotsDefault}[2]{ % Draws dots between bricks at (#1,#2) - DEFAULT
+ \draw[apply style/.expand once=\pmdraw@drawDotsDrawOptions] (#1,#2) node[apply style/.expand once=\pmdraw@drawDotsNodeOptions] {\(\dots\)};
+}
+\let\pmdraw@drawDots\pmdraw@drawDotsDefault % Draws dots between bricks at (#1,#2)
+
+\newcommand{\pmdraw@drawLabelBDrawOptions}{} % Draw options for label of a vertex in bottom row
+\newcommand{\pmdraw@drawLabelBNodeOptions}{} % Node options for label of a vertex in bottom row
+\newcommand{\pmdraw@drawLabelBottomDefault}[3]{ % For bottom row, draws the label #3 for a vertex at (#1,#2) - DEFAULT
+ \draw[apply style/.expand once=\pmdraw@drawLabelBDrawOptions] (#1,#2) node[below=6pt,apply style/.expand once=\pmdraw@drawLabelBNodeOptions] {\(#3'\)};
+}
+\let\pmdraw@drawLabelBottom\pmdraw@drawLabelBottomDefault % For bottom row, draws the label #3 for a vertex at (#1,#2)
+
+\newcommand{\pmdraw@drawLabelTDrawOptions}{} % Draw options for label of a vertex in top row
+\newcommand{\pmdraw@drawLabelTNodeOptions}{} % Node options for label of a vertex in top row
+\newcommand{\pmdraw@drawLabelTopDefault}[3]{ % For top row, draws the label #3 for a vertex at (#1,#2) - DEFAULT
+ \draw[apply style/.expand once=\pmdraw@drawLabelTDrawOptions] (#1,#2) node[above=6pt,apply style/.expand once=\pmdraw@drawLabelTNodeOptions] {\(#3\)};
+}
+\let\pmdraw@drawLabelTop\pmdraw@drawLabelTopDefault % For top row, draws the label #3 for a vertex at (#1,#2)
+
+\newcommand{\pmdraw@drawLedgesDrawOptions}{} % Draw options for lower non-transversal edges
+\newcommand{\pmdraw@drawLedgesDrawDefault}[2]{ % Draws lower non-transversal edge from #1 vertex to #2 vertex, assumes #1<#2 - DEFAULT
+ \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions] (#1,0) arc (180:90:\pmdraw{edgeHeight}); % Draw left arch
+ \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions] (#1+\pmdraw{edgeHeight},\pmdraw{edgeHeight}) -- (#2-\pmdraw{edgeHeight},\pmdraw{edgeHeight}); % Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions] (#2-\pmdraw{edgeHeight},\pmdraw{edgeHeight}) arc (90:0:\pmdraw{edgeHeight}); % Draw right arc
+}
+\let\pmdraw@drawLedgesDraw\pmdraw@drawLedgesDrawDefault % Draws lower non-transversal edge from #1 vertex to #2 vertex, assumes #1<#2
+
+\newcommand{\pmdraw@drawTedgesDrawOptions}{} % Draw options for transversal edges
+\newcommand{\pmdraw@drawTedgesDrawDefault}[2]{ % Draws transversal edge from #1 vertex in top row to #2 vertex in bottom row - DEFAULT
+ \ifnum\pmdraw@ifTedgeHorizontal=0 % If drawing a straight line edge
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#1,\pmdraw@rowSep) -- (#2,0); % Draw straight line
+ \else % If transversal edge is drawn horizontally
+ \ifnum#1>#2 % If edge goes from top right to bottom left
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#2,0) arc (180:90:\pmdraw{Tlevel}); % Draw bottom arch
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#2+\pmdraw{Tlevel},\pmdraw{Tlevel}) -- (#1-\pmdraw@rowSep+\pmdraw{Tlevel}, \pmdraw{Tlevel}); % Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#1-\pmdraw@rowSep+\pmdraw{Tlevel},\pmdraw{Tlevel}) arc (270:360:{\pmdraw@rowSep-\pmdraw{Tlevel}}); % Draw top arc
+ \else % If edge goes from top left to bottom right
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#2,0) arc (0:90:\pmdraw{Tlevel}); % Draw bottom arch
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#2-\pmdraw{Tlevel},\pmdraw{Tlevel}) -- (#1+\pmdraw@rowSep-\pmdraw{Tlevel}, \pmdraw{Tlevel}); % Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#1+\pmdraw@rowSep-\pmdraw{Tlevel},\pmdraw{Tlevel}) arc (270:180:{\pmdraw@rowSep-\pmdraw{Tlevel}}); % Draw top arc
+ \fi%
+ \renewcommand{\pmdraw@ifTedgeHorizontal}{0} % Reset flag to default
+ \fi%
+}
+\let\pmdraw@drawTedgesDraw\pmdraw@drawTedgesDrawDefault % Draws transversal edge from #1 vertex in top row to #2 vertex in bottom row
+
+\newcommand{\pmdraw@drawUedgesDrawOptions}{} % Draw options for upper non-transversal edges
+\newcommand{\pmdraw@drawUedgesDrawDefault}[2]{ % Draws upper non-transversal edge from #1 vertex to #2 vertex, assumes #1<#2 - DEFAULT
+ \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions] (#1,\pmdraw@rowSep) arc (180:270:\pmdraw{edgeHeight}); % Draw left arch
+ \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions] (#1+\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight}) -- (#2-\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight}); % Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions] (#2-\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight}) arc (270:360:\pmdraw{edgeHeight}); % Draw right arc
+}
+\let\pmdraw@drawUedgesDraw\pmdraw@drawUedgesDrawDefault % Draws upper non-transversal edge from #1 vertex to #2 vertex, assumes #1<#2
+
+\newcommand{\pmdraw@drawVertexOptions}{} % Draw options for vertices
+\newcommand{\pmdraw@drawVertex}[2]{ % Draws a vertex at (#1,#2)
+ \fill[apply style/.expand once=\pmdraw@drawVertexOptions] (#1,#2) circle (.17);
+}
+
+\newcommand{\pmdraw@hookAfterBrick}{} % Hook after drawing a brick
+\newcommand{\pmdraw@hookAfterDiagram}{} % Hook after drawing a diagram
+\newcommand{\pmdraw@hookBeforeBrick}{} % Hook before drawing a brick
+\newcommand{\pmdraw@hookBeforeDiagram}{} % Hook before drawing a diagram
+
+\newcommand{\pmdraw@ifDiagWDots}{0} % Boolean if drawing a diagram with dots
+\newcommand{\pmdraw@ifEdgesFirst}{0} % Boolean if drawing edges before vertices
+\newcommand{\pmdraw@ifGrid}{0} % Boolean if displaying helper grid
+\newcommand{\pmdraw@ifLabelsB}{0} % Boolean if displaying labels for vertices in bottom row
+\newcommand{\pmdraw@ifLabelsT}{0} % Boolean if displaying labels for vertices in top row
+\newcommand{\pmdraw@ifProdDiag}{0} % Boolean if drawing a product diagram
+\newcommand{\pmdraw@ifTedgesFirst}{0} % Boolean if drawing transversal edges before non-transversal edges
+\newcommand{\pmdraw@ifTedgeHorizontal}{0} % Boolean if transversal edge is drawn horizontally
+
+\newcommand{\pmdraw@NTedgesHeight}{-1000} % Height of non-transversal edges if manually set, a value of -1000 sets height automatically
+
+\newcommand{\pmdraw@reset}{% Resets user keys and other flags to default values after drawing diagram
+ \renewcommand{\pmdraw@diagSep}{1}% Resets vertical space between product diagrams
+ \renewcommand{\pmdraw@drawAedgesOptions}{}% Resets draw options for added edges in product diagram
+ \let\pmdraw@drawDots\pmdraw@drawDotsDefault% Resets drawing of dots between bricks
+ \renewcommand{\pmdraw@hookAfterDiagram}{}% Clears hook after drawing a diagram
+ \renewcommand{\pmdraw@hookBeforeDiagram}{}% Clears hook before drawing a diagram
+ \renewcommand{\pmdraw@ifGrid}{0}% Hides grid
+ \renewcommand{\pmdraw@ifDiagWDots}{0}% Reset if drawing a diagram with dots
+ \renewcommand{\pmdraw@rowSep}{2}% Resets vertical separation between rows of vertices in brick
+ \setcounter{pmdraw@blankB}{0}% Resets number of blank vertices in bottom row to the left of brick
+ \setcounter{pmdraw@blankT}{0}% Resets number of blank vertices in top row to the left of brick
+ \setcounter{pmdraw@bottomShift}{0}% Resets shift on right end of bottom row of brick
+ \setcounter{pmdraw@topShift}{0}% Resets shift on right end of top row of brick
+ \setcounter{pmdraw@ifDiagWDotsFirst}{1}% Reset if drawing first brick of diagram
+}
+
+\newcommand{\pmdraw@rowSep}{2} % Vertical separation between rows of vertices in brick
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Counters %
+% - loosely ordered alphabetically %
+% - includes default values where appropriate %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcounter{pmdraw@blankB} % Number of blank vertices in bottom row to the left of brick
+\newcounter{pmdraw@blankT} % Number of blank vertices in top row to the left of brick
+
+\newcounter{pmdraw@bottomTotal} % Size of bottom row of brick
+\newcounter{pmdraw@bottomShift} % Shift on right end of bottom row of brick
+
+\newcounter{pmdraw@braceL} % Left starting vertex of brace
+\newcounter{pmdraw@braceR} % Right terminating vertex of brace
+
+\newcounter{pmdraw@brickShift} % Shift required for bricks after dots in diagram with dots
+
+\newcounter{pmdraw@degreeB} % Degree (number of vertices) of bottom row of brick
+\newcounter{pmdraw@degreeT} % Degree (number of vertices) of top row of brick
+
+\newcounter{pmdraw@ifDiagWDotsFirst} % In drawing with dots, boolean if drawing first brick of diagram
+\setcounter{pmdraw@ifDiagWDotsFirst}{1}
+
+\newcounter{pmdraw@labelStartB} % Starting value of labels of vertices in bottom row
+\setcounter{pmdraw@labelStartB}{1}
+\newcounter{pmdraw@labelStartT} % Starting value of labels of vertices in top row
+\setcounter{pmdraw@labelStartT}{1}
+
+\newcounter{pmdraw@NTlevel} % Level corresponding to a height for a non-transversal edge
+
+\newcounter{pmdraw@topTotal} % Size of top row of brick
+\newcounter{pmdraw@topShift} % Shift on right end of top row of brick
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Keys for bricks %
+% - ordered as per manual %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% To pass draw options to \draw command
+% Verbatim copy from:
+% https://tex.stackexchange.com/a/64237
+\tikzset{apply style/.code={\tikzset{#1}}}
+
+\define@key{pmdraw@brick}{degree}{ % Sets degree (number of vertices per row) of diagram
+ \setcounter{pmdraw@degreeB}{#1} % Sets degree (number of vertices per row) for bottom row
+ \setcounter{pmdraw@degreeT}{#1} % Sets degree (number of vertices per row) for top row
+}
+\define@key{pmdraw@brick}{degree bottom}{ % Sets degree (number of vertices per row) for bottom row
+ \setcounter{pmdraw@degreeB}{#1}
+}
+\define@key{pmdraw@brick}{degree top}{ % Sets degree (number of vertices per row) for top row
+ \setcounter{pmdraw@degreeT}{#1}
+}
+
+\define@key{pmdraw@brick}{blank bottom}{ % Sets the number of blank vertices on left of bottom row
+ \setcounter{pmdraw@blankB}{#1}
+}
+\define@key{pmdraw@brick}{blank top}{ % Sets the number of blank vertices on left of top row
+ \setcounter{pmdraw@blankT}{#1}
+}
+
+\define@key{pmdraw@brick}{row sep}{ % Sets vertical separation between rows of vertices in brick
+ \renewcommand{\pmdraw@rowSep}{#1}
+}
+
+\define@key{pmdraw@brick}{vertices}{ % Sets the draw options of vertices
+ \renewcommand{\pmdraw@drawVertexOptions}{#1}
+}
+\define@key{pmdraw@brick}{vertices options}{ % Sets the draw command of vertices
+ \renewcommand{\pmdraw@drawVertex}[2]{#1}
+}
+
+\define@key{pmdraw@brick}{labels}[]{ % Draws labels for vertices
+ \renewcommand{\pmdraw@ifLabelsB}{1}
+ \renewcommand{\pmdraw@ifLabelsT}{1}
+}
+\define@key{pmdraw@brick}{labels bottom}[]{ % Draws labels for bottom vertices
+ \renewcommand{\pmdraw@ifLabelsB}{1}
+}
+\define@key{pmdraw@brick}{labels top}[]{ % Draws labels for top vertices
+ \renewcommand{\pmdraw@ifLabelsT}{1}
+}
+
+\define@key{pmdraw@brick}{labels start}{ % Sets starting number for vertex labels
+ \setcounter{pmdraw@labelStartT}{#1}
+ \setcounter{pmdraw@labelStartB}{#1}
+}
+\define@key{pmdraw@brick}{labels bottom start}{ % Sets starting number for bottom vertex labels
+ \setcounter{pmdraw@labelStartB}{#1}
+}
+\define@key{pmdraw@brick}{labels top start}{ % Sets starting number for top vertex labels
+ \setcounter{pmdraw@labelStartT}{#1}
+}
+
+\define@key{pmdraw@brick}{labels bottom draw}{ % Sets the draw options for labels of bottom vertices
+ \renewcommand{\pmdraw@drawLabelBDrawOptions}{#1}
+}
+\define@key{pmdraw@brick}{labels bottom node}{ % Sets the node options for labels of bottom vertices
+ \renewcommand{\pmdraw@drawLabelBNodeOptions}{#1}
+}
+\define@key{pmdraw@brick}{labels top draw}{ % Sets the draw options for labels of top vertices
+ \renewcommand{\pmdraw@drawLabelTDrawOptions}{#1}
+}
+\define@key{pmdraw@brick}{labels top node}{ % Sets the node options for labels of top vertices
+ \renewcommand{\pmdraw@drawLabelTNodeOptions}{#1}
+}
+
+\define@key{pmdraw@brick}{labels bottom options}{ % Sets the draw command of labels of bottom vertices
+ \renewcommand{\pmdraw@drawLabelBottom}[3]{#1}
+}
+\define@key{pmdraw@brick}{labels top options}{ % Sets the draw command of labels of bottom vertices
+ \renewcommand{\pmdraw@drawLabelTop}[3]{#1}
+}
+
+\define@key{pmdraw@brick}{no dots}[]{ % Does not draw dots in bricks
+ \setcounter{pmdraw@ifDiagWDotsFirst}{1}
+}
+
+\define@key{pmdraw@brick}{dots draw}{ % Sets the draw options for drawing of dots
+ \renewcommand{\pmdraw@drawDotsDrawOptions}{#1}
+}
+\define@key{pmdraw@brick}{dots node}{ % Sets the node options for drawing of dots
+ \renewcommand{\pmdraw@drawDotsNodeOptions}{#1}
+}
+
+
+\define@key{pmdraw@brick}{levels}[1]{ % Sets number of horizontal levels for non-transversal edges and evenly spaces them
+ \tikzmath{
+ \pmdraw{edgeSepU} = (0.5*\pmdraw@rowSep)/(#1 + 1); % Calculates vertical separation between each edge
+ \pmdraw{edgeSepL} = \pmdraw{edgeSepU}; % Calculates vertical separation between each edge
+ }
+}
+\define@key{pmdraw@brick}{levels bottom}{ % Sets number of horizontal levels for lower non-transversal edges and evenly spaces them
+ \tikzmath{
+ \pmdraw{edgeSepL} = (0.5*\pmdraw@rowSep)/(#1 + 1); % Calculates vertical separation between each edge
+ }
+}
+\define@key{pmdraw@brick}{levels top}{ % Sets number of horizontal levels for upper non-transversal edges and evenly spaces them
+ \tikzmath{
+ \pmdraw{edgeSepU} = (0.5*\pmdraw@rowSep)/(#1 + 1); % Calculates vertical separation between each edge
+ }
+}
+
+\define@key{pmdraw@brick}{levels sep}{ % Sets vertical separation of horizontal levels for non-transversal edges
+ \tikzmath{
+ \pmdraw{edgeSepU} = #1;
+ \pmdraw{edgeSepL} = \pmdraw{edgeSepU};
+ }
+}
+\define@key{pmdraw@brick}{levels sep bottom}{ % Sets vertical separation of lower horizontal levels for non-transversal edges
+ \tikzmath{
+ \pmdraw{edgeSepL} = #1;
+ }
+}
+\define@key{pmdraw@brick}{levels sep top}{ % Sets vertical separation of upper horizontal levels for non-transversal edges
+ \tikzmath{
+ \pmdraw{edgeSepU} = #1;
+ }
+}
+
+\define@key{pmdraw@brick}{edges}{ % Sets the draw options of all edges
+ \renewcommand{\pmdraw@drawUedgesDrawOptions}{#1}
+ \renewcommand{\pmdraw@drawLedgesDrawOptions}{#1}
+ \renewcommand{\pmdraw@drawTedgesDrawOptions}{#1}
+}
+\define@key{pmdraw@brick}{edges non-transversal}{ % Sets the draw options of non-transversal edges
+ \renewcommand{\pmdraw@drawUedgesDrawOptions}{#1}
+ \renewcommand{\pmdraw@drawLedgesDrawOptions}{#1}
+}
+\define@key{pmdraw@brick}{edges upper}{ % Sets the draw options of upper non-transversal edges
+ \renewcommand{\pmdraw@drawUedgesDrawOptions}{#1}
+}
+\define@key{pmdraw@brick}{edges lower}{ % Sets the draw options of lower non-transversal edges
+ \renewcommand{\pmdraw@drawLedgesDrawOptions}{#1}
+}
+\define@key{pmdraw@brick}{edges transversal}{ % Sets the draw options of transversal edges
+ \renewcommand{\pmdraw@drawTedgesDrawOptions}{#1}
+}
+
+\define@key{pmdraw@brick}{edges first}[]{ % Draws edges before vertices
+ \renewcommand{\pmdraw@ifEdgesFirst}{1}
+}
+\define@key{pmdraw@brick}{transversals first}[]{ % Draws transversal edges before non-transversal edges
+ \renewcommand{\pmdraw@ifTedgesFirst}{1}
+}
+
+\define@key{pmdraw@brick}{brace}{ % Draws a brace
+ \setkeys{pmdraw@brace}{#1} % Processes details of brace
+ \pmdraw@drawBrace{\value{pmdraw@braceL}}{\value{pmdraw@braceR}}{\pmdraw@braceLabel} % Draws brace
+ \let\pmdraw@drawBrace\pmdraw@drawBraceDefault % Resets brace options if changed
+}
+
+\define@key{pmdraw@brick}{brace draw}{ % Sets the draw options for drawing of brace
+ \renewcommand{\pmdraw@drawBraceDrawOptions}{#1}
+}
+\define@key{pmdraw@brick}{brace node}{ % Sets the node options for drawing of brace
+ \renewcommand{\pmdraw@drawBraceNodeOptions}{#1}
+}
+
+\define@key{pmdraw@brick}{decorate before}{ % Hook for decorations before brick is drawn
+ \renewcommand{\pmdraw@hookBeforeBrick}{#1}
+}
+\define@key{pmdraw@brick}{decorate after}{ % Hook for decorations after brick is drawn
+ \renewcommand{\pmdraw@hookAfterBrick}{#1}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Keys for edges %
+% - ordered as per manual %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\define@key{pmdraw@NTedges}{level}{ % Sets level of non-transversal edge
+ \setcounter{pmdraw@NTlevel}{#1}
+}
+\define@key{pmdraw@NTedges}{height}{ % Sets manual height of non-transversal edge
+ \renewcommand{\pmdraw@NTedgesHeight}{#1}
+}
+\define@key{pmdraw@NTedges}{options}{ % Sets the draw command of non-transversal edge
+ \renewcommand{\pmdraw@drawUedgesDraw}[2]{#1}
+ \renewcommand{\pmdraw@drawLedgesDraw}[2]{#1}
+}
+
+\define@key{pmdraw@Tedges}{height}{ % Sets manual height of transversal edge
+ \tikzmath{
+ \pmdraw{Tlevel} = #1;
+ }
+ \renewcommand{\pmdraw@ifTedgeHorizontal}{1} % Flags manual height
+}
+\define@key{pmdraw@Tedges}{options}{ % Sets the draw command of transversal edge
+ \renewcommand{\pmdraw@drawTedgesDraw}[2]{#1}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Keys for brace %
+% - ordered as per manual %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\define@key{pmdraw@brace}{left}{ % Sets starting position of brace
+ \setcounter{pmdraw@braceL}{#1}
+}
+\define@key{pmdraw@brace}{right}{ % Sets terminating position of brace
+ \setcounter{pmdraw@braceR}{#1}
+}
+\define@key{pmdraw@brace}{label}{ % Sets label of brace
+ \renewcommand{\pmdraw@braceLabel}{#1}
+}
+\define@key{pmdraw@brace}{above}[]{ % Set flag to draw brace above diagram
+ \renewcommand{\pmdraw@ifProdDiag}{1}
+}
+\define@key{pmdraw@brace}{options}{ % Sets the draw command of brace
+ \renewcommand{\pmdraw@drawBrace}[3]{#1}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Keys for diagrams and product diagrams %
+% - ordered as per manual %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\define@key{pmdraw@diagram}{row sep}{ % Sets vertical separation between rows of vertices in diagram
+ \renewcommand{\pmdraw@rowSep}{#1}
+}
+\define@key{pmdraw@diagram}{dots options}{ % Sets the draw command of dots between bricks
+ \renewcommand{\pmdraw@drawDots}[2]{#1}
+}
+\define@key{pmdraw@diagram}{grid}[]{ % Flag for drawing coordinate grid
+ \renewcommand{\pmdraw@ifGrid}{1}
+}
+\define@key{pmdraw@diagram}{decorate before}{ % Hook before drawing diagrams
+ \renewcommand{\pmdraw@hookBeforeDiagram}{#1}
+}
+\define@key{pmdraw@diagram}{decorate after}{ % Hook after drawing diagrams
+ \renewcommand{\pmdraw@hookAfterDiagram}{#1}
+}
+
+\define@key{pmdraw@diagram}{diagram sep}{ % Sets vertical separation between bottom row of top diagram and top row of bottom diagram in product diagram
+ \renewcommand{\pmdraw@diagSep}{#1}
+}
+\define@key{pmdraw@diagram}{edges added}{ % Sets the draw options for drawing of added edges in product diagram
+ \renewcommand{\pmdraw@drawAedgesOptions}{#1}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% User commands %
+% - loosely ordered alphabetically %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\pmdBrick}[4][]{ % Draws brick
+ % #1 Options
+ % #2 Upper non-transversal edges, as list [<options>]{<left vertex>}{<right vertex>}, eg [level=1]{2}{3}
+ % #3 Lower non-transversal edges, as list [<options>]{<left vertex>}{<right vertex>}, eg [level=1]{2}{3}
+ % #4 Transversals, as list [<options>]{<upper vertex>}{<lower vertex>}, eg [level=1]{2}{3}
+ \pmdDiagram{{[#1]{#2}{#3}{#4}}} % Uses complete diagram method to draw brick
+}
+
+\newcommand{\pmdDiagram}[2][]{% Draws diagram
+ % #1 Options
+ % #2 List of bricks
+ \setkeys{pmdraw@diagram}{#1}% Processes options
+ \renewcommand{\pmdraw@ifDiagWDots}{1}% Flags that diagram has dots
+ \setcounter{pmdraw@brickShift}{0}% Reset shifting of individual bricks
+ \ifmmode% If drawing diagram in a maths equation
+ \,% Add space
+ \ifnum\pmdraw@ifGrid=1% If displaying helper grid
+ \begin{tikzpicture}[scale=.5,baseline=0.405cm,show grid=true]%
+ \else% If not displaying helper grid
+ \begin{tikzpicture}[scale=.5,baseline=0.405cm]%
+ \fi%
+ \pmdraw@hookBeforeDiagram% Hook before drawing diagrams
+ \pmdraw@bricksLoop% Commences loop for each brick to be drawn
+ #2%
+ \pmdEmpty% Terminates loop
+ \pmdraw@hookAfterDiagram% Hook after drawing diagrams
+ \end{tikzpicture}%
+ \,% Add space
+ \else% If drawing diagram in normal text
+ \raisebox{0.5cm}{% Raise diagram so bottom row is on text baseline
+ \ifnum\pmdraw@ifGrid=1% If displaying helper grid
+ \begin{tikzpicture}[scale=.5,baseline=0.405cm,show grid=true]%
+ \else% If not displaying helper grid
+ \begin{tikzpicture}[scale=.5,baseline=0.405cm]%
+ \fi%
+ \pmdraw@hookBeforeDiagram% Hook before drawing diagrams
+ \pmdraw@bricksLoop% Commences loop for each brick to be drawn
+ #2%
+ \pmdEmpty% Terminates loop
+ \pmdraw@hookAfterDiagram% Hook after drawing diagrams
+ \end{tikzpicture}%
+ }%
+ \fi%
+ \pmdraw@reset% Resets user keys and other flags to default values
+}
+
+\newcommand{\pmdEmpty}{} % Indicates no edges, internally halts input loops, always is = {}
+
+\newcommand{\pmdProduct}[4][]{% Draws product diagram
+ % #1 Options
+ % #2 List of added edges
+ % #3 Top diagram as list of bricks
+ % #4 Bottom diagram as list of bricks
+ \setkeys{pmdraw@diagram}{#1}% Processes options
+ \ifmmode% If drawing diagram in a maths equation
+ \,% Add space
+ \ifnum\pmdraw@ifGrid=1% If displaying helper grid
+ \begin{tikzpicture}[scale=.5,baseline=-.3475cm,show grid=true]%
+ \else% If not displaying helper grid
+ \begin{tikzpicture}[scale=.5,baseline=-.3475cm]%
+ \fi%
+ \pmdraw@hookBeforeDiagram% Hook before drawing diagrams
+ \pmdraw@AedgesLoop% Commences loop for added edges to be drawn
+ #2%
+ \pmdEmpty% Terminates loop
+ \renewcommand{\pmdraw@ifDiagWDots}{1}% Flags that diagram has dot
+ \renewcommand{\pmdraw@ifProdDiag}{1}% Flags that diagram is product
+ \setcounter{pmdraw@brickShift}{0}% Reset shifting of individual bricks
+ \pmdraw@bricksLoop% Commences loop for each brick to be drawn
+ #3%
+ \pmdEmpty% Terminates loop
+ \renewcommand{\pmdraw@ifProdDiag}{0}% Resets flag that diagram is product
+ \setcounter{pmdraw@ifDiagWDotsFirst}{1}% Reset if drawing first brick of diagram
+ \setcounter{pmdraw@brickShift}{0}% Reset shifting of individual bricks
+ \begin{scope}[shift={(0,-\pmdraw@diagSep-\pmdraw@rowSep)}]% Shift coordinates to be underneath top diagram
+ \pmdraw@bricksLoop% Commences loop for each brick to be drawn
+ #4%
+ \pmdEmpty% Terminates loop
+ \renewcommand{\pmdraw@ifDiagWDots}{0}% Reset if drawing a diagram with dots
+ \setcounter{pmdraw@ifDiagWDotsFirst}{1}% Reset if drawing first brick of diagram
+ \end{scope}%
+ \pmdraw@hookAfterDiagram% Hook after drawing diagrams
+ \end{tikzpicture}%
+ \,% Add space
+ \else% If drawing diagram in normal text
+ \raisebox{2cm}{% Raise diagram so bottom row is on text baseline
+ \ifnum\pmdraw@ifGrid=1% If displaying helper grid
+ \begin{tikzpicture}[scale=.5,baseline=0.405cm,show grid=true]%
+ \else% If not displaying helper grid
+ \begin{tikzpicture}[scale=.5,baseline=0.405cm]%
+ \fi%
+ \pmdraw@hookBeforeDiagram% Hook before drawing diagrams
+ \pmdraw@AedgesLoop% Commences loop for added edges to be drawn
+ #2%
+ \pmdEmpty% Terminates loop
+ \renewcommand{\pmdraw@ifDiagWDots}{1}% Flags that diagram has dot
+ \renewcommand{\pmdraw@ifProdDiag}{1}% Flags that diagram is product
+ \setcounter{pmdraw@brickShift}{0}% Reset shifting of individual bricks
+ \pmdraw@bricksLoop% Commences loop for each brick to be drawn
+ #3%
+ \pmdEmpty% Terminates loop
+ \renewcommand{\pmdraw@ifProdDiag}{0}% Resets flag that diagram is products
+ \setcounter{pmdraw@ifDiagWDotsFirst}{1}% Reset if drawing first brick of diagram
+ \setcounter{pmdraw@brickShift}{0}% Reset shifting of individual bricks
+ \begin{scope}[shift={(0,-\pmdraw@diagSep-\pmdraw@rowSep)}]% Shift coordinates to be underneath top diagram
+ \pmdraw@bricksLoop% Commences loop for each brick to be drawn
+ #4%
+ \pmdEmpty% Terminates loop
+ \renewcommand{\pmdraw@ifDiagWDots}{0}% Reset if drawing a diagram with dots
+ \setcounter{pmdraw@ifDiagWDotsFirst}{1}% Reset if drawing first brick of diagram
+ \end{scope}%
+ \pmdraw@hookAfterDiagram% Hook after drawing diagrams diagram
+ \end{tikzpicture}%
+ }%
+ \fi%
+ \pmdraw@reset% Resets user keys and other flags to default values
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% For loop commands %
+% - loosely ordered alphabetically %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\pmdraw@AedgesLoop}{% Starts loop for added edges in product diagram
+ \@ifnextchar\pmdEmpty{}{% If not at end of list
+ \pmdraw@drawAedges% Draw each edge
+ }
+}
+\newcommand{\pmdraw@bricksLoop}{% Starts loop to iterate over each brick in diagram
+ \@ifnextchar\pmdEmpty{}{% If not at end of list
+ \pmdraw@drawBrickInit% Draw each brick
+ }
+}
+\newcommand{\pmdraw@LedgesLoop}{% Starts loop for lower non-transversal edges
+ \@ifnextchar\pmdEmpty{}{% If not at end of list
+ \pmdraw@drawLedges% Draw each edge
+ }
+}
+\newcommand{\pmdraw@TedgesLoop}{% Starts loop for transversal edges
+ \@ifnextchar\pmdEmpty{}{% If not at end of list
+ \pmdraw@drawTedges% Draw each edge
+ }
+}
+\newcommand{\pmdraw@UedgesLoop}{% Starts loop for upper non-transversal edges
+ \@ifnextchar\pmdEmpty{}{% If not at end of list
+ \pmdraw@drawUedges% Draw each edge
+ }
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Draw commands %
+% - loosely ordered alphabetically %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\pmdraw@drawBottomVertices}{% Draws bottom row of vertices
+ \setcounter{pmdraw@bottomTotal}{\value{pmdraw@blankB}}% Store size of bottom row of vertices
+ \addtocounter{pmdraw@bottomTotal}{\value{pmdraw@degreeB}}% Store size of bottom row of vertices
+ \ifnum\value{pmdraw@ifDiagWDotsFirst}=1% If drawing first brick of diagram
+ \setcounter{pmdraw@ifDiagWDotsFirst}{0}% Mark that first brick has been drawn
+ \else% If not drawing first brick of diagram
+ \pmdraw@drawDots{0.5*\value{pmdraw@topShift}+0.5*\value{pmdraw@blankT}}{\pmdraw@rowSep}% Draw upper dots
+ \pmdraw@drawDots{0.5*\value{pmdraw@bottomShift}+0.5*\value{pmdraw@blankB}}{0}% Draw lower dots
+ \fi%
+ \ifnum\value{pmdraw@topTotal}>\value{pmdraw@bottomTotal}% If top row is longer than bottom row
+ \ifnum\pmdraw@ifDiagWDots=1% If drawing a diagram with dots
+ \addtocounter{pmdraw@brickShift}{\value{pmdraw@topTotal}}% Keep track of size of diagram
+ % Store shifts
+ \setcounter{pmdraw@topShift}{-\value{pmdraw@topTotal}}%
+ \addtocounter{pmdraw@topShift}{\value{pmdraw@topTotal}}%
+ \setcounter{pmdraw@bottomShift}{-\value{pmdraw@topTotal}}%
+ \addtocounter{pmdraw@bottomShift}{\value{pmdraw@bottomTotal}}%
+ \else% If drawing a diagram without dots
+ \setcounter{pmdraw@brickShift}{\value{pmdraw@topTotal}}% Keep track of size of diagram
+ \fi%
+ \else% If bottom row is longer than top row
+ \ifnum\pmdraw@ifDiagWDots=1% If drawing a diagram with dots
+ \addtocounter{pmdraw@brickShift}{\value{pmdraw@bottomTotal}}% Keep track of size of diagram
+ % Store shifts
+ \setcounter{pmdraw@topShift}{-\value{pmdraw@bottomTotal}}%
+ \addtocounter{pmdraw@topShift}{\value{pmdraw@topTotal}}%
+ \setcounter{pmdraw@bottomShift}{-\value{pmdraw@bottomTotal}}%
+ \addtocounter{pmdraw@bottomShift}{\value{pmdraw@bottomTotal}}%
+ \else% If drawing a diagram without dots
+ \setcounter{pmdraw@brickShift}{\value{pmdraw@bottomTotal}}% Keep track of size of diagram
+ \fi%
+ \fi%
+ \foreach \x in {1,...,\value{pmdraw@degreeB}} {% For each vertex in row
+ \pmdraw@drawVertex{\x + \value{pmdraw@blankB}}{0}% Draw lower vertex
+ \ifnum\pmdraw@ifLabelsB=1% If drawing labels
+ \pmdraw@drawLabelBottom{\x + \value{pmdraw@blankT}}{0}{\thepmdraw@labelStartB}% Draw label
+ \stepcounter{pmdraw@labelStartB}% Update label counter
+ \fi
+ }%
+}
+\newcommand{\pmdraw@drawBrickInit}[1]{% Initialises the drawing of a brick
+ \ifnum\value{pmdraw@ifDiagWDotsFirst}=0% If not drawing first brick in diagram
+ \stepcounter{pmdraw@brickShift}% Makes space for dots to left of current brick
+ \fi%
+ \begin{scope}[shift={(\value{pmdraw@brickShift},0)}]% Shift brick to the right of already drawn bricks
+ \pmdraw@drawBrick#1% Draw brick
+ \end{scope}%
+ \pmdraw@bricksLoop% Restart for loop
+}
+\newcommand{\pmdraw@drawBrick}[4][]{% Draws a brick
+ % #1 Options
+ % #2 Upper non-transversal edges, as list [<options>]{<left vertex>}{<right vertex>}, eg [level=1]{2}{3}
+ % #3 Lower non-transversal edges, as list [<options>]{<left vertex>}{<right vertex>}, eg [level=1]{2}{3}
+ % #4 Transversals, as list [<options>]{<upper vertex>}{<lower vertex>}, eg [level=1]{2}{3}
+ \setkeys{pmdraw@brick}{levels,#1}% Processes options and set default levels
+ \pmdraw@hookBeforeBrick% Hook before drawing brick
+ \ifnum\pmdraw@ifEdgesFirst=0% If drawing vertices first
+ \pmdraw@drawTopVertices% Draw base diagram
+ \pmdraw@drawBottomVertices% Draw base diagram
+ \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \else% If drawing transversal first
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \fi%
+ \else % If drawing edges first
+ \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \else% If drawing transversal first
+ \pmdraw@TedgesLoop% Draws transversals
+ #4%
+ \pmdEmpty%
+ \pmdraw@UedgesLoop% Draws upper edges
+ #2%
+ \pmdEmpty%
+ \pmdraw@LedgesLoop% Draws lower edges
+ #3%
+ \pmdEmpty%
+ \fi%
+ \pmdraw@drawTopVertices% Draw base diagram
+ \pmdraw@drawBottomVertices% Draw base diagram
+ \fi%
+ \pmdraw@hookAfterBrick% Hook after drawing brick
+ % Resets user keys and other flags to default values
+ \renewcommand{\pmdraw@drawBraceDrawOptions}{}%
+ \renewcommand{\pmdraw@drawBraceNodeOptions}{}%
+ \renewcommand{\pmdraw@drawDotsDrawOptions}{}%
+ \renewcommand{\pmdraw@drawDotsNodeOptions}{}%
+ \renewcommand{\pmdraw@drawLabelBDrawOptions}{}%
+ \renewcommand{\pmdraw@drawLabelBNodeOptions}{}%
+ \renewcommand{\pmdraw@drawLabelTDrawOptions}{}%
+ \renewcommand{\pmdraw@drawLabelTNodeOptions}{}%
+ \renewcommand{\pmdraw@drawLedgesDrawOptions}{}%
+ \renewcommand{\pmdraw@drawTedgesDrawOptions}{}%
+ \renewcommand{\pmdraw@drawUedgesDrawOptions}{}%
+ \renewcommand{\pmdraw@drawVertexOptions}{}%
+ \renewcommand{\pmdraw@hookBeforeBrick}{}%
+ \renewcommand{\pmdraw@hookAfterBrick}{}%
+ \renewcommand{\pmdraw@ifEdgesFirst}{0}%
+ \renewcommand{\pmdraw@ifLabelsB}{0}%
+ \renewcommand{\pmdraw@ifLabelsT}{0}%
+ \renewcommand{\pmdraw@ifTedgesFirst}{0}%
+ \let\pmdraw@drawLabelBottom\pmdraw@drawLabelBottomDefault%
+ \let\pmdraw@drawLabelTop\pmdraw@drawLabelTopDefault%
+ \let\pmdraw@drawLabelBottom\pmdraw@drawLabelBottomDefault%
+ \setcounter{pmdraw@blankB}{0}%
+ \setcounter{pmdraw@blankT}{0}%
+ \setcounter{pmdraw@labelStartB}{1}%
+ \setcounter{pmdraw@labelStartT}{1}%
+}
+\newcommand{\pmdraw@drawLedges}[3][]{% Draws lower non-transversal edge, #1 options, #2 L vertex, #3 R vertex
+ \setcounter{pmdraw@NTlevel}{1}% Store default level of edge
+ \setkeys{pmdraw@NTedges}{#1}% Processes options
+ \ifdim\pmdraw@NTedgesHeight pt=-1000pt% If using default heights
+ \tikzmath{%
+ \pmdraw{edgeHeight}=\value{pmdraw@NTlevel}*\pmdraw{edgeSepL};% Calculates height based on level of edge
+ }%
+ \else% If using manual heights
+ \tikzmath{%
+ \pmdraw{edgeHeight}=\pmdraw@NTedgesHeight;% Set manual height
+ }%
+ \fi%
+ \pmdraw@drawLedgesDraw{#2}{#3}% Draw edge
+ % Resets user keys and other flags to default values
+ \renewcommand{\pmdraw@NTedgesHeight}{-1000}%
+ \let\pmdraw@drawLedgesDraw\pmdraw@drawLedgesDrawDefault%
+ \pmdraw@LedgesLoop% Restart for loop
+}
+\newcommand{\pmdraw@drawTedges}[3][]{% Draws transversal edge, #1 options, #2 upper vertex, #3 lower vertex
+ \setkeys{pmdraw@Tedges}{#1}% Processes options
+ \pmdraw@drawTedgesDraw{#2}{#3}% Draw edge
+ \let\pmdraw@drawTedgesDraw\pmdraw@drawTedgesDrawDefault% Resets user keys and other flags to default values
+ \pmdraw@TedgesLoop% Restart for loop
+}
+\newcommand{\pmdraw@drawTopVertices}{% Draws top row of vertices
+ \setcounter{pmdraw@topTotal}{\value{pmdraw@blankT}}% Store size of top row of vertices
+ \addtocounter{pmdraw@topTotal}{\value{pmdraw@degreeT}}% Store size of top row of vertices
+ \foreach \x in {1,...,\value{pmdraw@degreeT}} {% For each vertex in row
+ \pmdraw@drawVertex{\x + \value{pmdraw@blankT}}{\pmdraw@rowSep}% Draw upper vertex
+ \ifnum\pmdraw@ifLabelsT=1% If drawing labels
+ \pmdraw@drawLabelTop{\x + \value{pmdraw@blankT}}{\pmdraw@rowSep}{\thepmdraw@labelStartT}% Draw label
+ \stepcounter{pmdraw@labelStartT}% Update label counter
+ \fi
+ }%
+}
+\newcommand{\pmdraw@drawUedges}[3][]{% Draws upper non-transversal edge, #1 options, #2 L vertex, #3 R vertex
+ \setcounter{pmdraw@NTlevel}{1}% Store default level of edge
+ \setkeys{pmdraw@NTedges}{#1}% Processes options
+ \ifdim\pmdraw@NTedgesHeight pt=-1000pt% If using default heights
+ \tikzmath{
+ \pmdraw{edgeHeight}=\value{pmdraw@NTlevel}*\pmdraw{edgeSepU};% Calculates height based on level of edge
+ }
+ \else% If using manual heights
+ \tikzmath{
+ \pmdraw{edgeHeight}=\pmdraw@rowSep-\pmdraw@NTedgesHeight;% Set manual height
+ }
+ \fi%
+ \pmdraw@drawUedgesDraw{#2}{#3}% Draw edge
+ % Resets user keys and other flags to default values
+ \renewcommand{\pmdraw@NTedgesHeight}{-1000}%
+ \let\pmdraw@drawLedgesDraw\pmdraw@drawLedgesDrawDefault%
+ \let\pmdraw@drawUedgesDraw\pmdraw@drawUedgesDrawDefault%
+ \pmdraw@UedgesLoop% Restart for loop
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Grid creation %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% This is a verbatim copy of:
+% https://tex.stackexchange.com/a/467908
+
+\newif\if@showgrid@grid
+\newif\if@showgrid@left
+\newif\if@showgrid@right
+\newif\if@showgrid@below
+\newif\if@showgrid@above
+\tikzset{%
+ every show grid/.style={},
+ show grid/.style={execute at end picture={\@showgrid{grid=true,#1}}},%
+ show grid/.default={true},
+ show grid/.cd,
+ labels/.style={font={\sffamily\small},help lines},
+ xlabels/.style={},
+ ylabels/.style={},
+ keep bb/.code={\useasboundingbox (current bounding box.south west) rectangle (current bounding box.north west);},
+ true/.style={left,below},
+ false/.style={left=false,right=false,above=false,below=false,grid=false},
+ none/.style={left=false,right=false,above=false,below=false},
+ all/.style={left=true,right=true,above=true,below=true},
+ grid/.is if=@showgrid@grid,
+ left/.is if=@showgrid@left,
+ right/.is if=@showgrid@right,
+ below/.is if=@showgrid@below,
+ above/.is if=@showgrid@above,
+ false,
+}
+
+\def\@showgrid#1{%
+ \begin{scope}[every show grid,show grid/.cd,#1]
+ \if@showgrid@grid
+ \begin{pgfonlayer}{background}
+ \draw [help lines]
+ (current bounding box.south west) grid
+ (current bounding box.north east);
+%
+ \pgfpointxy{1}{1}%
+ \edef\xs{\the\pgf@x}%
+ \edef\ys{\the\pgf@y}%
+ \pgfpointanchor{current bounding box}{south west}
+ \edef\xa{\the\pgf@x}%
+ \edef\ya{\the\pgf@y}%
+ \pgfpointanchor{current bounding box}{north east}
+ \edef\xb{\the\pgf@x}%
+ \edef\yb{\the\pgf@y}%
+ \pgfmathtruncatemacro\xbeg{ceil(\xa/\xs)}
+ \pgfmathtruncatemacro\xend{floor(\xb/\xs)}
+ \if@showgrid@below
+ \foreach \X in {\xbeg,...,\xend} {
+ \node [below,show grid/labels,show grid/xlabels] at (\X,\ya) {\X};
+ }
+ \fi
+ \if@showgrid@above
+ \foreach \X in {\xbeg,...,\xend} {
+ \node [above,show grid/labels,show grid/xlabels] at (\X,\yb) {\X};
+ }
+ \fi
+ \pgfmathtruncatemacro\ybeg{ceil(\ya/\ys)}
+ \pgfmathtruncatemacro\yend{floor(\yb/\ys)}
+ \if@showgrid@left
+ \foreach \Y in {\ybeg,...,\yend} {
+ \node [left,show grid/labels,show grid/ylabels] at (\xa,\Y) {\Y};
+ }
+ \fi
+ \if@showgrid@right
+ \foreach \Y in {\ybeg,...,\yend} {
+ \node [right,show grid/labels,show grid/ylabels] at (\xb,\Y) {\Y};
+ }
+ \fi
+ \end{pgfonlayer}
+ \fi
+ \end{scope}
+}
+\tikzset{every show grid/.style={show grid/keep bb}}% Keep the original bounding box!
+
+\endinput \ No newline at end of file
diff --git a/graphics/pmdraw/pmdraw.tex b/graphics/pmdraw/pmdraw.tex
new file mode 100644
index 0000000000..a3c9a93fb7
--- /dev/null
+++ b/graphics/pmdraw/pmdraw.tex
@@ -0,0 +1,2811 @@
+\documentclass{ltxdoc}
+
+% *------------------------------*
+% |2````````````````````````````7|
+% |`````____````____`````````````|
+% |````|MFMF\ /MFMF|````````````|
+% |````|MF|MF\/MF|MF|````````````|
+% |````|MF|\MFMF/|MF|_______`````|
+% |````|MF|``````|MFMFMFMFMF|````|
+% |````|MF|``````|MF|````````````|
+% |````|MF|``````|MF|___`````````|
+% |``````````````|MFMFMF|````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |``````````````|MF|````````````|
+% |8````````````````````````````2|
+% *------------------------------*
+
+\usepackage{pmdraw}
+\usepackage{xcolor}
+\usepackage{fancyvrb}
+\usepackage{hyperref}
+
+\begin{document}
+
+\hypersetup{colorlinks, linkcolor=blue, urlcolor=blue}
+
+\title{The \textsf{pmdraw} package\thanks{This document
+ corresponds to \textsf{pmdraw}~v1.0, 2023-11-08.}}
+\author{Matthias Fresacher \\ \texttt{matthias.ypg37@slmail.me}}
+
+\maketitle
+
+\begin{abstract}
+The \texttt{pmdraw} package allows you to draw elements of the Partition Monoids, commonly referred to diagrams. The package provides a lot of flexibility to draw most diagrams and can be customised as needed.
+\end{abstract}
+
+\tableofcontents
+
+\newpage
+\section{Introduction}
+
+\subsection{Motivation}
+
+Partition monoids and their closely related algebras are well studied objects with applications in theoretical physics and representation theory in mathematics. The elements of these monoids are called diagrams because they can be drawn graphically as a graph following certain conventions.
+
+My PhD thesis examines properties of these partition monoids and hence I needed to draw a large number of diagrams in a neat and consistent way. This thesis work formed the basis of this package with only customisability and the manual needed to be added to complete this package.
+
+\subsection{Acknowledgments}
+
+Most importantly, I thank James East, my PhD supervisor for allowing me to get a little sidetracked in my PhD research and develop and publish this package rather than work on my thesis like I should have.
+
+This package has at its core the basic drawing macro of a diagram as used by James East and Nik Ru\v{s}kuc in their 2022 publication {\it Classification of congruences of twisted partition monoids} in Advances in Mathematics. I thank them both for allowing me to build on their work.
+
+I thank everybody that has helped me proof read, spot bugs, provide feedback, suggest improvements or has otherwise contributed to this package. Those that are happy to be named are (in chronological order):
+\begin{itemize}
+ \item Nik Ru\v{s}kuc
+\end{itemize}
+
+This package heavily uses commands that can accept an arbitrary number of arguments as inputs. I thank \texttt{egreg} for their template upon which my commands are based (\url{https://tex.stackexchange.com/a/72915}).
+
+As this was my first time using keys, I thank David Carlisle for their very helpful example (\url{https://tex.stackexchange.com/a/542555}).
+
+As it turns out, passing my keys to the \verb`\draw` command of \texttt{tikz} is a little more tricky than one might expect. I thank Andrew Stacey for their solution (\url{https://tex.stackexchange.com/a/64237}).
+
+I thank Partha~D.~for their ready to use out of the box macro for adding grid lines to a \texttt{tikz} drawing (\url{https://tex.stackexchange.com/a/467908}).
+
+I also thank everybody on \url{https://tex.stackexchange.com} who has answered a questions or solved a problem. There are too many to list you all. Thank you.
+
+\section{Bugs and known problems}
+
+\subsection{Bugs}
+
+If you discover a bug, please be so kind and send me a minimum working example of the bug in action and I will work on fixing it.
+
+I would like this package to be as perfect as it can be but I will need your help with this as there simply are too many keys to test every combination or use case.
+
+The following are a list of currently known bugs that will be addressed:
+\begin{enumerate}
+ \item None at the moment
+\end{enumerate}
+
+\subsection{Incompatibilities}
+
+The following are a list of known problems or incompatibilities that are not scheduled to be resolved anytime soon:
+\begin{enumerate}
+ \item None at the moment
+\end{enumerate}
+
+\section{Usage}
+
+To use the package, one must understand that all diagrams are created from a basic building block called a brick.
+
+\subsection{Bricks}
+
+\DescribeMacro{brick}
+A \texttt{brick} is a diagram that contains no dots. For example,
+\begin{center}
+ \pmdBrick[ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+ }{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+ }{ % Transversal edges
+ {1}{1}
+ {3}{4}
+ }
+\end{center}
+is a brick whilst
+\begin{center}
+ \pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=2
+ ]{ % Upper non-transversal edges
+ {1}{2}
+ }{ % Lower non-transversal edges
+ {1}{2}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+ }
+\end{center}
+is not a brick.
+\DescribeMacro{<brick>}
+The syntax for a brick contains four components and is as follows:
+\begin{center}
+ \texttt{<brick>~=~[<options>]\{<Uedges>\}\{<Ledges>\}\{<Tedges>\}}
+\end{center}
+where
+\DescribeMacro{brick/<options>}
+the \texttt{<options>} are described in Section~\ref{sec: brick/options}.
+
+\DescribeMacro{<Uedges>}
+is a list of upper non-transversal edges. An upper non-transversal edges has three components \texttt{<Uedges>~=~[<options>]\{<Svertex>\}\{<Tvertex>\}} where
+\DescribeMacro{Uedges/<options>}\DescribeMacro{Ledges/<options>}
+the \texttt{<options>} are described in Section~\ref{sec: NT edge/options},
+\DescribeMacro{<Svertex>}
+\texttt{\{<Svertex>\}} is the starting vertex and
+\DescribeMacro{<Tvertex>}
+\texttt{\{<Tvertex>\}} is the terminating vertex of the edge. Both \texttt{\{<Svertex>\}} and \texttt{\{<Tvertex>\}} are a \( x \)-coordinate and it is assumed that \( \texttt{\{<Svertex>\}} < \texttt{\{<Tvertex>\}} \).
+
+\DescribeMacro{list}
+A \texttt{list} of upper non-transversal edges is simply each upper non-transversal edge written after the other. For example a list with one upper non-transversal edges is
+\begin{verbatim}
+ {1}{2}
+\end{verbatim}
+whilst one with three upper non-transversal edges may be
+\begin{verbatim}
+ {1}{2}[level=1]{3}{4}{5}{6}
+\end{verbatim}
+For ease of reading this will coded as
+\begin{verbatim}
+ {1}{2}
+ [level=1]{3}{4}
+ {5}{6}
+\end{verbatim}
+\DescribeMacro{\pmdEmpty}
+Should a list be empty, the command \verb`\pmdEmpty` should be used.
+
+\DescribeMacro{<Ledges>}
+is a list of lower non-transversal edges. A lower non-transversal edges has the same three components as an upper non-transversal edge, namely \texttt{<Ledges>~=~[<options>]\{<Svertex>\}\{<Tvertex>\}}.
+
+\DescribeMacro{<Tedges>}
+is a list of transversal edges. A transversal edges has three components \texttt{<Tedges>~=~[<options>]\{<Tvertex>\}\{<Bvertex>\}} where
+\DescribeMacro{Tedges/<options>}
+the \texttt{<options>} are described in Section~\ref{sec: T edge/options},
+\DescribeMacro{<Tvertex>}
+\texttt{\{<Tvertex>\}} is the top vertex and
+\DescribeMacro{<Bvertex>}
+\texttt{\{<Bvertex>\}} is the bottom vertex of the edge. Both \texttt{\{<Tvertex>\}} and \texttt{\{<Bvertex>\}} are a \( x \)-coordinate.
+
+An example \texttt{<brick>} and the resultant diagram is:
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+ {4}{5}
+}{ % Transversal edges
+ \pmdEmpty
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+ {4}{5}
+}{ % Transversal edges
+ \pmdEmpty
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\subsection{Draw commands}
+
+This package has three draw commands.
+
+\DescribeMacro{\pmdBrick}
+draws a brick and has the syntax \verb`\pmdBrick<brick>`.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+ {4}{5}
+}{ % Transversal edges
+ \pmdEmpty
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+ {4}{5}
+}{ % Transversal edges
+ \pmdEmpty
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\DescribeMacro{\pmdDiagram}
+draws arbitrarily many bricks separated by dots and has the syntax
+\begin{verbatim}
+\pmdDiagram[<options>]{<bricks>}
+\end{verbatim}
+where
+\DescribeMacro{diagram/<options>}
+the \texttt{<options>} are described in Section~\ref{sec: diagram/options} and
+\DescribeMacro{<bricks>}
+\texttt{<bricks>} is a list of \texttt{<brick>}-s, with each brick enclosed in curly brackets.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace={
+ left=1,
+ right=4,
+ label={n}
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=1
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace={
+ left=1,
+ right=4,
+ label={n}
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=1
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{center}
+
+It should be noted that \verb`\pmdBrick` is simply a wrapper for a single brick that calls \verb`\pmdDiagram` with no diagram options. This means that, for example, the \texttt{grid} key is not available for \verb`\pmdBrick` and \verb`\pmdDiagram` must be used instead to access the \texttt{grid} key.
+
+For edges that go across multiple bricks, know that the coordinate positions of the vertices extends infinitely in both directions. If using default settings, the dots between bricks occupies one vertex position. To help with counting and identifying the correct coordinate position, the \texttt{grid} flag may also be used, see Section~\ref{sec: diagram/options all}.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=3,
+ brace={
+ left=2,
+ right=6,
+ label={n}
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{6}
+ {3}{5}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=2
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{-1}
+ {2}{-2}
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=3,
+ brace={
+ left=2,
+ right=6,
+ label={n}
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{6}
+ {3}{5}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=2
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{-1}
+ {2}{-2}
+ }
+ }
+}
+\end{center}
+
+\DescribeMacro{\pmdProduct}
+draws two diagrams on top of each other as is the case during multiplication or concatenation and has the syntax
+\begin{verbatim}
+\pmdProduct[<options>]{<Aedges>}{<Tbricks>}{<Bbricks>}
+\end{verbatim}
+where
+\DescribeMacro{diagram/<options>}
+the \texttt{<options>} are described in Section~\ref{sec: diagram/options}.
+
+\DescribeMacro{<Aedges>}
+is a list of edges that are added during the concatenation process. An added edge has two components, namely \texttt{<Aedges>~=~\{<Svertex>\}\{<Tvertex>\}}, where \texttt{\{<Svertex>\}} is the starting vertex and \texttt{\{<Tvertex>\}} is the terminating vertex of the collection of added edges. Both \texttt{\{<Svertex>\}} and \texttt{\{<Tvertex>\}} are a \( x \)-coordinate and it is assumed that \( \texttt{\{<Svertex>\}} < \texttt{\{<Tvertex>\}} \).
+
+\DescribeMacro{<Tbricks>}
+is a list of bricks that correspond to the top diagram, with each brick enclosed in curly brackets.
+
+\DescribeMacro{<Bbricks>}
+is a list of bricks that correspond to the bottom diagram, with each brick enclosed in curly brackets.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdProduct{ % Added edges
+ {1}{5}
+ {7}{8}
+}{ % Top diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ {3}{3}
+ {4}{4}
+ {5}{5}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=2
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }
+}{ % Bottom diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=2
+ ]{ % Upper non-transversal edges
+ {1}{2}
+ }{ % Lower non-transversal edges
+ {1}{2}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdProduct{ % Added edges
+ {1}{5}
+ {7}{8}
+}{ % Top diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ {3}{3}
+ {4}{4}
+ {5}{5}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=2
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }
+}{ % Bottom diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=2
+ ]{ % Upper non-transversal edges
+ {1}{2}
+ }{ % Lower non-transversal edges
+ {1}{2}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}
+\end{center}
+
+\subsection{Brick options} \label{sec: brick/options}
+
+The following are all of the keys that are available for bricks.
+
+\subsubsection{Vertex options}
+
+\DescribeMacro{degree}
+specifies the degree, that is, the number of vertices in the top and bottom row of the diagram. Must be a positive integer and must be provided unless using \texttt{degree top} and \texttt{degree bottom}.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\DescribeMacro{degree top} \DescribeMacro{degree bottom}
+specifies the degree, that is, the number of vertices in the top (bottom) row of the diagram. Must be a positive integer and must be provided as a pair \texttt{degree top} and \texttt{degree bottom}.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree top=5,
+ degree bottom=4
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree top=5,
+ degree bottom=4
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\DescribeMacro{blank top} \DescribeMacro{blank bottom}
+specifies the number of blank vertices to the left of the top (bottom) row of the diagram. Default is zero.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ blank top=1,
+ degree top=4,
+ degree bottom=5
+]{ % Upper non-transversal edges
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ blank top=1,
+ degree top=4,
+ degree bottom=5
+]{ % Upper non-transversal edges
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {3}{4}
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+It should also be noted that the \texttt{blank top} and \texttt{blank bottom} can also be used to create more space between bricks and the dots between bricks by setting a large number. Likewise if set to \( -1 \) and the dots is redefined to not draw, the space between bricks can be removed altogether. See Examples~13-15.
+
+\DescribeMacro{row sep}
+specifies the vertical separation between rows of vertices. Default is two.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ row sep=4
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5,
+ row sep=4
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\DescribeMacro{vertices}
+passes through options to the \verb`\draw` command of vertices. The default is no argument.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ vertices=blue
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5,
+ vertices=blue
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\DescribeMacro{vertices options}
+allows for the redefinition of the command that draws the vertices. It has two arguments, the \( x \) and \( y \)-position of the vertex. The default is
+\begin{verbatim}
+\fill[apply style/.expand once=\pmdraw@drawVertexOptions] (#1,#2) circle (.17);
+\end{verbatim}
+An example use is
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ vertices options={
+ \draw[very thick] (#1,#2) circle (.25);
+ }
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdBrick[ % Options
+ degree=5,
+ vertices options={
+ \draw[very thick] (#1,#2) circle (.25);
+ }
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{center}
+
+\DescribeMacro{labels}\DescribeMacro{labels top}\DescribeMacro{labels bottom}
+flags that allow for the drawing of labels for the vertices. Use \texttt{labels} for labels on both the top and bottom or set individually. The default is no labels.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ labels bottom
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5,
+ labels bottom
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\DescribeMacro{labels start}\DescribeMacro{labels top start}\DescribeMacro{labels bottom start}
+sets the starting value of the labels for the vertices. The default is one.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ labels,
+ labels top start=3,
+ labels bottom start=-2
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5,
+ labels,
+ labels top start=3,
+ labels bottom start=-2
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\DescribeMacro{labels top draw}\DescribeMacro{labels top node}\DescribeMacro{labels bottom draw}\DescribeMacro{labels bottom node}
+passes through options to the \verb`\draw` and \verb`node` command of the labels of vertices. The default is no argument.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ labels,
+ labels top node=red,
+ labels bottom node={right=2pt}
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdBrick[ % Options
+ degree=5,
+ labels,
+ labels top node=red,
+ labels bottom node={right=2pt}
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{center}
+
+\DescribeMacro{labels top options}\DescribeMacro{labels bottom options}
+allows for the redefinition of the command that draws the labels of the vertices. They have three arguments, the \( x \) and \( y \)-position of the vertex and the label value. The default for the top is
+\begin{verbatim}
+\draw[apply style/.expand once=\pmdraw@drawLabelTDrawOptions] (#1,#2)
+ node[above=6pt,apply style/.expand once=\pmdraw@drawLabelTNodeOptions] {\(#3\)};
+\end{verbatim}
+and for the bottom
+\begin{verbatim}
+\draw[apply style/.expand once=\pmdraw@drawLabelBDrawOptions] (#1,#2)
+ node[below=6pt,apply style/.expand once=\pmdraw@drawLabelBNodeOptions] {\(#3'\)};
+\end{verbatim}
+An example use is
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ labels,
+ labels bottom options={
+ \draw (#1,#2) node[below=6pt,blue] {\(#3''\)};
+ }
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdBrick[ % Options
+ degree=5,
+ labels,
+ labels bottom options={
+ \draw (#1,#2) node[below=6pt,blue] {\(#3''\)};
+ }
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{center}
+
+\DescribeMacro{no dots}
+The \texttt{no dots} flag removes the drawing of dots to the left of the current brick in diagrams. Default is to draw dots except for the first brick.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace={
+ left=1,
+ right=4,
+ label={n}
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=1,
+ no dots
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace={
+ left=1,
+ right=4,
+ label={n}
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=1,
+ no dots
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{center}
+
+
+\DescribeMacro{dots draw}\DescribeMacro{dots node}
+passes through options to the \verb`\draw` and \verb`node` command of the dots. The default is no argument.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace={
+ left=1,
+ right=4,
+ label={n}
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=1,
+ dots node=red
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace={
+ left=1,
+ right=4,
+ label={n}
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=1,
+ dots node=red
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{center}
+
+\subsubsection{Edge options}
+
+These options should be read in conjunction with Section~\ref{sec: edge/options}.
+
+\DescribeMacro{levels}
+specifies how many horizontal levels there are for non-transversal edges. Default is one.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ levels=3
+]{ % Upper non-transversal edges
+ [level=3]{1}{5}
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Lower non-transversal edges
+ [level=3]{1}{5}
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Transversal edges
+ \pmdEmpty
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5,
+ levels=3
+]{ % Upper non-transversal edges
+ [level=3]{1}{5}
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Lower non-transversal edges
+ [level=3]{1}{5}
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Transversal edges
+ \pmdEmpty
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\DescribeMacro{levels top} \DescribeMacro{levels bottom}
+specifies how many horizontal levels there are for upper (lower) non-transversal edges. Default is one.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ levels top=3,
+ levels bottom=2
+]{ % Upper non-transversal edges
+ [level=3]{1}{5}
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Lower non-transversal edges
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Transversal edges
+ \pmdEmpty
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5,
+ levels top=3,
+ levels bottom=2
+]{ % Upper non-transversal edges
+ [level=3]{1}{5}
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Lower non-transversal edges
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Transversal edges
+ \pmdEmpty
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\DescribeMacro{levels sep}
+specifies the vertical separation between horizontal levels for non-transversal edges. Default is evenly spaced within the space available for the given number of \texttt{levels}.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ levels=3,
+ levels sep=0.3
+]{ % Upper non-transversal edges
+ [level=3]{1}{5}
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Lower non-transversal edges
+ [level=3]{1}{5}
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Transversal edges
+ \pmdEmpty
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5,
+ levels=3,
+ levels sep=0.3
+]{ % Upper non-transversal edges
+ [level=3]{1}{5}
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Lower non-transversal edges
+ [level=3]{1}{5}
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Transversal edges
+ \pmdEmpty
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\DescribeMacro{levels sep top} \DescribeMacro{levels sep bottom}
+specifies the vertical separation between horizontal levels for upper (lower) non-transversal edges. Default is evenly spaced within the space available for the given number of \texttt{levels}.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ levels=3,
+ levels sep top=0.4,
+ levels sep bottom=0.15
+]{ % Upper non-transversal edges
+ [level=3]{1}{5}
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Lower non-transversal edges
+ [level=3]{1}{5}
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Transversal edges
+ \pmdEmpty
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5,
+ levels=3,
+ levels sep top=0.4,
+ levels sep bottom=0.15
+]{ % Upper non-transversal edges
+ [level=3]{1}{5}
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Lower non-transversal edges
+ [level=3]{1}{5}
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Transversal edges
+ \pmdEmpty
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\DescribeMacro{edges}\DescribeMacro{edges non-transversal}\DescribeMacro{edges upper}\DescribeMacro{edges lower}\DescribeMacro{edges transversal}
+pass through options to the \verb`\draw` command of their respective edge types. The default is no argument.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ edges upper=blue,
+ edges lower={red, dotted, very thick},
+ edges transversal=dashed
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdBrick[ % Options
+ degree=5,
+ edges upper=blue,
+ edges lower={red, dotted, very thick},
+ edges transversal=dashed
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{center}
+
+\DescribeMacro{edges first}
+flag ensures edges are drawn before vertices. The default is vertices are drawn first.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ edges lower={red, very thick},
+ edges first
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5,
+ edges lower={red, very thick},
+ edges first
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\DescribeMacro{transversals first}
+flag ensures transversal edges are drawn before non-transversal edges. The default is non-transversal edges are drawn first.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ edges lower={red, very thick},
+ transversals first
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5,
+ edges lower={red, very thick},
+ transversals first
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\subsubsection{Brace}
+
+\DescribeMacro{brace}
+specifies instructions for the drawing of a brace with the brace keys. These are described in Section~\ref{sec: brace}. The default is no brace is drawn.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace={
+ left=1,
+ right=4,
+ label={n}
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=1
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace={
+ left=1,
+ right=4,
+ label={n}
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=1
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{center}
+
+\DescribeMacro{brace draw}\DescribeMacro{brace node}
+passes through options to the \verb`\draw` and \verb`node` command of the brace. Must be given before the \texttt{brace} key. The default is no argument.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace draw=thin,
+ brace node={pos=0.25},
+ brace={
+ left=1,
+ right=4,
+ label={n}
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=1
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace draw=thin,
+ brace node={pos=0.25},
+ brace={
+ left=1,
+ right=4,
+ label={n}
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=1
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{center}
+
+\subsubsection{Decorations}
+
+\DescribeMacro{decorate before}\DescribeMacro{decorate after}
+provides a hook to draw additional \texttt{tikz} elements before and after the brick is drawn. The default is empty.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ decorate after={
+ \draw[
+ very thick,
+ red,
+ rounded corners=5pt
+ ] (0.6, -0.4) rectangle (1.4, 2.4);
+ }
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdBrick[ % Options
+ degree=5,
+ decorate after={
+ \draw[
+ very thick,
+ red,
+ rounded corners=5pt
+ ] (0.6, -0.4) rectangle (1.4, 2.4);
+ }
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ {1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{center}
+
+These hooks can also be used for more sophisticated manipulation of diagrams be inserting not just \texttt{tikz} elements but arbitrary code before and after draw a brick.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=4
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ }{ % Transversal edges
+ {1}{1}
+ {4}{4}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=3,
+ decorate before={\begin{scope}[red,shift={(1,1)},rotate=30]},
+ decorate after={\end{scope}}
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{2}
+ {2}{3}
+ {3}{1}
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=4
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ }{ % Transversal edges
+ {1}{1}
+ {4}{4}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=3,
+ decorate before={\begin{scope}[red,shift={(1,1)},rotate=30]},
+ decorate after={\end{scope}}
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{2}
+ {2}{3}
+ {3}{1}
+ }
+ }
+}
+\end{center}
+
+\subsubsection{Drawing order} \label{sec: order}
+
+For clarity, this is the default drawing order for a brick:
+\begin{enumerate}
+ \item \texttt{decorate before}
+ \item Top row of vertices
+ \item Bottom row of vertices
+ \item Upper non-transversal edges
+ \item Lower non-transversal edges
+ \item Transversal edges
+ \item \texttt{decorate after}
+\end{enumerate}
+
+This order can be altered using the \texttt{edges first} and \texttt{transversals first} flags.
+
+For the drawing order of a diagram and product diagram, see the \texttt{decorate before} and \texttt{decorate after} keys in Section~\ref{sec: diagram/options all}.
+
+\subsection{Edge options} \label{sec: edge/options}
+
+\subsubsection{non-transversal edge options} \label{sec: NT edge/options}
+
+\DescribeMacro{level}
+specifies the horizontal level of a non-transversal edges. Default is one.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5,
+ levels=3
+]{ % Upper non-transversal edges
+ [level=3]{1}{5}
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Lower non-transversal edges
+ [level=3]{1}{5}
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Transversal edges
+ \pmdEmpty
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5,
+ levels=3
+]{ % Upper non-transversal edges
+ [level=3]{1}{5}
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Lower non-transversal edges
+ [level=3]{1}{5}
+ [level=2]{1}{4}
+ [level=1]{2}{3}
+}{ % Transversal edges
+ \pmdEmpty
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\DescribeMacro{height}
+specifies a manually set horizontal height of a non-transversal edges. Default is to use levels.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5
+]{ % Upper non-transversal edges
+ {1}{5}
+ [height=1.75]{1}{4}
+}{ % Lower non-transversal edges
+ [height=1.25]{1}{5}
+ {1}{4}
+}{ % Transversal edges
+ \pmdEmpty
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+\pmdBrick[ % Options
+ degree=5
+]{ % Upper non-transversal edges
+ {1}{5}
+ [height=1.75]{1}{4}
+}{ % Lower non-transversal edges
+ [height=1.25]{1}{5}
+ {1}{4}
+}{ % Transversal edges
+ \pmdEmpty
+}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+
+\DescribeMacro{options}
+allows for the redefinition of the command that draws the non-transversal edge. It has two arguments, the start and end \( x \)-position of the edge. The default for an upper non-transversal is
+\begin{verbatim}
+ \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions]
+ (#1,\pmdraw@rowSep) arc (180:270:\pmdraw{edgeHeight}); % Draw left arch
+ \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions]
+ (#1+\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight})
+ -- (#2-\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight}); % Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions]
+ (#2-\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight})
+ arc (270:360:\pmdraw{edgeHeight}); % Draw right arc
+\end{verbatim}
+and for a lower non-transversal
+\begin{verbatim}
+ \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions]
+ (#1,0) arc (180:90:\pmdraw{edgeHeight}); % Draw left arch
+ \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions]
+ (#1+\pmdraw{edgeHeight},\pmdraw{edgeHeight})
+ -- (#2-\pmdraw{edgeHeight},\pmdraw{edgeHeight}); % Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions]
+ (#2-\pmdraw{edgeHeight},\pmdraw{edgeHeight})
+ arc (90:0:\pmdraw{edgeHeight}); % Draw right arc
+\end{verbatim}
+An example use is
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdBrick[ % Options
+ degree=5
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ [options={
+ \draw[blue, very thick] (#1,0) -- (#2,0);
+ }]{1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdBrick[ % Options
+ degree=5
+]{ % Upper non-transversal edges
+ {1}{2}
+ {2}{5}
+}{ % Lower non-transversal edges
+ [options={
+ \draw[blue, very thick] (#1,0) -- (#2,0);
+ }]{1}{2}
+ {3}{4}
+}{ % Transversal edges
+ {1}{1}
+ {3}{4}
+}
+\end{center}
+
+\subsubsection{Transversal edge options} \label{sec: T edge/options}
+
+\DescribeMacro{height}
+draws transversal edges with a horizontal component and specifies the manually set horizontal height of the transversal edges. Default is to use non-horizontal transversal edges.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree top=5,
+ degree bottom=6
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non-transversal edges
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ [height=1]{10}{2}
+ {1}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree top=3,
+ blank bottom=1,
+ degree bottom=2
+ ]{ % Upper non-transversal edges
+ {1}{2}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree top=5,
+ degree bottom=6
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non-transversal edges
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ [height=1]{10}{2}
+ {1}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree top=3,
+ blank bottom=1,
+ degree bottom=2
+ ]{ % Upper non-transversal edges
+ {1}{2}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}
+\end{center}
+
+\DescribeMacro{options}
+allows for the redefinition of the command that draws the transversal edge. It has two arguments, the \( x \)-position of the edge in the top row of vertices and the \( x \)-position of the edge in the bottom row of vertices. The default is
+\begin{verbatim}
+ \ifnum\pmdraw@ifTedgeHorizontal=0 % If drawing a straight line edge
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions]
+ (#1,\pmdraw@rowSep) -- (#2,0); % Draw straight line
+ \else % If transversal edge is drawn horizontally
+ \ifnum#1>#2 % If edge goes from top right to bottom left
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions]
+ (#2,0) arc (180:90:\pmdraw{Tlevel}); % Draw bottom arch
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions]
+ (#2+\pmdraw{Tlevel},\pmdraw{Tlevel})
+ -- (#1-\pmdraw@rowSep+\pmdraw{Tlevel}, \pmdraw{Tlevel}); % Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions]
+ (#1-\pmdraw@rowSep+\pmdraw{Tlevel},\pmdraw{Tlevel})
+ arc (270:360:{\pmdraw@rowSep-\pmdraw{Tlevel}}); % Draw top arc
+ \else % If edge goes from top left to bottom right
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions]
+ (#2,0) arc (0:90:\pmdraw{Tlevel}); % Draw bottom arch
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions]
+ (#2-\pmdraw{Tlevel},\pmdraw{Tlevel})
+ -- (#1+\pmdraw@rowSep-\pmdraw{Tlevel}, \pmdraw{Tlevel}); % Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions]
+ (#1+\pmdraw@rowSep-\pmdraw{Tlevel},\pmdraw{Tlevel})
+ arc (270:180:{\pmdraw@rowSep-\pmdraw{Tlevel}}); % Draw top arc
+ \fi%
+ \renewcommand{\pmdraw@ifTedgeHorizontal}{0} % Reset flag to default
+ \fi%
+\end{verbatim}
+An example use is
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree top=5,
+ degree bottom=6
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non-transversal edges
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ [options={
+ \draw (#2,0) -- (#2+1,1); % Draw bottom line
+ \draw (#2+1,1) -- (#1-1, 1); % Draw straight line
+ \draw (#1-1,1) -- (#1,2); % Draw top line
+ }]{10}{2}
+ {1}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree top=3,
+ blank bottom=1,
+ degree bottom=2
+ ]{ % Upper non-transversal edges
+ {1}{2}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree top=5,
+ degree bottom=6
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non-transversal edges
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ [options={
+ \draw (#2,0) -- (#2+1,1); % Draw bottom line
+ \draw (#2+1,1) -- (#1-1, 1); % Draw straight line
+ \draw (#1-1,1) -- (#1,2); % Draw top line
+ }]{10}{2}
+ {1}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree top=3,
+ blank bottom=1,
+ degree bottom=2
+ ]{ % Upper non-transversal edges
+ {1}{2}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}
+\end{center}
+
+
+\subsection{Brace} \label{sec: brace}
+
+\DescribeMacro{brick/brace}
+As part of a diagram, it may be useful to draw a brace. The options of a brace are as follows:
+
+\DescribeMacro{left}\DescribeMacro{right}
+specifies the \( x \)-position of the start/left and end/right of the brace. Both must be provided.
+
+\DescribeMacro{label}
+specifies the label to be printed with the brace. Default is empty.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace={
+ left=1,
+ right=4,
+ label={n}
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=1
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace={
+ left=1,
+ right=4,
+ label={n}
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=1
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{center}
+
+\DescribeMacro{above}
+The \texttt{above} flag draws the brace above the diagram. Default is below.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace={
+ left=1,
+ right=4,
+ label={n},
+ above
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=1
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace={
+ left=1,
+ right=4,
+ label={n},
+ above
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=1
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{center}
+
+\DescribeMacro{options}
+allows for the redefinition of the command that draws the brace. It has three arguments, the \( x \)-position start and end of the brace, as well as the label of the brace. The default is
+\begin{verbatim}
+ \ifnum\pmdraw@ifProdDiag=1 % If drawing a product diagram
+ % or if placing brace above diagram
+ \draw[
+ very thick,
+ decorate,
+ decoration={calligraphic brace,amplitude=6pt},
+ apply style/.expand once=\pmdraw@drawBraceDrawOptions
+ ] (#1-0.17,\pmdraw@rowSep+0.5) -- (#2+0.17,\pmdraw@rowSep+0.5)
+ node[
+ pos=0.5,
+ above=6pt,
+ apply style/.expand once=\pmdraw@drawBraceNodeOptions
+ ] {\(#3\)}; % Draw brace on top of diagram
+ \else % If not drawing a product diagram or if placing brace below diagram
+ \draw[
+ very thick,
+ decorate,
+ decoration={calligraphic brace,mirror,amplitude=6pt},
+ apply style/.expand once=\pmdraw@drawBraceDrawOptions
+ ] (#1-0.17,-0.5) -- (#2+0.17,-0.5)
+ node[
+ pos=0.5,
+ below=6pt,
+ apply style/.expand once=\pmdraw@drawBraceNodeOptions
+ ] {\(#3\)}; % Draw brace on bottom of diagram
+ \fi%
+\end{verbatim}
+it should be noted that the flag \verb`\pmdraw@ifProdDiag` is both used for when drawing a product diagram but also when placing the brace above the diagram as this clearly must be the default for the top diagram in a product diagram.
+An example use is
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace={
+ left=1,
+ right=4,
+ label={n},
+ options={
+ \draw[
+ red,
+ very thick,
+ decorate,
+ decoration={calligraphic brace,mirror,amplitude=6pt}
+ ] (#1-0.17,-0.5) -- (#2+0.17,-0.5)
+ node[pos=0.25,below=6pt]{\(#3\)};
+ }
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=1
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdDiagram{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace={
+ left=1,
+ right=4,
+ label={n},
+ options={
+ \draw[
+ red,
+ very thick,
+ decorate,
+ decoration={calligraphic brace,mirror,amplitude=6pt}
+ ] (#1-0.17,-0.5) -- (#2+0.17,-0.5)
+ node[pos=0.25,below=6pt]{\(#3\)};
+ }
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=1
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{center}
+
+\subsection{Diagram options} \label{sec: diagram/options}
+
+\subsubsection{For all (product) diagrams} \label{sec: diagram/options all}
+
+The following options can be used for both diagrams (\verb`\pmdDiagram`) and product diagrams (\verb`\pmdProduct`).
+
+\DescribeMacro{row sep}
+same as \texttt{row sep} option in bricks but applied to all bricks within (product) diagram.
+
+\DescribeMacro{dots options}
+allows for the redefinition of the command that draws dots between bricks. It has two arguments, the \( x \) and \( y \)-position of the dots. The default is
+\begin{verbatim}
+ \draw[apply style/.expand once=\pmdraw@drawDotsDrawOptions]
+ (#1,#2) node[apply style/.expand once=\pmdraw@drawDotsNodeOptions] {\(\dots\)};
+\end{verbatim}
+An example use is
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdDiagram[ % Options
+ dots options={
+ \draw[red] (#1,#2) node {\(\dots\dots\)};
+ }
+]{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace={
+ left=1,
+ right=5,
+ label={n}
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=1,
+ blank top=1,
+ blank bottom=1
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {2}{2}
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdDiagram[ % Options
+ dots options={
+ \draw[red] (#1,#2) node {\(\dots\dots\)};
+ }
+]{
+ { % Brick 1
+ [ % Options
+ degree=2,
+ brace={
+ left=1,
+ right=5,
+ label={n}
+ }
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree=1,
+ blank top=1,
+ blank bottom=1
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {2}{2}
+ }
+ }
+}
+\end{center}
+
+\DescribeMacro{grid}
+As it can get confusing where things are drawn and the different coordinate scopes between all the bricks and diagrams, the \texttt{grid} flag draws the base coordinate grid that the first drawn brick is based on. This should help with all coordinate related inquiries. Default is no grid.
+
+It should be noted that the \texttt{grid} key is not available for \verb`\pmdBrick` and \verb`\pmdDiagram` must be used instead when needing a grid for a single brick only.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdDiagram[ % Options
+ grid
+]{
+ { % Brick 1
+ [ % Options
+ degree top=5,
+ degree bottom=6,
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non-transversal edges
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ [height=1]{10}{2}
+ {1}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree top=3,
+ blank bottom=1,
+ degree bottom=
+ ]{ % Upper non-transversal edges
+ {1}{2}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdDiagram[ % Options
+ grid
+]{
+ { % Brick 1
+ [ % Options
+ degree top=5,
+ degree bottom=6
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non-transversal edges
+ {3}{4}
+ {5}{6}
+ }{ % Transversal edges
+ [height=1]{10}{2}
+ {1}{1}
+ }
+ }{ % Brick 2
+ [ % Options
+ degree top=3,
+ blank bottom=1,
+ degree bottom=2
+ ]{ % Upper non-transversal edges
+ {1}{2}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ }{ % Transversal edges
+ \pmdEmpty
+ }
+ }
+}
+\end{center}
+
+\DescribeMacro{decorate before}\DescribeMacro{decorate after}
+same as \texttt{decorate before} and \texttt{decorate after} in bricks but these are drawn before (after) all bricks are drawn. For clarity, this is default drawing order for a diagram:
+\begin{enumerate}
+ \item \texttt{diagram/decorate before}
+ \item Brick loop:
+ \begin{enumerate}
+ \item \texttt{brick/decorate before}
+ \item Draws brick
+ \item \texttt{brick/decorate after}
+ \end{enumerate}
+ \item \texttt{diagram/decorate after}
+\end{enumerate}
+And this is default drawing order for a product diagram:
+\begin{enumerate}
+ \item \texttt{diagram/decorate before}
+ \item Draws added edges
+ \item Top diagram:
+ \begin{enumerate}
+ \item Brick loop:
+ \begin{enumerate}
+ \item \texttt{brick/decorate before}
+ \item Draws brick
+ \item \texttt{brick/decorate after}
+ \end{enumerate}
+ \end{enumerate}
+ \item Bottom diagram:
+ \begin{enumerate}
+ \item Brick loop:
+ \begin{enumerate}
+ \item \texttt{brick/decorate before}
+ \item Draws brick
+ \item \texttt{brick/decorate after}
+ \end{enumerate}
+ \end{enumerate}
+ \item \texttt{diagram/decorate after}
+\end{enumerate}
+
+For the drawing order of a brick see Section~\ref{sec: order}.
+
+\subsubsection{For product diagrams only}
+
+The following options can only be used for product diagrams (\verb`\pmdProduct`).
+
+\DescribeMacro{diagram sep}
+specifies the vertical separation between the bottom row of vertices in top diagram and the top row of vertices in bottom diagram. Default is one.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdProduct[ % Options
+ diagram sep=2
+]{ % Added edges
+ {1}{5}
+}{ % Top diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ {3}{3}
+ {4}{4}
+ {5}{5}
+ }
+ }
+}{ % Bottom diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdProduct[ % Options
+ diagram sep=2
+]{ % Added edges
+ {1}{5}
+}{ % Top diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ {3}{3}
+ {4}{4}
+ {5}{5}
+ }
+ }
+}{ % Bottom diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{center}
+
+\DescribeMacro{edges added}
+passes through options to the \verb`\draw` command of the added edges. The default is no argument.
+\begin{center}
+ \begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
+ \begin{minipage}[c]{0.4\linewidth}
+\begin{verbatim}
+\pmdProduct[ % Options
+ edges added={red,very thick}
+]{ % Added edges
+ {1}{5}
+}{ % Top diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ {3}{3}
+ {4}{4}
+ {5}{5}
+ }
+ }
+}{ % Bottom diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{verbatim}
+ \end{minipage}
+ \hfill
+ \begin{minipage}[c]{0.4\linewidth}
+ \end{minipage}
+ \end{minipage}%
+\end{center}
+\begin{center}
+\pmdProduct[ % Options
+ edges added={red,very thick}
+]{ % Added edges
+ {1}{5}
+}{ % Top diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ \pmdEmpty
+ }{ % Lower non-transversal edges
+ \pmdEmpty
+ }{ % Transversal edges
+ {1}{1}
+ {2}{2}
+ {3}{3}
+ {4}{4}
+ {5}{5}
+ }
+ }
+}{ % Bottom diagram
+ { % Brick 1
+ [ % Options
+ degree=5
+ ]{ % Upper non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Lower non-transversal edges
+ {2}{3}
+ {4}{5}
+ }{ % Transversal edges
+ {1}{1}
+ }
+ }
+}
+\end{center}
+
+\section{Future features/work}
+
+I have attempted to make most use cases easy to use with dedicated functionality that does not require significant \LaTeX\ knowledge whilst at the same time provide more advanced interfaces to allow for hopefully almost complete customisability for those who put in the effort.
+
+Having said that, please do let me know if there are features or improvements you will like to see added.
+
+The following are some of the aims for the future for this package:
+\begin{enumerate}
+ \item Fix bugs.
+ \item Add warning and error messages to log.
+ \item Allow all brick keys to work as diagram keys that apply to all bricks in a diagram. This will require setting up a flag for each key so that the diagram key sets the brick key but the brick key is not reset after drawing the first brick. This process also will need to be able to handle when a single brick has a custom special different key value and that this is reset to the digram key value and not the global default key value.
+ \item Allow appropriate diagram keys to work as brick keys. Notably the \texttt{grid} key.
+ \item Create a \texttt{tikz} key for passing options to the \texttt{tikz} environment. Have as an example a different scale for diagram.
+ \item The creation of user profiles that allows for fast and efficient setting of default key values that are different to the package defaults. Hence within a diagram, there can be a number of differetn diagram styles that can be accessed with one command.
+ \item Allow for adjusting the horizontal spacing of vertices. Need to think about making that a simple scale factor so that integer interface for edge positions is the same but then hooks will have very messy coordinates or keep it as absolute coordinates with messy edges. Alternatively, do both, allowing the user to choose which option to do and somehow distinguish between the two in the background.
+\end{enumerate}
+
+\section{Examples}
+
+This section is simply a collection of example diagrams. The code for them can be found in the \texttt{examples} folder. Perhaps you will find them useful as a starting point for your diagrams or to see what this package is capable of.
+
+\usetikzlibrary{patterns}
+
+\foreach \example in {1,...,25}{
+ \paragraph{Example~\example}
+ \begin{center}
+ \input{examples/example-\example}
+ \end{center}
+}
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/hyperref/ChangeLog.txt b/macros/latex/contrib/hyperref/ChangeLog.txt
index af20a60665..660a34563e 100644
--- a/macros/latex/contrib/hyperref/ChangeLog.txt
+++ b/macros/latex/contrib/hyperref/ChangeLog.txt
@@ -1,3 +1,10 @@
+2023-11-07 Ulrike Fischer
+ * improve thm code, issue 304
+ * insert socket for varwidth, issue 204 and 293
+
+2023-10-31 Ulrike Fischer
+ * hyperref-linktarget.dtx: switch to e-type
+
===========
Version: 2023-10-27 v7.01d
diff --git a/macros/latex/contrib/hyperref/README.md b/macros/latex/contrib/hyperref/README.md
index db3ef2e790..0e47cc5012 100644
--- a/macros/latex/contrib/hyperref/README.md
+++ b/macros/latex/contrib/hyperref/README.md
@@ -1,6 +1,6 @@
# README for hyperref bundle
-Version 2023-10-27 v7.01d
+Version 2023-11-07 v7.01e
## INTRODUCTION
diff --git a/macros/latex/contrib/hyperref/doc/backref.pdf b/macros/latex/contrib/hyperref/doc/backref.pdf
index 6ee096db1f..1a9546b24e 100644
--- a/macros/latex/contrib/hyperref/doc/backref.pdf
+++ b/macros/latex/contrib/hyperref/doc/backref.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc.html b/macros/latex/contrib/hyperref/doc/hyperref-doc.html
index 074b2c47ed..c84196a6c6 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc.html
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc.html
@@ -25,7 +25,7 @@ href="https://github.com/latex3/hyperref/issues" class="url" ><span
class="ec-lmvtt-10x-x-120">https://github.com/latex3/hyperref/issues</span></a><span
class="ec-lmr-12">)</span></div><br />
<div class="date" ><span
-class="ec-lmr-12">2023-10-27 v7.01d</span></div>
+class="ec-lmr-12">2023-11-07 v7.01e</span></div>
</div>
<h3 class="likesectionHead"><a
id="x1-1000"></a>Contents</h3>
@@ -214,80 +214,82 @@ href="#x1-8800011.1.23" id="QQ2-1-88">natbib</a></span>
<br /> <span class="subsubsectionToc" >11.1.24 <a
href="#x1-8900011.1.24" id="QQ2-1-89">nomencl</a></span>
<br /> <span class="subsubsectionToc" >11.1.25 <a
-href="#x1-9000011.1.25" id="QQ2-1-90">ntheorem-hyper</a></span>
+href="#x1-9000011.1.25" id="QQ2-1-90">ntheorem</a></span>
<br /> <span class="subsubsectionToc" >11.1.26 <a
-href="#x1-9100011.1.26" id="QQ2-1-91">prettyref</a></span>
+href="#x1-9100011.1.26" id="QQ2-1-91">ntheorem-hyper</a></span>
<br /> <span class="subsubsectionToc" >11.1.27 <a
-href="#x1-9200011.1.27" id="QQ2-1-92">setspace</a></span>
+href="#x1-9200011.1.27" id="QQ2-1-92">prettyref</a></span>
<br /> <span class="subsubsectionToc" >11.1.28 <a
-href="#x1-9300011.1.28" id="QQ2-1-93">sidecap</a></span>
+href="#x1-9300011.1.28" id="QQ2-1-93">setspace</a></span>
<br /> <span class="subsubsectionToc" >11.1.29 <a
-href="#x1-9400011.1.29" id="QQ2-1-94">subfigure</a></span>
+href="#x1-9400011.1.29" id="QQ2-1-94">sidecap</a></span>
<br /> <span class="subsubsectionToc" >11.1.30 <a
-href="#x1-9500011.1.30" id="QQ2-1-95">titleref</a></span>
+href="#x1-9500011.1.30" id="QQ2-1-95">subfigure</a></span>
<br /> <span class="subsubsectionToc" >11.1.31 <a
-href="#x1-9600011.1.31" id="QQ2-1-96">tabularx</a></span>
+href="#x1-9600011.1.31" id="QQ2-1-96">titleref</a></span>
<br /> <span class="subsubsectionToc" >11.1.32 <a
-href="#x1-9700011.1.32" id="QQ2-1-97">titlesec</a></span>
+href="#x1-9700011.1.32" id="QQ2-1-97">tabularx</a></span>
<br /> <span class="subsubsectionToc" >11.1.33 <a
-href="#x1-9800011.1.33" id="QQ2-1-98">ucs/utf8x.def</a></span>
+href="#x1-9800011.1.33" id="QQ2-1-98">titlesec</a></span>
<br /> <span class="subsubsectionToc" >11.1.34 <a
-href="#x1-9900011.1.34" id="QQ2-1-99">varioref</a></span>
+href="#x1-9900011.1.34" id="QQ2-1-99">ucs/utf8x.def</a></span>
<br /> <span class="subsubsectionToc" >11.1.35 <a
-href="#x1-10000011.1.35" id="QQ2-1-100">verse</a></span>
+href="#x1-10000011.1.35" id="QQ2-1-100">varioref</a></span>
<br /> <span class="subsubsectionToc" >11.1.36 <a
-href="#x1-10100011.1.36" id="QQ2-1-101">vietnam</a></span>
+href="#x1-10100011.1.36" id="QQ2-1-101">verse</a></span>
<br /> <span class="subsubsectionToc" >11.1.37 <a
-href="#x1-10200011.1.37" id="QQ2-1-102">XeTeX</a></span>
+href="#x1-10200011.1.37" id="QQ2-1-102">vietnam</a></span>
+<br /> <span class="subsubsectionToc" >11.1.38 <a
+href="#x1-10300011.1.38" id="QQ2-1-103">XeTeX</a></span>
<br /> <span class="sectionToc" >12 <a
-href="#x1-10300012" id="QQ2-1-103">Limitations</a></span>
+href="#x1-10400012" id="QQ2-1-104">Limitations</a></span>
<br /> <span class="subsectionToc" >12.1 <a
-href="#x1-10400012.1" id="QQ2-1-104">Wrapped/broken link support</a></span>
+href="#x1-10500012.1" id="QQ2-1-105">Wrapped/broken link support</a></span>
<br /> <span class="subsectionToc" >12.2 <a
-href="#x1-10500012.2" id="QQ2-1-105">Links across pages</a></span>
+href="#x1-10600012.2" id="QQ2-1-106">Links across pages</a></span>
<br /> <span class="subsectionToc" >12.3 <a
-href="#x1-10600012.3" id="QQ2-1-106">Footnotes</a></span>
+href="#x1-10700012.3" id="QQ2-1-107">Footnotes</a></span>
<br /> <span class="sectionToc" >13 <a
-href="#x1-10700013" id="QQ2-1-107">Hints</a></span>
+href="#x1-10800013" id="QQ2-1-108">Hints</a></span>
<br /> <span class="subsectionToc" >13.1 <a
-href="#x1-10800013.1" id="QQ2-1-108">Spaces in option values</a></span>
+href="#x1-10900013.1" id="QQ2-1-109">Spaces in option values</a></span>
<br /> <span class="subsectionToc" >13.2 <a
-href="#x1-10900013.2" id="QQ2-1-109">Index with makeindex</a></span>
+href="#x1-11000013.2" id="QQ2-1-110">Index with makeindex</a></span>
<br /> <span class="subsectionToc" >13.3 <a
-href="#x1-11000013.3" id="QQ2-1-110">Warning <span
+href="#x1-11100013.3" id="QQ2-1-111">Warning <span
class="ec-lmvtt-10">"bookmark level for unknown &#x003C;foobar&#x003E; defaults to 0"</span></a></span>
<br /> <span class="subsectionToc" >13.4 <a
-href="#x1-11100013.4" id="QQ2-1-111">Link anchors in figures</a></span>
+href="#x1-11200013.4" id="QQ2-1-112">Link anchors in figures</a></span>
<br /> <span class="subsectionToc" >13.5 <a
-href="#x1-11200013.5" id="QQ2-1-112">Additional unicode characters in bookmarks and pdf information entries:</a></span>
+href="#x1-11300013.5" id="QQ2-1-113">Additional unicode characters in bookmarks and pdf information entries:</a></span>
<br /> <span class="subsectionToc" >13.6 <a
-href="#x1-11300013.6" id="QQ2-1-113">Footnotes</a></span>
+href="#x1-11400013.6" id="QQ2-1-114">Footnotes</a></span>
<br /> <span class="subsectionToc" >13.7 <a
-href="#x1-11400013.7" id="QQ2-1-114">Subordinate counters</a></span>
+href="#x1-11500013.7" id="QQ2-1-115">Subordinate counters</a></span>
<br /> <span class="sectionToc" >14 <a
-href="#x1-11500014" id="QQ2-1-115">History and acknowledgments</a></span>
+href="#x1-11600014" id="QQ2-1-116">History and acknowledgments</a></span>
<br /> <span class="sectionToc" >15 <a
-href="#x1-11600015" id="QQ2-1-116">GNU Free Documentation License</a></span>
+href="#x1-11700015" id="QQ2-1-117">GNU Free Documentation License</a></span>
<br /> <span class="subsectionToc" >15.1 <a
-href="#x1-11800015.1" id="QQ2-1-118">Applicability and definitions</a></span>
+href="#x1-11900015.1" id="QQ2-1-119">Applicability and definitions</a></span>
<br /> <span class="subsectionToc" >15.2 <a
-href="#x1-11900015.2" id="QQ2-1-119">Verbatim copying</a></span>
+href="#x1-12000015.2" id="QQ2-1-120">Verbatim copying</a></span>
<br /> <span class="subsectionToc" >15.3 <a
-href="#x1-12000015.3" id="QQ2-1-120">Copying in quantity</a></span>
+href="#x1-12100015.3" id="QQ2-1-121">Copying in quantity</a></span>
<br /> <span class="subsectionToc" >15.4 <a
-href="#x1-12100015.4" id="QQ2-1-121">Modifications</a></span>
+href="#x1-12200015.4" id="QQ2-1-122">Modifications</a></span>
<br /> <span class="subsectionToc" >15.5 <a
-href="#x1-12200015.5" id="QQ2-1-122">Combining documents</a></span>
+href="#x1-12300015.5" id="QQ2-1-123">Combining documents</a></span>
<br /> <span class="subsectionToc" >15.6 <a
-href="#x1-12300015.6" id="QQ2-1-123">Collections of documents</a></span>
+href="#x1-12400015.6" id="QQ2-1-124">Collections of documents</a></span>
<br /> <span class="subsectionToc" >15.7 <a
-href="#x1-12400015.7" id="QQ2-1-124">Aggregation with independent works</a></span>
+href="#x1-12500015.7" id="QQ2-1-125">Aggregation with independent works</a></span>
<br /> <span class="subsectionToc" >15.8 <a
-href="#x1-12500015.8" id="QQ2-1-125">Translation</a></span>
+href="#x1-12600015.8" id="QQ2-1-126">Translation</a></span>
<br /> <span class="subsectionToc" >15.9 <a
-href="#x1-12600015.9" id="QQ2-1-126">Termination</a></span>
+href="#x1-12700015.9" id="QQ2-1-127">Termination</a></span>
<br /> <span class="subsectionToc" >15.10 <a
-href="#x1-12700015.10" id="QQ2-1-127">Future revisions of this license</a></span>
+href="#x1-12800015.10" id="QQ2-1-128">Future revisions of this license</a></span>
</div>
<!--l. 179--><p class="noindent" >
<h3 class="sectionHead"><span class="titlemark">1 </span> <a
@@ -297,9 +299,9 @@ class="ec-lmss-10">hyperref </span>has a long history and has seen many
changes over time. The introduction mentions workflows, drivers and problems that are no longer (or
only in edge cases) relevant. The documentation reflects this varied history: changes and
extensions and explanations were and are spread over various papers and sources or have
-been incorporated later and so are not always in a coherent order and in sync which each
+been incorporated later and so are not always in a coherent order and in sync which each
other.
<!--l. 187--><p class="indent" > This history is continuing: If you are using the new <span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span> PDF management which
is currently distributed as a testphase package <span
@@ -4423,8 +4425,10 @@ class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
<!--l. 1409--><p class="noindent" >A base <span
class="ec-lmri-10">URL </span>is established, which is prepended to other specified URLs, to make it easier to write
-portable documents.
-<!--l. 1412--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-19" class="tabular"
+portable documents. When creating a PDF the command can be used only once as the <span
+class="ec-lmri-10">URL </span>is written
+into the catalog.
+<!--l. 1413--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-19" class="tabular"
><colgroup id="TBL-19-1g"><col
id="TBL-19-1"></colgroup><tr
@@ -4437,12 +4441,12 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1416--><p class="noindent" >The link to the image referenced by the URL is inserted, using <span
+<!--l. 1417--><p class="noindent" >The link to the image referenced by the URL is inserted, using <span
class="ec-lmri-10">text </span>as the anchor.
-<!--l. 1419--><p class="indent" > For drivers that produce HTML, the image itself is inserted by the browser, with the <span
+<!--l. 1420--><p class="indent" > For drivers that produce HTML, the image itself is inserted by the browser, with the <span
class="ec-lmri-10">text </span>being
ignored completely.
-<!--l. 1422--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-20" class="tabular"
+<!--l. 1423--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-20" class="tabular"
><colgroup id="TBL-20-1g"><col
id="TBL-20-1"></colgroup><tr
@@ -4457,10 +4461,10 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1426--><p class="noindent" >A target area of the document (the <span
+<!--l. 1427--><p class="noindent" >A target area of the document (the <span
class="ec-lmri-10">text</span>) is marked, and given the name <span
class="ec-lmri-10">category.name</span>
-<!--l. 1429--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-21" class="tabular"
+<!--l. 1430--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-21" class="tabular"
><colgroup id="TBL-21-1g"><col
id="TBL-21-1"></colgroup><tr
@@ -4477,10 +4481,10 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1433--><p class="noindent" ><span
+<!--l. 1434--><p class="noindent" ><span
class="ec-lmri-10">text </span>is made into a link to <span
class="ec-lmri-10">URL#category.name</span>
-<!--l. 1435--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-22" class="tabular"
+<!--l. 1436--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-22" class="tabular"
><colgroup id="TBL-22-1g"><col
id="TBL-22-1"></colgroup><tr
@@ -4493,12 +4497,12 @@ class="ec-lmvtt-10">]{</span></span></span><span
class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1439--><p class="noindent" ><span
+<!--l. 1440--><p class="noindent" ><span
class="ec-lmri-10">text </span>is made into a link to the same place as <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\ref{</span></span></span><span
class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> would be linked.
-<!--l. 1443--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-23" class="tabular"
+<!--l. 1444--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-23" class="tabular"
><colgroup id="TBL-23-1g"><col
id="TBL-23-1"></colgroup><tr
@@ -4511,7 +4515,7 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1446--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-24" class="tabular"
+<!--l. 1447--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-24" class="tabular"
><colgroup id="TBL-24-1g"><col
id="TBL-24-1"></colgroup><tr
@@ -4524,7 +4528,7 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1450--><p class="noindent" >A simple internal link is created with <span class="obeylines-h"><span class="verb"><span
+<!--l. 1451--><p class="noindent" >A simple internal link is created with <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hypertarget</span></span></span>, with two parameters of an anchor <span
class="ec-lmri-10">name</span>, and anchor
<span
@@ -4533,13 +4537,13 @@ class="ec-lmvtt-10">\hyperlink</span></span></span> has two arguments, the name
class="ec-lmvtt-10">\hypertarget</span></span></span>,
and the <span
class="ec-lmri-10">text </span>which be used as the link on the page.
-<!--l. 1456--><p class="indent" > Note that in HTML parlance, the <span class="obeylines-h"><span class="verb"><span
+<!--l. 1457--><p class="indent" > Note that in HTML parlance, the <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hyperlink</span></span></span> command inserts a notional # in front of each link,
making it relative to the current testdocument; <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\href</span></span></span> expects a full URL.
-<!--l. 1460--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-25" class="tabular"
+<!--l. 1461--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-25" class="tabular"
><colgroup id="TBL-25-1g"><col
id="TBL-25-1"></colgroup><tr
@@ -4547,7 +4551,7 @@ id="TBL-25-1"></colgroup><tr
class="td11"> <span
class="ec-lmvtt-10">\phantomsection </span></td>
</tr></table> </div></span>
-<!--l. 1464--><p class="noindent" >This sets an anchor at this location. It works similar to <span class="obeylines-h"><span class="verb"><span
+<!--l. 1465--><p class="noindent" >This sets an anchor at this location. It works similar to <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hypertarget{}{}</span></span></span> with an automatically chosen
anchor name. Often it is used in conjunction with <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\addcontentsline</span></span></span> for sectionlike things (index,
@@ -4563,10 +4567,10 @@ Example:
\addcontentsline{toc}{chapter}{\indexname}
\printindex
</pre>
- <!--l. 1477--><p class="nopar" ></blockquote>
-<!--l. 1479--><p class="noindent" >Now the entry in the table of contents (and bookmarks) for the index points to the start of the index page,
+ <!--l. 1478--><p class="nopar" ></blockquote>
+<!--l. 1480--><p class="noindent" >Now the entry in the table of contents (and bookmarks) for the index points to the start of the index page,
not to a location before this page.
-<!--l. 1483--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-26" class="tabular"
+<!--l. 1484--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-26" class="tabular"
><colgroup id="TBL-26-1g"><col
id="TBL-26-1"></colgroup><tr
@@ -4585,7 +4589,7 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1488--><p class="indent" > This retrieves the anchor or the page anchor from a label in an expandable way. It takes
+<!--l. 1489--><p class="indent" > This retrieves the anchor or the page anchor from a label in an expandable way. It takes
<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\HyperDestNameFilter</span></span></span> into account. It can e.g. be used with the <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\bookmark</span></span></span> from the bookmark
@@ -4595,12 +4599,12 @@ package to set a destination to a label:
<pre class="verbatim" id="verbatim-23">
\bookmark[dest=\hyperget{anchor}{sec}]{section}
</pre>
-<!--l. 1494--><p class="nopar" >
-<!--l. 1496--><p class="indent" > As <span
+<!--l. 1495--><p class="nopar" >
+<!--l. 1497--><p class="indent" > As <span
class="ec-lmri-10">pageanchor </span>retrieves the page number from the label it can&#8217;t be use together with the option
<span
class="ec-lmvtt-10">plainpages</span>.
-<!--l. 1499--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-27" class="tabular"
+<!--l. 1500--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-27" class="tabular"
><colgroup id="TBL-27-1g"><col
id="TBL-27-1"></colgroup><tr
@@ -4611,10 +4615,10 @@ class="ec-lmvtt-10">{</span></span></span><span
class="ec-lmri-10">currentanchor</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}{}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1503--><p class="indent" > This retrieves the last anchor that has been set. It too takes <span class="obeylines-h"><span class="verb"><span
+<!--l. 1504--><p class="indent" > This retrieves the last anchor that has been set. It too takes <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\HyperDestNameFilter</span></span></span> into
account.
-<!--l. 1507--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-28" class="tabular"
+<!--l. 1508--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-28" class="tabular"
><colgroup id="TBL-28-1g"><col
id="TBL-28-1"></colgroup><tr
@@ -4624,11 +4628,11 @@ class="ec-lmvtt-10">\autoref</span><span class="obeylines-h"><span class="verb">
class="ec-lmvtt-10">{</span></span></span><span
class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td></tr></table> </div></span>
-<!--l. 1511--><p class="noindent" >This is a replacement for the usual <span class="obeylines-h"><span class="verb"><span
+<!--l. 1512--><p class="noindent" >This is a replacement for the usual <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\ref</span></span></span> command that places a contextual label in front of the reference.
This gives your users a bigger target to click for hyperlinks (e.g.&#x00A0;&#8216;section 2&#8217; instead of merely the number
&#8216;2&#8217;).
-<!--l. 1517--><p class="indent" > The label is worked out from the context of the original <span class="obeylines-h"><span class="verb"><span
+<!--l. 1518--><p class="indent" > The label is worked out from the context of the original <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\label</span></span></span> command by <span
class="ec-lmss-10">hyperref </span>by using the
macros listed below (shown with their default values). The macros can be (re)defined in documents using
@@ -4636,16 +4640,16 @@ macros listed below (shown with their default values). The macros can be (re)def
class="ec-lmvtt-10">\(re)newcommand</span></span></span>; note that some of these macros are already defined in the standard document
classes. The mixture of lowercase and uppercase initial letters is deliberate and corresponds to the
author&#8217;s practice.
-<!--l. 1525--><p class="indent" > For each macro below, <span
+<!--l. 1526--><p class="indent" > For each macro below, <span
class="ec-lmss-10">hyperref </span>checks <span
class="ec-lmvtt-10">\*autorefname </span>before <span
class="ec-lmvtt-10">\*name</span>. For instance, it looks for
<span
class="ec-lmvtt-10">\figureautorefname </span>before <span
class="ec-lmvtt-10">\figurename</span>.
-<!--l. 1529--><p class="indent" >
+<!--l. 1530--><p class="indent" >
<a
- id="x1-23001r12"></a> <!--l. 1530--><div class="longtable"> <table id="TBL-29" class="longtable"
+ id="x1-23001r12"></a> <!--l. 1531--><div class="longtable"> <table id="TBL-29" class="longtable"
><colgroup id="TBL-29-1g"><col
id="TBL-29-1"><col
@@ -4655,80 +4659,80 @@ id="TBL-29-2"></colgroup>
class="td01"><span
class="ec-lmri-10">Macro </span></td><td style="white-space:normal; text-align:left;" id="TBL-29-1-2"
class="td10">
- <!--l. 1530--><p class="noindent" ><span
+ <!--l. 1531--><p class="noindent" ><span
class="ec-lmri-10">Default</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-29-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-2-1"
class="td01"><span
class="ec-lmvtt-10">\figurename </span></td><td style="white-space:normal; text-align:left;" id="TBL-29-2-2"
class="td10">
- <!--l. 1531--><p class="noindent" >Figure </td>
+ <!--l. 1532--><p class="noindent" >Figure </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-29-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-3-1"
class="td01"><span
class="ec-lmvtt-10">\tablename </span></td><td style="white-space:normal; text-align:left;" id="TBL-29-3-2"
class="td10">
- <!--l. 1532--><p class="noindent" >Table </td>
+ <!--l. 1533--><p class="noindent" >Table </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-29-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-4-1"
class="td01"><span
class="ec-lmvtt-10">\partname </span></td><td style="white-space:normal; text-align:left;" id="TBL-29-4-2"
class="td10">
- <!--l. 1533--><p class="noindent" >Part </td>
+ <!--l. 1534--><p class="noindent" >Part </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-29-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-5-1"
class="td01"><span
class="ec-lmvtt-10">\appendixname </span></td><td style="white-space:normal; text-align:left;" id="TBL-29-5-2"
class="td10">
- <!--l. 1534--><p class="noindent" >Appendix </td>
+ <!--l. 1535--><p class="noindent" >Appendix </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-29-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-6-1"
class="td01"><span
class="ec-lmvtt-10">\equationname </span></td><td style="white-space:normal; text-align:left;" id="TBL-29-6-2"
class="td10">
- <!--l. 1535--><p class="noindent" >Equation </td>
+ <!--l. 1536--><p class="noindent" >Equation </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-29-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-7-1"
class="td01"><span
class="ec-lmvtt-10">\Itemname </span></td><td style="white-space:normal; text-align:left;" id="TBL-29-7-2"
class="td10">
- <!--l. 1536--><p class="noindent" >item </td>
+ <!--l. 1537--><p class="noindent" >item </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-29-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-8-1"
class="td01"><span
class="ec-lmvtt-10">\chaptername </span></td><td style="white-space:normal; text-align:left;" id="TBL-29-8-2"
class="td10">
- <!--l. 1537--><p class="noindent" >chapter </td>
+ <!--l. 1538--><p class="noindent" >chapter </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-29-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-9-1"
class="td01"><span
class="ec-lmvtt-10">\sectionname </span></td><td style="white-space:normal; text-align:left;" id="TBL-29-9-2"
class="td10">
- <!--l. 1538--><p class="noindent" >section </td>
+ <!--l. 1539--><p class="noindent" >section </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-29-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-10-1"
class="td01"><span
class="ec-lmvtt-10">\subsectionname </span></td><td style="white-space:normal; text-align:left;" id="TBL-29-10-2"
class="td10">
- <!--l. 1539--><p class="noindent" >subsection </td>
+ <!--l. 1540--><p class="noindent" >subsection </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-29-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-11-1"
class="td01"><span
class="ec-lmvtt-10">\subsubsectionname </span></td><td style="white-space:normal; text-align:left;" id="TBL-29-11-2"
class="td10">
- <!--l. 1540--><p class="noindent" >subsubsection </td>
+ <!--l. 1541--><p class="noindent" >subsubsection </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-29-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-12-1"
class="td01"><span
class="ec-lmvtt-10">\paragraphname </span></td><td style="white-space:normal; text-align:left;" id="TBL-29-12-2"
class="td10">
- <!--l. 1541--><p class="noindent" >paragraph </td>
+ <!--l. 1542--><p class="noindent" >paragraph </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-29-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-13-1"
class="td01"><span
class="ec-lmvtt-10">\Hfootnotename </span></td><td style="white-space:normal; text-align:left;" id="TBL-29-13-2"
class="td10">
- <!--l. 1542--><p class="noindent" >footnote </td>
+ <!--l. 1543--><p class="noindent" >footnote </td>
</tr><tr
@@ -4736,19 +4740,19 @@ class="td10">
class="td01"><span
class="ec-lmvtt-10">\AMSname </span></td><td style="white-space:normal; text-align:left;" id="TBL-29-14-2"
class="td10">
- <!--l. 1543--><p class="noindent" >Equation </td>
+ <!--l. 1544--><p class="noindent" >Equation </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-29-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-15-1"
class="td01"><span
class="ec-lmvtt-10">\theoremname </span></td><td style="white-space:normal; text-align:left;" id="TBL-29-15-2"
class="td10">
- <!--l. 1544--><p class="noindent" >Theorem </td>
+ <!--l. 1545--><p class="noindent" >Theorem </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-29-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-16-1"
class="td01"><span
class="ec-lmvtt-10">\page </span></td><td style="white-space:normal; text-align:left;" id="TBL-29-16-2"
class="td10">
- <!--l. 1545--><p class="noindent" >page </td>
+ <!--l. 1546--><p class="noindent" >page </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-29-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-17-1"
class="td01"> </td>
@@ -4766,7 +4770,7 @@ class="td01"> </td>
class="td01"> </td><td style="white-space:normal; text-align:left;" id="TBL-29-21-2"
class="td10"></td></tr>
</table></div>
-<!--l. 1548--><p class="indent" > Example for a redefinition if <span
+<!--l. 1549--><p class="indent" > Example for a redefinition if <span
class="ec-lmss-10">babel </span>is used:
<blockquote class="quote">
@@ -4777,8 +4781,8 @@ class="ec-lmss-10">babel </span>is used:
&#x00A0;&#x00A0;\def\subsectionautorefname{Unterkapitel}%
}
</pre>
- <!--l. 1555--><p class="nopar" ></blockquote>
-<!--l. 1558--><p class="indent" > Hint: <span
+ <!--l. 1556--><p class="nopar" ></blockquote>
+<!--l. 1559--><p class="indent" > Hint: <span
class="ec-lmvtt-10">\autoref </span>works via the counter name that the reference is based on. Sometimes <span
class="ec-lmvtt-10">\autoref</span>
chooses the wrong name, if the counter is used for different things. For example, it happens with
@@ -4818,8 +4822,8 @@ We&#x00A0;will&#x00A0;use&#x00A0;\autoref{a}&#x00A0;to&#x00A0;prove&#x00A0;\auto
\end{document}
</pre>
- <!--l. 1593--><p class="nopar" ></blockquote>
-<!--l. 1596--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-30" class="tabular"
+ <!--l. 1594--><p class="nopar" ></blockquote>
+<!--l. 1597--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-30" class="tabular"
><colgroup id="TBL-30-1g"><col
id="TBL-30-1"></colgroup><tr
@@ -4830,18 +4834,18 @@ class="ec-lmvtt-10">{</span></span></span><span
class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1600--><p class="noindent" >It replaces <span class="obeylines-h"><span class="verb"><span
+<!--l. 1601--><p class="noindent" >It replaces <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\pageref</span></span></span> and adds the name for page in front of the page reference. First <span
class="ec-lmvtt-10">\pageautorefname</span>
is checked before <span
class="ec-lmvtt-10">\pagename</span>.
-<!--l. 1605--><p class="indent" > For instances where you want a reference to use the correct counter, but not to create a
+<!--l. 1606--><p class="indent" > For instances where you want a reference to use the correct counter, but not to create a
link, there are starred forms (these starred forms exist even if hyperref has been loaded with
<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">implicit=false</span></span></span>):
-<!--l. 1609--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-31" class="tabular"
+<!--l. 1610--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-31" class="tabular"
><colgroup id="TBL-31-1g"><col
id="TBL-31-1"></colgroup><tr
@@ -4851,7 +4855,7 @@ class="ec-lmvtt-10">\ref*</span><span class="obeylines-h"><span class="verb"><sp
class="ec-lmvtt-10">{</span></span></span><span
class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td></tr></table> </div></span>
-<!--l. 1613--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-32" class="tabular"
+<!--l. 1614--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-32" class="tabular"
><colgroup id="TBL-32-1g"><col
id="TBL-32-1"></colgroup><tr
@@ -4862,7 +4866,7 @@ class="ec-lmvtt-10">{</span></span></span><span
class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1617--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-33" class="tabular"
+<!--l. 1618--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-33" class="tabular"
><colgroup id="TBL-33-1g"><col
id="TBL-33-1"></colgroup><tr
@@ -4872,7 +4876,7 @@ class="ec-lmvtt-10">\autoref*</span><span class="obeylines-h"><span class="verb"
class="ec-lmvtt-10">{</span></span></span><span
class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td></tr></table> </div></span>
-<!--l. 1621--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-34" class="tabular"
+<!--l. 1622--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-34" class="tabular"
><colgroup id="TBL-34-1g"><col
id="TBL-34-1"></colgroup><tr
@@ -4883,18 +4887,18 @@ class="ec-lmvtt-10">{</span></span></span><span
class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1625--><p class="indent" > A typical use would be to write
+<!--l. 1626--><p class="indent" > A typical use would be to write
<pre class="verbatim" id="verbatim-26">
\hyperref[other]{that&#x00A0;nice&#x00A0;section&#x00A0;(\ref*{other})&#x00A0;we&#x00A0;read&#x00A0;before}
</pre>
-<!--l. 1628--><p class="nopar" >
-<!--l. 1630--><p class="indent" > We want <span class="obeylines-h"><span class="verb"><span
+<!--l. 1629--><p class="nopar" >
+<!--l. 1631--><p class="indent" > We want <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\ref*{other}</span></span></span> to generate the correct number, but not to form a link, since we do this
ourselves with <span
class="ec-lmvtt-10">\hyperref</span>.
-<!--l. 1633--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-35" class="tabular"
+<!--l. 1634--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-35" class="tabular"
><colgroup id="TBL-35-1g"><col
id="TBL-35-1"></colgroup><tr
@@ -4907,21 +4911,21 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">TeXstring</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1637--><p class="indent" > <span
+<!--l. 1638--><p class="indent" > <span
class="ec-lmvtt-10">\pdfstringdef </span>returns a macro containing the PDF string. (Currently this is done globally, but do not
rely on it.) All the following tasks, definitions and redefinitions are made in a group to keep them
local:
<ul class="itemize1">
<li class="itemize">
- <!--l. 1642--><p class="noindent" >Switching to PD1 or PU encoding
+ <!--l. 1643--><p class="noindent" >Switching to PD1 or PU encoding
</li>
<li class="itemize">
- <!--l. 1643--><p class="noindent" >Defining the &#8220;octal sequence commands&#8221; (<span class="obeylines-h"><span class="verb"><span
+ <!--l. 1644--><p class="noindent" >Defining the &#8220;octal sequence commands&#8221; (<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\345</span></span></span>): <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\edef\3{\string\3}</span></span></span>
</li>
<li class="itemize">
- <!--l. 1644--><p class="noindent" >Special glyphs of TeX: <span class="obeylines-h"><span class="verb"><span
+ <!--l. 1645--><p class="noindent" >Special glyphs of TeX: <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\{</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\%</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\&amp;</span></span></span>, <span class="obeylines-h"><span class="verb"><span
@@ -4929,18 +4933,18 @@ class="ec-lmvtt-10">\space</span></span></span>, <span class="obeylines-h"><span
class="ec-lmvtt-10">\dots</span></span></span>, etc.
</li>
<li class="itemize">
- <!--l. 1645--><p class="noindent" >National glyphs (<span
+ <!--l. 1646--><p class="noindent" >National glyphs (<span
class="ec-lmss-10">german.sty</span>, <span
class="ec-lmss-10">french.sty</span>, etc.)
</li>
<li class="itemize">
- <!--l. 1646--><p class="noindent" >Logos: <span class="obeylines-h"><span class="verb"><span
+ <!--l. 1647--><p class="noindent" >Logos: <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\TeX</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\eTeX</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\MF</span></span></span>, etc.
</li>
<li class="itemize">
- <!--l. 1647--><p class="noindent" >Disabling commands that do not provide useful functionality in bookmarks: <span class="obeylines-h"><span class="verb"><span
+ <!--l. 1648--><p class="noindent" >Disabling commands that do not provide useful functionality in bookmarks: <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\label</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\index</span></span></span>,
<span class="obeylines-h"><span class="verb"><span
@@ -4950,20 +4954,20 @@ class="ec-lmvtt-10">\def</span></span></span>, <span class="obeylines-h"><span c
class="ec-lmvtt-10">\let</span></span></span>, etc.
</li>
<li class="itemize">
- <!--l. 1649--><p class="noindent" >LaTeX&#8217;s font commands like <span class="obeylines-h"><span class="verb"><span
+ <!--l. 1650--><p class="noindent" >LaTeX&#8217;s font commands like <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\textbf</span></span></span>, etc.
</li>
<li class="itemize">
- <!--l. 1650--><p class="noindent" >Support for <span class="obeylines-h"><span class="verb"><span
+ <!--l. 1651--><p class="noindent" >Support for <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\xspace</span></span></span> provided by the <span
class="ec-lmss-10">xspace </span>package</li></ul>
-<!--l. 1653--><p class="indent" > In addition, parentheses are protected to avoid the danger of unsafe unbalanced parentheses in
+<!--l. 1654--><p class="indent" > In addition, parentheses are protected to avoid the danger of unsafe unbalanced parentheses in
the PDF string. For further details, see Heiko Oberdiek&#8217;s EuroTeX&#x00A0;paper distributed with
<span
class="ec-lmss-10">hyperref</span>.
-<!--l. 1657--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-36" class="tabular"
+<!--l. 1658--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-36" class="tabular"
><colgroup id="TBL-36-1g"><col
id="TBL-36-1"></colgroup><tr
@@ -4974,22 +4978,22 @@ class="ec-lmvtt-10">{NoHyper}</span></span></span>&#x2026;<span
class="ec-lmvtt-10">\end</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">{NoHyper}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1660--><p class="indent" > Sometimes we just don&#8217;t want the wretched package interfering with us. Define an environment we
+<!--l. 1661--><p class="indent" > Sometimes we just don&#8217;t want the wretched package interfering with us. Define an environment we
can put in manually, or include in a style file, which stops the hypertext functions doing anything.
This is used, for instance, in the Elsevier classes, to stop <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">hyperref</span></span></span> playing havoc in the front
matter.
-<!--l. 1666--><p class="noindent" >
+<!--l. 1667--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">6.1 </span> <a
id="x1-240006.1"></a>Bookmark macros</h4>
-<!--l. 1668--><p class="noindent" >
+<!--l. 1669--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">6.1.1 </span> <a
id="x1-250006.1.1"></a>Setting bookmarks</h5>
-<!--l. 1670--><p class="noindent" >Usually <span
+<!--l. 1671--><p class="noindent" >Usually <span
class="ec-lmss-10">hyperref </span>automatically adds bookmarks for <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\section</span></span></span> and similar macros. But they can also set
manually.
-<!--l. 1673--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-37" class="tabular"
+<!--l. 1674--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-37" class="tabular"
><colgroup id="TBL-37-1g"><col
id="TBL-37-1"></colgroup><tr
@@ -5003,11 +5007,11 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">name</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1676--><p class="indent" > creates a bookmark with the specified text and at the given level (default is 0). As name for the
+<!--l. 1677--><p class="indent" > creates a bookmark with the specified text and at the given level (default is 0). As name for the
internal anchor name is used (in conjunction with level). Therefore the name must be unique (similar to
<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\label</span></span></span>).
-<!--l. 1680--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-38" class="tabular"
+<!--l. 1681--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-38" class="tabular"
><colgroup id="TBL-38-1g"><col
id="TBL-38-1"></colgroup><tr
@@ -5020,8 +5024,8 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">name</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1683--><p class="indent" > creates a bookmark at the current level.
-<!--l. 1685--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-39" class="tabular"
+<!--l. 1684--><p class="indent" > creates a bookmark at the current level.
+<!--l. 1686--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-39" class="tabular"
><colgroup id="TBL-39-1g"><col
id="TBL-39-1"></colgroup><tr
@@ -5034,9 +5038,9 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">name</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1688--><p class="indent" > creates a bookmark one step down in the bookmark hierarchy. Internally the current level is increased
+<!--l. 1689--><p class="indent" > creates a bookmark one step down in the bookmark hierarchy. Internally the current level is increased
by one.
-<!--l. 1691--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-40" class="tabular"
+<!--l. 1692--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-40" class="tabular"
><colgroup id="TBL-40-1g"><col
id="TBL-40-1"></colgroup><tr
@@ -5049,33 +5053,33 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">name</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1694--><p class="indent" > creates a bookmark below the current bookmark level. However after the command the current
+<!--l. 1695--><p class="indent" > creates a bookmark below the current bookmark level. However after the command the current
bookmark level has not changed.
-<!--l. 1697--><p class="noindent" ><span
+<!--l. 1698--><p class="noindent" ><span
class="ec-lmbx-10">Hint: </span>Package <span
class="ec-lmss-10">bookmark </span>replaces <span
class="ec-lmss-10">hyperref</span>&#8217;s bookmark organization by a new algorithm:
<ul class="itemize1">
<li class="itemize">
- <!--l. 1700--><p class="noindent" >Usually only one LaTeX&#x00A0;run is needed.
+ <!--l. 1701--><p class="noindent" >Usually only one LaTeX&#x00A0;run is needed.
</li>
<li class="itemize">
- <!--l. 1701--><p class="noindent" >More control over the bookmark appearance (color, font).
+ <!--l. 1702--><p class="noindent" >More control over the bookmark appearance (color, font).
</li>
<li class="itemize">
- <!--l. 1702--><p class="noindent" >Different bookmark actions are supported (external file links, URLs, &#x2026;).</li></ul>
-<!--l. 1705--><p class="noindent" >Therefore I recommend using this package.
-<!--l. 1707--><p class="noindent" >
+ <!--l. 1703--><p class="noindent" >Different bookmark actions are supported (external file links, URLs, &#x2026;).</li></ul>
+<!--l. 1706--><p class="noindent" >Therefore I recommend using this package.
+<!--l. 1708--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">6.1.2 </span> <a
id="x1-260006.1.2"></a>Replacement macros</h5>
-<!--l. 1709--><p class="noindent" ><span
+<!--l. 1710--><p class="noindent" ><span
class="ec-lmss-10">hyperref </span>takes the text for bookmarks from the arguments of commands like <span
class="ec-lmvtt-10">\section</span>, which can
contain things like math, colors, or font changes, none of which will display in bookmarks as
is.
-<!--l. 1713--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-41" class="tabular"
+<!--l. 1714--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-41" class="tabular"
><colgroup id="TBL-41-1g"><col
id="TBL-41-1"></colgroup><tr
@@ -5088,7 +5092,7 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">PDFstring</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1717--><p class="indent" > For example,
+<!--l. 1718--><p class="indent" > For example,
<pre class="verbatim" id="verbatim-27">
@@ -5100,8 +5104,8 @@ class="ec-lmvtt-10">}</span></span></span> </td>
}
\section{\texorpdfstring{\textcolor{red}}{}{Red}&#x00A0;Mars}
</pre>
-<!--l. 1726--><p class="nopar" >
-<!--l. 1728--><p class="indent" > <span
+<!--l. 1727--><p class="nopar" >
+<!--l. 1729--><p class="indent" > <span
class="ec-lmvtt-10">\pdfstringdef </span>executes the hook before it expands the string. Therefore, you can use this hook to
perform additional tasks or to disable additional commands.
@@ -5113,8 +5117,8 @@ perform additional tasks or to disable additional commands.
&#x00A0;&#x00A0;\renewcommand{\mycommand}[1]{}%
}
</pre>
-<!--l. 1738--><p class="nopar" >
-<!--l. 1740--><p class="indent" > However, for disabling commands, an easier way is via <span
+<!--l. 1739--><p class="nopar" >
+<!--l. 1741--><p class="indent" > However, for disabling commands, an easier way is via <span
class="ec-lmvtt-10">\pdfstringdefDisableCommands</span>, which adds
its argument to the definition of <span
class="ec-lmvtt-10">\pdfstringdefPreHook </span>(&#8216;@&#8217; can here be used as letter in command
@@ -5128,11 +5132,11 @@ names):
&#x00A0;&#x00A0;\let\textcolor\@gobble
}
</pre>
-<!--l. 1751--><p class="nopar" >
-<!--l. 1753--><p class="noindent" >
+<!--l. 1752--><p class="nopar" >
+<!--l. 1754--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">6.2 </span> <a
id="x1-270006.2"></a>Pagelabels</h4>
-<!--l. 1754--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-42" class="tabular"
+<!--l. 1755--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-42" class="tabular"
><colgroup id="TBL-42-1g"><col
id="TBL-42-1"></colgroup><tr
@@ -5143,19 +5147,19 @@ class="ec-lmvtt-10">{</span></span></span><span
class="ec-lmri-10">page number format</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1758--><p class="noindent" >This allows to change format of the page number shown in the tool bar of a PDF viewer for a specific
+<!--l. 1759--><p class="noindent" >This allows to change format of the page number shown in the tool bar of a PDF viewer for a specific
page, for example
-<!--l. 1761--><p class="indent" > <span class="obeylines-h"><span class="verb"><span
+<!--l. 1762--><p class="indent" > <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\thispdfpagelabel{Empty</span><span
class="ec-lmvtt-10">&#x00A0;Page-\roman{page}}</span></span></span>
-<!--l. 1763--><p class="indent" > The command affects the page on which it is executed, so asynchronous page breaking should be
+<!--l. 1764--><p class="indent" > The command affects the page on which it is executed, so asynchronous page breaking should be
taken into account. It should be used in places where for example <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\thispagestyle</span></span></span> can be use
too.
-<!--l. 1766--><p class="noindent" >
+<!--l. 1767--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">6.3 </span> <a
id="x1-280006.3"></a>Utility macros</h4>
-<!--l. 1769--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-43" class="tabular"
+<!--l. 1770--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-43" class="tabular"
><colgroup id="TBL-43-1g"><col
id="TBL-43-1"></colgroup><tr
@@ -5166,7 +5170,7 @@ class="ec-lmvtt-10">{</span></span></span><span
class="ec-lmri-10">dimen specification</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 1772--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
+<!--l. 1773--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hypercalcbp</span></span></span> takes a TeX&#x00A0;dimen specification and converts it to bp and returns the number
without the unit. This is useful for options <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">pdfview</span></span></span>, <span class="obeylines-h"><span class="verb"><span
@@ -5182,65 +5186,65 @@ Example:
&#x00A0;&#x00A0;&#x00A0;&#x00A0;-\headheight-\headsep}
}
</pre>
- <!--l. 1784--><p class="nopar" ></blockquote>
-<!--l. 1786--><p class="noindent" >The origin of the PDF coordinate system is the lower left corner.
-<!--l. 1788--><p class="indent" > Note, for calculations you need either package <span
+ <!--l. 1785--><p class="nopar" ></blockquote>
+<!--l. 1787--><p class="noindent" >The origin of the PDF coordinate system is the lower left corner.
+<!--l. 1789--><p class="indent" > Note, for calculations you need either package <span
class="ec-lmss-10">calc </span>or <span
class="lmmi-10">&#x03B5;</span>-<span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span>. Nowadays the latter should
automatically be enabled for <span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span> formats. Users without <span
class="lmmi-10">&#x03B5;</span>-<span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span>, please, look in the source
documentation <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">hyperref.dtx</span></span></span> for further limitations.
-<!--l. 1794--><p class="indent" > Also <span
+<!--l. 1795--><p class="indent" > Also <span
class="ec-lmvtt-10">\hypercalcbp </span>cannot be used in option specifications of <span
class="ec-lmvtt-10">\documentclass </span>and <span
class="ec-lmvtt-10">\usepackage</span>,
because <span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span> expands the option lists of these commands. However package <span
class="ec-lmss-10">hyperref </span>is not yet loaded
and an undefined control sequence error would arise.
-<!--l. 1801--><p class="noindent" >
+<!--l. 1802--><p class="noindent" >
<h3 class="sectionHead"><span class="titlemark">7 </span> <a
id="x1-290007"></a>New Features<span class="footnote-mark"><a
href="hyperref-doc6.html#fn5x0"><sup class="textsuperscript">5</sup></a></span><a
id="x1-29001f5"></a> </h3>
<h4 class="subsectionHead"><span class="titlemark">7.1 </span> <a
id="x1-300007.1"></a>Option &#8216;pdflinkmargin&#8217;</h4>
-<!--l. 1806--><p class="noindent" >Option &#8216;pdflinkmargin&#8217; is an experimental option for specifying a link margin, if the driver supports this.
+<!--l. 1807--><p class="noindent" >Option &#8216;pdflinkmargin&#8217; is an experimental option for specifying a link margin, if the driver supports this.
Default is 1 pt for supporting drivers.
-<!--l. 1811--><p class="indent" >
+<!--l. 1812--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="ec-lmbx-10">pdfTeX</span> </dt><dd
class="description">
- <!--l. 1812--><p class="noindent" >
+ <!--l. 1813--><p class="noindent" >
<ul class="itemize1">
<li class="itemize">
- <!--l. 1814--><p class="noindent" >The link area also depends on the surrounding box.
+ <!--l. 1815--><p class="noindent" >The link area also depends on the surrounding box.
</li>
<li class="itemize">
- <!--l. 1815--><p class="noindent" >Settings have local effect.
+ <!--l. 1816--><p class="noindent" >Settings have local effect.
</li>
<li class="itemize">
- <!--l. 1816--><p class="noindent" >When a page is shipped out, pdfTeX uses the current setting of the link margin for all
+ <!--l. 1817--><p class="noindent" >When a page is shipped out, pdfTeX uses the current setting of the link margin for all
links on the page.</li></ul>
</dd><dt class="description">
<span
class="ec-lmbx-10">pdfmark</span> </dt><dd
class="description">
- <!--l. 1820--><p class="noindent" >
+ <!--l. 1821--><p class="noindent" >
<ul class="itemize1">
<li class="itemize">
- <!--l. 1822--><p class="noindent" >Settings have global effect.</li></ul>
+ <!--l. 1823--><p class="noindent" >Settings have global effect.</li></ul>
</dd><dt class="description">
<span
class="ec-lmbx-10">xetex</span> </dt><dd
class="description">
- <!--l. 1825--><p class="noindent" >
+ <!--l. 1826--><p class="noindent" >
<ul class="itemize1">
<li class="itemize">
- <!--l. 1827--><p class="noindent" >Settings must be done in the preamble or the first page and then have global effect.
+ <!--l. 1828--><p class="noindent" >Settings must be done in the preamble or the first page and then have global effect.
The key inserts the new (x)dvipdfmx special <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\special{dvipdfmx:config</span><span
class="ec-lmvtt-10">&#x00A0;g</span><span
@@ -5250,20 +5254,20 @@ class="ec-lmvtt-10">&#x00A0;#1}</span></span></span> (with
<span
class="ec-lmbx-10">Other drivers</span> </dt><dd
class="description">
- <!--l. 1831--><p class="noindent" >Unsupported.</dd></dl>
-<!--l. 1836--><p class="noindent" >
+ <!--l. 1832--><p class="noindent" >Unsupported.</dd></dl>
+<!--l. 1837--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.2 </span> <a
id="x1-310007.2"></a>Field option &#8216;calculatesortkey&#8217;</h4>
-<!--l. 1838--><p class="noindent" >Fields with calculated values are calculated in document order by default. If calculated field values
+<!--l. 1839--><p class="noindent" >Fields with calculated values are calculated in document order by default. If calculated field values
depend on other calculated fields that appear later in the document, then the correct calculation order
can be specified with option &#8216;calculatesortkey&#8217;. Its value is used as key to lexicographically sort the
calculated fields. The sort key do not need to be unique. Fields that share the same key are sorted in
document order.
-<!--l. 1848--><p class="indent" > Currently the field option &#8216;calculatesortkey&#8217; is only supported by the driver for pdfTeX.
-<!--l. 1851--><p class="noindent" >
+<!--l. 1849--><p class="indent" > Currently the field option &#8216;calculatesortkey&#8217; is only supported by the driver for pdfTeX.
+<!--l. 1852--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.3 </span> <a
id="x1-320007.3"></a>Option &#8216;next-anchor&#8217;</h4>
-<!--l. 1852--><p class="noindent" >This option allows to overwrite the anchor name of the next anchor. This makes it possible to give for
+<!--l. 1853--><p class="noindent" >This option allows to overwrite the anchor name of the next anchor. This makes it possible to give for
example the heading of the table of contents an anchor name which can be referenced with a <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\bookmark</span></span></span>
command from the bookmark package:
@@ -5274,14 +5278,14 @@ command from the bookmark package:
\tableofcontents
\bookmark[dest=\HyperDestNameFilter{toc},level=section]{\contentsname}
</pre>
-<!--l. 1860--><p class="nopar" >
-<!--l. 1862--><p class="noindent" >
+<!--l. 1861--><p class="nopar" >
+<!--l. 1863--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.4 </span> <a
id="x1-330007.4"></a>Option &#8216;localanchorname&#8217;</h4>
-<!--l. 1864--><p class="noindent" >When<span class="marginpar">Deprecated 2022-04-27 v7.00o</span> an anchor is set (e.g. via <span class="obeylines-h"><span class="verb"><span
+<!--l. 1865--><p class="noindent" >When<span class="marginpar">Deprecated 2022-04-27 v7.00o</span> an anchor is set (e.g. via <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\refstepcounter</span></span></span>, then the anchor name is
globally set to the current anchor name.
-<!--l. 1868--><p class="indent" > For example:
+<!--l. 1869--><p class="indent" > For example:
<pre class="verbatim" id="verbatim-32">
@@ -5289,28 +5293,28 @@ globally set to the current anchor name.
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\begin{equation}\end{equation}
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\label{sec:foobar}
</pre>
-<!--l. 1873--><p class="nopar" > With the default global setting (localanchorname=false) a reference to &#8216;sec:foobar&#8217; jumps to the
+<!--l. 1874--><p class="nopar" > With the default global setting (localanchorname=false) a reference to &#8216;sec:foobar&#8217; jumps to the
equation before. With option &#8216;localanchorname&#8217; the anchor of the equation is forgotten after the
environment and the reference &#8216;sec:foobar&#8217; jumps to the section title.
-<!--l. 1881--><p class="indent" > Option &#8216;localanchorname&#8217; is an experimental option, there might be situations, where the anchor
+<!--l. 1882--><p class="indent" > Option &#8216;localanchorname&#8217; is an experimental option, there might be situations, where the anchor
name is not available as expected.
-<!--l. 1885--><p class="indent" > The option is deprecated: it makes it difficult for package authors to add targets for links if it is
+<!--l. 1886--><p class="indent" > The option is deprecated: it makes it difficult for package authors to add targets for links if it is
unclear if <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\@currentHref</span></span></span> is set locally or globally.
-<!--l. 1889--><p class="noindent" >
+<!--l. 1890--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.5 </span> <a
id="x1-340007.5"></a>Option &#8216;customdriver&#8217;</h4>
-<!--l. 1891--><p class="noindent" >The value of option &#8216;customdriver&#8217; is the name of an external driver file without extension &#8216;.def&#8217;. The file
+<!--l. 1892--><p class="noindent" >The value of option &#8216;customdriver&#8217; is the name of an external driver file without extension &#8216;.def&#8217;. The file
must have <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\ProvidesFile</span></span></span> with a version date and number that match the date and number of &#8216;hyperref&#8217;,
otherwise a warning is given.
-<!--l. 1896--><p class="indent" > Because the interface, what needs to be defined in the driver, is not well defined and
+<!--l. 1897--><p class="indent" > Because the interface, what needs to be defined in the driver, is not well defined and
quite messy, the option is mainly intended to ease developing, testing, debugging the driver
part.
-<!--l. 1901--><p class="noindent" >
+<!--l. 1902--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.6 </span> <a
id="x1-350007.6"></a>Option &#8216;psdextra&#8217;</h4>
-<!--l. 1903--><p class="noindent" >LaTeX&#8217;s NFSS is used to assist the conversion of arbitrary TeX strings to PDF strings (bookmarks, PDF
+<!--l. 1904--><p class="noindent" >LaTeX&#8217;s NFSS is used to assist the conversion of arbitrary TeX strings to PDF strings (bookmarks, PDF
information entries). Many math command names (<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\geq</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\notin</span></span></span>, ...) are not in control of NFSS,
@@ -5324,17 +5328,17 @@ on means that the short names are available. Then <span class="obeylines-h"><spa
class="ec-lmvtt-10">\geq</span></span></span> can directly be used instead of
<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\textgeq</span></span></span>.
-<!--l. 1917--><p class="noindent" >
+<!--l. 1918--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.7 </span> <a
id="x1-360007.7"></a>\XeTeXLinkBox</h4>
-<!--l. 1919--><p class="noindent" >When XeTeX generates a link annotation, it does not look at the boxes (as the other drivers), but only
+<!--l. 1920--><p class="noindent" >When XeTeX generates a link annotation, it does not look at the boxes (as the other drivers), but only
at the character glyphs. If there are no glyphs (images, rules, ...), then it does not generate a link
annotation. Macro <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\XeTeXLinkBox</span></span></span> puts its argument in a box and adds spaces at the lower left and
upper right corners. An additional margin can be specified by setting it to the dimen register
<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\XeTeXLinkMargin</span></span></span>. The default is 2pt.
-<!--l. 1928--><p class="indent" > Example:
+<!--l. 1929--><p class="indent" > Example:
<pre class="verbatim" id="verbatim-33">
@@ -5351,8 +5355,8 @@ class="ec-lmvtt-10">\XeTeXLinkMargin</span></span></span>. The default is 2pt.
&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\end{document}
</pre>
-<!--l. 1944--><p class="nopar" >
-<!--l. 1946--><p class="noindent" >
+<!--l. 1945--><p class="nopar" >
+<!--l. 1947--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.8 </span> <a
id="x1-370007.8"></a>\IfHyperBooleanExists and \IfHyperBoolean</h4>
@@ -5360,7 +5364,7 @@ class="ec-lmvtt-10">\XeTeXLinkMargin</span></span></span>. The default is 2pt.
<pre class="verbatim" id="verbatim-34">
&#x00A0;\IfHyperBooleanExists{OPTION}{YES}{NO}
</pre>
-<!--l. 1949--><p class="nopar" > If a <span
+<!--l. 1950--><p class="nopar" > If a <span
class="ec-lmss-10">hyperref </span>OPTION is a boolean, that means it takes values &#8216;true&#8217; or &#8216;false&#8217;, then <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\IfHyperBooleanExists</span></span></span>
calls YES, otherwise NO.
@@ -5369,25 +5373,25 @@ calls YES, otherwise NO.
<pre class="verbatim" id="verbatim-35">
&#x00A0;\IfHyperBoolean{OPTION}{YES}{NO}
</pre>
-<!--l. 1956--><p class="nopar" > Macro <span class="obeylines-h"><span class="verb"><span
+<!--l. 1957--><p class="nopar" > Macro <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\IfHyperBoolean</span></span></span> calls YES, if OPTION exists as boolean and is enabled. Otherwise NO is
executed.
-<!--l. 1962--><p class="indent" > Both macros are expandable. Additionally option &#8216;stoppedearly&#8217; is available. It is enabled if
+<!--l. 1963--><p class="indent" > Both macros are expandable. Additionally option &#8216;stoppedearly&#8217; is available. It is enabled if
<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\MaybeStopEarly</span></span></span> or <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\MaybeStopNow</span></span></span> end <span
class="ec-lmss-10">hyperref </span>prematurely.
-<!--l. 1967--><p class="noindent" >
+<!--l. 1968--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.9 </span> <a
id="x1-380007.9"></a>\unichar</h4>
-<!--l. 1969--><p class="noindent" >If a Unicode character is not supported by puenc.def, it can be given by using <span class="obeylines-h"><span class="verb"><span
+<!--l. 1970--><p class="noindent" >If a Unicode character is not supported by puenc.def, it can be given by using <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\unichar</span></span></span>. Its name
and syntax is inherited from package &#8216;ucs&#8217;. However it is defined independently for use in
<span
class="ec-lmss-10">hyperref</span>&#8217;s <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\pdfstringdef</span></span></span> (that converts arbitrary TeX code to PDF strings or tries to do
this).
-<!--l. 1977--><p class="indent" > Macro <span class="obeylines-h"><span class="verb"><span
+<!--l. 1978--><p class="indent" > Macro <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\unichar</span></span></span> takes a TeX number as argument, examples for U+263A (WHITE SMILING
FACE):
@@ -5396,7 +5400,7 @@ FACE):
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\unichar{"263A}%&#x00A0;hexadecimal&#x00A0;notation
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\unichar{9786}%&#x00A0;decimal&#x00A0;notation
</pre>
-<!--l. 1982--><p class="nopar" > &#8216;"&#8217; must not be a babel shorthand character or otherwise active. Otherwise prefix it with
+<!--l. 1983--><p class="nopar" > &#8216;"&#8217; must not be a babel shorthand character or otherwise active. Otherwise prefix it with
<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\string</span></span></span>:
@@ -5404,18 +5408,18 @@ class="ec-lmvtt-10">\string</span></span></span>:
<pre class="verbatim" id="verbatim-37">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\unichar{\string"263A}%&#x00A0;converts&#x00A0;&#8216;"&#8217;&#x00A0;to&#x00A0;&#8216;"&#8217;&#x00A0;with&#x00A0;catcode&#x00A0;12&#x00A0;(other)
</pre>
-<!--l. 1987--><p class="nopar" > Users of (n)german packages or babel options may use <span class="obeylines-h"><span class="verb"><span
+<!--l. 1988--><p class="nopar" > Users of (n)german packages or babel options may use <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\dq</span></span></span> instead:
<pre class="verbatim" id="verbatim-38">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\unichar{\dq&#x00A0;263A}%&#x00A0;\dq&#x00A0;is&#x00A0;double&#x00A0;quote&#x00A0;with&#x00A0;catcode&#x00A0;12&#x00A0;(other)
</pre>
-<!--l. 1991--><p class="nopar" >
-<!--l. 1994--><p class="noindent" >
+<!--l. 1992--><p class="nopar" >
+<!--l. 1995--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.10 </span> <a
id="x1-390007.10"></a>\ifpdfstringunicode</h4>
-<!--l. 1996--><p class="noindent" >Some features of the PDF specification needs PDF strings. Examples are bookmarks or the entries in the
+<!--l. 1997--><p class="noindent" >Some features of the PDF specification needs PDF strings. Examples are bookmarks or the entries in the
information dictionary. The PDF specification allows two encodings &#8216;PDFDocEncoding&#8217; (8-bit encoding)
and &#8216;Unicode&#8217; (UTF-16). The user can help using <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\texorpdfstring</span></span></span> to replace complicate TeX constructs
@@ -5426,7 +5430,7 @@ class="ec-lmvtt-10">\ifpdfstringunicode</span></span></span>. It is only allowed
class="ec-lmvtt-10">\texorpdfstring</span></span></span> and
takes two arguments, the first allows the full range of Unicode. The second is limited to the characters
available in PDFDocEncoding.
-<!--l. 2010--><p class="indent" > As example we take a macro definition for the Vietnamese name of Hàn Th&#x1ebf; Thành. Correctly written
+<!--l. 2011--><p class="indent" > As example we take a macro definition for the Vietnamese name of Hàn Th&#x1ebf; Thành. Correctly written
it needs some accented characters, one character even with a double accent. Class &#8216;tugboat.cls&#8217; defines a
macro for the typesetted name:
@@ -5438,9 +5442,9 @@ macro for the typesetted name:
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;~Th\&#8216;anh%
&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
</pre>
-<!--l. 2020--><p class="nopar" > It&#8217;s not entirely correct, the second accent over the &#8216;e&#8217; is not an acute, but a hook. However standard
+<!--l. 2021--><p class="nopar" > It&#8217;s not entirely correct, the second accent over the &#8216;e&#8217; is not an acute, but a hook. However standard
LaTeX does not provide such an accent.
-<!--l. 2025--><p class="indent" > Now we can extend the definition to support <span
+<!--l. 2026--><p class="indent" > Now we can extend the definition to support <span
class="ec-lmss-10">hyperref</span>. The first and the last word are already
supported automatically. Characters with two or more accents are a difficult business in LaTeX, because
the NFSS2 macros of the LaTeX kernel do not support more than one accent. Therefore also puenc.def
@@ -5452,7 +5456,7 @@ is:
<pre class="verbatim" id="verbatim-40">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;%&#x00A0;U+1EC3&#x00A0;LATIN&#x00A0;SMALL&#x00A0;LETTER&#x00A0;E&#x00A0;WITH&#x00A0;CIRCUMFLEX&#x00A0;AND&#x00A0;HOOK&#x00A0;ABOVE
</pre>
-<!--l. 2034--><p class="nopar" > Thus we can put this together:
+<!--l. 2035--><p class="nopar" > Thus we can put this together:
<pre class="verbatim" id="verbatim-41">
@@ -5463,7 +5467,7 @@ is:
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;~Th\&#8216;anh%
&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
</pre>
-<!--l. 2043--><p class="nopar" > For PDFDocEncoding (PD1) the variant above has dropped the second accent. Alternatively we could
+<!--l. 2044--><p class="nopar" > For PDFDocEncoding (PD1) the variant above has dropped the second accent. Alternatively we could
provide a representation without accents instead of wrong accents:
@@ -5482,12 +5486,12 @@ provide a representation without accents instead of wrong accents:
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
</pre>
-<!--l. 2061--><p class="nopar" >
-<!--l. 2063--><p class="noindent" >
+<!--l. 2062--><p class="nopar" >
+<!--l. 2064--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.11 </span> <a
id="x1-400007.11"></a>Customizing index style file with \nohyperpage</h4>
-<!--l. 2065--><p class="noindent" >Since version 2008/08/14&#x00A0;v6.78f.
-<!--l. 2069--><p class="indent" > For hyperlink support in the index, <span
+<!--l. 2066--><p class="noindent" >Since version 2008/08/14&#x00A0;v6.78f.
+<!--l. 2070--><p class="indent" > For hyperlink support in the index, <span
class="ec-lmss-10">hyperref </span>inserts <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hyperpage</span></span></span> into the index macros. After
processing with Makeindex, <span class="obeylines-h"><span class="verb"><span
@@ -5499,7 +5503,7 @@ lists. However, only the standard settings are supported directly:
&#x00A0;&#x00A0;&#x00A0;&#x00A0;delim_r&#x00A0;"--"
&#x00A0;&#x00A0;&#x00A0;&#x00A0;delim_n&#x00A0;",&#x00A0;"
</pre>
-<!--l. 2076--><p class="nopar" > (See manual page/documentation of Makeindex that explains the keys that can be used in style files for
+<!--l. 2077--><p class="nopar" > (See manual page/documentation of Makeindex that explains the keys that can be used in style files for
Makeindex.) Customized versions of <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">delim_r,</span><span
class="ec-lmvtt-10">&#x00A0;delim_n,</span><span
@@ -5518,157 +5522,157 @@ e.g.:
&#x00A0;&#x00A0;&#x00A0;&#x00A0;suffix_2p&#x00A0;"\\nohyperpage{f.}"
&#x00A0;&#x00A0;&#x00A0;&#x00A0;suffix_3p&#x00A0;"\\nohyperpage{ff.}"
</pre>
-<!--l. 2088--><p class="nopar" > (Depending on the typesetting tradition some space &#8220;<span class="obeylines-h"><span class="verb"><span
+<!--l. 2089--><p class="nopar" > (Depending on the typesetting tradition some space &#8220;<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\\</span></span></span>,&#8221; or &#8220;<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">~</span></span></span>&#8221; should be put before the first f inside
<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\nohyperpage</span></span></span>.)
-<!--l. 2093--><p class="noindent" >
+<!--l. 2094--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.12 </span> <a
id="x1-410007.12"></a>Experimental option &#8216;ocgcolorlinks&#8217;</h4>
-<!--l. 2095--><p class="noindent" >The idea are colored links, when viewed, but printed without colors. This new experimental option
+<!--l. 2096--><p class="noindent" >The idea are colored links, when viewed, but printed without colors. This new experimental option
&#8216;ocgcolorlinks&#8217; uses Optional Content Groups, a feature introduced in PDF 1.5.
-<!--l. 2099--><p class="indent" > A better implementation which hasn&#8217;t the disadvantage to prevent line breaks is in the ocgx2
+<!--l. 2100--><p class="indent" > A better implementation which hasn&#8217;t the disadvantage to prevent line breaks is in the ocgx2
package. Check its documentation for details how to use it.
<ul class="itemize1">
<li class="itemize">
- <!--l. 2102--><p class="noindent" >The option must be given for package loading: <span class="obeylines-h"><span class="verb"><span
+ <!--l. 2103--><p class="noindent" >The option must be given for package loading: <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\usepackage[ocgcolorlinks]{hyperref}</span></span></span>
</li>
<li class="itemize">
- <!--l. 2104--><p class="noindent" >Main disadvantage: Links cannot be broken across lines. PDF reference 1.7: 4.10.2 &#8220;Making
+ <!--l. 2105--><p class="noindent" >Main disadvantage: Links cannot be broken across lines. PDF reference 1.7: 4.10.2 &#8220;Making
Graphical Content Optional&#8221;: Graphics state operations, such as setting the color, ..., are
still applied. Therefore the link text is put in a box and set twice, with and without color.
</li>
<li class="itemize">
- <!--l. 2110--><p class="noindent" >The feature can be switched of by <span class="obeylines-h"><span class="verb"><span
+ <!--l. 2111--><p class="noindent" >The feature can be switched of by <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hypersetup{ocgcolorlinks=false}</span></span></span> inside the document.
</li>
<li class="itemize">
- <!--l. 2112--><p class="noindent" >Supported drivers: pdftex, dvipdfm
+ <!--l. 2113--><p class="noindent" >Supported drivers: pdftex, dvipdfm
</li>
<li class="itemize">
- <!--l. 2113--><p class="noindent" >The PDF version should be at least 1.5. It is automatically set for pdfTeX, LuaTeX and
+ <!--l. 2114--><p class="noindent" >The PDF version should be at least 1.5. It is automatically set for pdfTeX, LuaTeX and
dvipdfmx.</li></ul>
-<!--l. 2117--><p class="noindent" >
+<!--l. 2118--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.13 </span> <a
id="x1-420007.13"></a>Option &#8216;pdfa&#8217;</h4>
-<!--l. 2119--><p class="noindent" >The new option &#8216;pdfa&#8217; tries to avoid violations of PDF/A in code generated by <span
+<!--l. 2120--><p class="noindent" >The new option &#8216;pdfa&#8217; tries to avoid violations of PDF/A in code generated by <span
class="ec-lmss-10">hyperref</span>. However, the
result is usually not in PDF/A, because many features aren&#8217;t controlled by <span
class="ec-lmss-10">hyperref </span>(XMP metadata,
fonts, colors, driver dependend low level stuff, ...).
-<!--l. 2126--><p class="indent" > Currently, option &#8216;pdfa&#8217; sets and disables the following items:
+<!--l. 2127--><p class="indent" > Currently, option &#8216;pdfa&#8217; sets and disables the following items:
<ul class="itemize1">
<li class="itemize">
- <!--l. 2128--><p class="noindent" >Enabled annotation flags: Print, NoZoom, NoRotate [PDF/A 6.5.3].
+ <!--l. 2129--><p class="noindent" >Enabled annotation flags: Print, NoZoom, NoRotate [PDF/A 6.5.3].
</li>
<li class="itemize">
- <!--l. 2129--><p class="noindent" >Disabled annotation flags: Hidden, Invisible, NoView [PDF/A 6.5.3].
+ <!--l. 2130--><p class="noindent" >Disabled annotation flags: Hidden, Invisible, NoView [PDF/A 6.5.3].
</li>
<li class="itemize">
- <!--l. 2130--><p class="noindent" >Disabled: Launch action (<a
+ <!--l. 2131--><p class="noindent" >Disabled: Launch action (<a
href="run:..." >[</a>PDF/A 6.6.1].
</li>
<li class="itemize">
- <!--l. 2131--><p class="noindent" >Restricted: Named actions (NextPage, PrevPage, FirstPage, LastPage) [PDF/A 6.6.1].
+ <!--l. 2132--><p class="noindent" >Restricted: Named actions (NextPage, PrevPage, FirstPage, LastPage) [PDF/A 6.6.1].
</li>
<li class="itemize">
- <!--l. 2133--><p class="noindent" >Many things are disabled in PDF formulars:
+ <!--l. 2134--><p class="noindent" >Many things are disabled in PDF formulars:
<ul class="itemize2">
<li class="itemize">
- <!--l. 2135--><p class="noindent" >JavaScript actions [PDF/A 6.6.1]
+ <!--l. 2136--><p class="noindent" >JavaScript actions [PDF/A 6.6.1]
</li>
<li class="itemize">
- <!--l. 2136--><p class="noindent" >Trigger events (additional actions) [PDF/A 6.6.2]
+ <!--l. 2137--><p class="noindent" >Trigger events (additional actions) [PDF/A 6.6.2]
</li>
<li class="itemize">
- <!--l. 2137--><p class="noindent" >Push button (because of JavaScript)
+ <!--l. 2138--><p class="noindent" >Push button (because of JavaScript)
</li>
<li class="itemize">
- <!--l. 2138--><p class="noindent" >Interactive Forms: Flag NeedAppearances is the default &#8216;false&#8217; (Because of this,
+ <!--l. 2139--><p class="noindent" >Interactive Forms: Flag NeedAppearances is the default &#8216;false&#8217; (Because of this,
<span
class="ec-lmss-10">hyperref</span>&#8217;s implementation of Forms looks ugly). [PDF/A 6.9]</li></ul>
</li></ul>
-<!--l. 2146--><p class="indent" > The default value of the new option &#8216;pdfa&#8217; is &#8216;false&#8217;. It influences the loading of the package and
+<!--l. 2147--><p class="indent" > The default value of the new option &#8216;pdfa&#8217; is &#8216;false&#8217;. It influences the loading of the package and
cannot be changed after <span
class="ec-lmss-10">hyperref </span>is loaded (<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\usepackage{hyperref}</span></span></span>).
-<!--l. 2152--><p class="noindent" >
+<!--l. 2153--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.14 </span> <a
id="x1-430007.14"></a>Option &#8216;linktoc&#8217; added</h4>
-<!--l. 2154--><p class="noindent" >The new option &#8216;linktoc&#8217; allows more control which part of an entry in the table of contents is made into
+<!--l. 2155--><p class="noindent" >The new option &#8216;linktoc&#8217; allows more control which part of an entry in the table of contents is made into
a link:
<ul class="itemize1">
<li class="itemize">
- <!--l. 2157--><p class="noindent" >&#8216;linktoc=none&#8217; (no links)
+ <!--l. 2158--><p class="noindent" >&#8216;linktoc=none&#8217; (no links)
</li>
<li class="itemize">
- <!--l. 2158--><p class="noindent" >&#8216;linktoc=section&#8217; (default behaviour, same as &#8216;linktocpage=false&#8217;)
+ <!--l. 2159--><p class="noindent" >&#8216;linktoc=section&#8217; (default behaviour, same as &#8216;linktocpage=false&#8217;)
</li>
<li class="itemize">
- <!--l. 2159--><p class="noindent" >&#8216;linktoc=page&#8217; (same as &#8216;linktocpage=true&#8217;)
+ <!--l. 2160--><p class="noindent" >&#8216;linktoc=page&#8217; (same as &#8216;linktocpage=true&#8217;)
</li>
<li class="itemize">
- <!--l. 2160--><p class="noindent" >&#8216;linktoc=all&#8217; (both the section and page part are links)</li></ul>
-<!--l. 2163--><p class="noindent" >
+ <!--l. 2161--><p class="noindent" >&#8216;linktoc=all&#8217; (both the section and page part are links)</li></ul>
+<!--l. 2164--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.15 </span> <a
id="x1-440007.15"></a>Option &#8216;pdfnewwindow&#8217; changed</h4>
-<!--l. 2165--><p class="noindent" >Before 6.77b:
+<!--l. 2166--><p class="noindent" >Before 6.77b:
<ul class="itemize1">
<li class="itemize">
- <!--l. 2167--><p class="noindent" >pdfnewwindow=true <span
+ <!--l. 2168--><p class="noindent" >pdfnewwindow=true <span
class="lmsy-10">&#x2192; </span>/NewWindow true
</li>
<li class="itemize">
- <!--l. 2168--><p class="noindent" >pdfnewwindow=false <span
+ <!--l. 2169--><p class="noindent" >pdfnewwindow=false <span
class="lmsy-10">&#x2192; </span>(absent)
</li>
<li class="itemize">
- <!--l. 2169--><p class="noindent" >unused pdfnewwindow <span
+ <!--l. 2170--><p class="noindent" >unused pdfnewwindow <span
class="lmsy-10">&#x2192; </span>(absent)</li></ul>
-<!--l. 2171--><p class="noindent" >Since 6.77b:
+<!--l. 2172--><p class="noindent" >Since 6.77b:
<ul class="itemize1">
<li class="itemize">
- <!--l. 2173--><p class="noindent" >pdfnewwindow=true <span
+ <!--l. 2174--><p class="noindent" >pdfnewwindow=true <span
class="lmsy-10">&#x2192; </span>/NewWindow true
</li>
<li class="itemize">
- <!--l. 2174--><p class="noindent" >pdfnewwindow=false <span
+ <!--l. 2175--><p class="noindent" >pdfnewwindow=false <span
class="lmsy-10">&#x2192; </span>/NewWindow false
</li>
<li class="itemize">
- <!--l. 2175--><p class="noindent" >pdfnewwindow= <span
+ <!--l. 2176--><p class="noindent" >pdfnewwindow= <span
class="lmsy-10">&#x2192; </span>(absent)
</li>
<li class="itemize">
- <!--l. 2176--><p class="noindent" >unused pdfnewwindow <span
+ <!--l. 2177--><p class="noindent" >unused pdfnewwindow <span
class="lmsy-10">&#x2192; </span>(absent)</li></ul>
-<!--l. 2181--><p class="indent" > Rationale: There is a difference between setting to &#8216;false&#8217; and an absent entry. In the former case the
+<!--l. 2182--><p class="indent" > Rationale: There is a difference between setting to &#8216;false&#8217; and an absent entry. In the former case the
new document replaces the old one, in the latter case the PDF viewer application should respect the user
preference.
-<!--l. 2187--><p class="noindent" >
+<!--l. 2188--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.16 </span> <a
id="x1-450007.16"></a>Flag options for PDF forms</h4>
-<!--l. 2189--><p class="noindent" >PDF form field macros (<span class="obeylines-h"><span class="verb"><span
+<!--l. 2190--><p class="noindent" >PDF form field macros (<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\TextField</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\CheckBox</span></span></span>, ...) support boolean flag options. The option name is
the lowercase version of the names in the PDF specification (1.7):
-<!--l. 2193--><p class="indent" > <a
+<!--l. 2194--><p class="indent" > <a
href="http://www.adobe.com/devnet/pdf/pdf_reference.html" class="url" ><span
class="ec-lmvtt-10">http://www.adobe.com/devnet/pdf/pdf_reference.html</span></a>
-<!--l. 2195--><p class="indent" > <a
+<!--l. 2196--><p class="indent" > <a
href="http://www.adobe.com/devnet/acrobat/pdfs/pdf_reference.pdf" class="url" ><span
class="ec-lmvtt-10">http://www.adobe.com/devnet/acrobat/pdfs/pdf_reference.pdf</span></a>
-<!--l. 2197--><p class="indent" > Options (convert to lowercase) except flags in square brackets:
+<!--l. 2198--><p class="indent" > Options (convert to lowercase) except flags in square brackets:
<ul class="itemize1">
<li class="itemize">
- <!--l. 2200--><p class="noindent" >Table 8.16 Annotation flags (page 608):
- <!--l. 2202--><p class="noindent" ><div class="obeylines-v">
+ <!--l. 2201--><p class="noindent" >Table 8.16 Annotation flags (page 608):
+ <!--l. 2203--><p class="noindent" ><div class="obeylines-v">
<br />1 Invisible
<br />2 Hidden (PDF 1.2)
<br />3 Print (PDF 1.2)
@@ -5681,23 +5685,23 @@ class="ec-lmvtt-10">http://www.adobe.com/devnet/acrobat/pdfs/pdf_reference.pdf</
<br />10 LockedContents (PDF 1.7)</div>
</li>
<li class="itemize">
- <!--l. 2214--><p class="noindent" >Table 8.70 Field flags common to all field types (page 676):
- <!--l. 2216--><p class="noindent" ><div class="obeylines-v">
+ <!--l. 2215--><p class="noindent" >Table 8.70 Field flags common to all field types (page 676):
+ <!--l. 2217--><p class="noindent" ><div class="obeylines-v">
<br />1 ReadOnly
<br />2 Required
<br />3 NoExport</div>
</li>
<li class="itemize">
- <!--l. 2221--><p class="noindent" >Table 8.75 Field flags specific to button fields (page 686):
- <!--l. 2223--><p class="noindent" ><div class="obeylines-v">
+ <!--l. 2222--><p class="noindent" >Table 8.75 Field flags specific to button fields (page 686):
+ <!--l. 2224--><p class="noindent" ><div class="obeylines-v">
<br />15 NoToggleToOff (Radio buttons only)
<br />16 Radio (set: radio buttons, clear: check box, pushbutton: clear)
<br />17 Pushbutton
<br />26 RadiosInUniso (PDF 1.5)</div>
</li>
<li class="itemize">
- <!--l. 2229--><p class="noindent" >Table 8.77 Field flags specific to text fields (page 691):
- <!--l. 2231--><p class="noindent" ><div class="obeylines-v">
+ <!--l. 2230--><p class="noindent" >Table 8.77 Field flags specific to text fields (page 691):
+ <!--l. 2232--><p class="noindent" ><div class="obeylines-v">
<br />13 Multiline
<br />14 Password
<br />21 FileSelect (PDF 1.4)
@@ -5708,8 +5712,8 @@ class="ec-lmvtt-10">http://www.adobe.com/devnet/acrobat/pdfs/pdf_reference.pdf</
</li>
<li class="itemize">
- <!--l. 2240--><p class="noindent" >Table 8.79 Field flags specific to choice fields (page 693):
- <!--l. 2242--><p class="noindent" ><div class="obeylines-v">
+ <!--l. 2241--><p class="noindent" >Table 8.79 Field flags specific to choice fields (page 693):
+ <!--l. 2243--><p class="noindent" ><div class="obeylines-v">
<br />18 Combo (set: combo box, clear: list box)
<br />19 Edit (only useful if Combo is set)
<br />20 (Sort) for authoring tools, not PDF viewers
@@ -5718,8 +5722,8 @@ class="ec-lmvtt-10">http://www.adobe.com/devnet/acrobat/pdfs/pdf_reference.pdf</
<br />27 CommitOnSelChange (PDF 1.5)</div>
</li>
<li class="itemize">
- <!--l. 2250--><p class="noindent" >Table 8.86 Flags for submit-form actions (page 704):
- <!--l. 2252--><p class="noindent" ><div class="obeylines-v">
+ <!--l. 2251--><p class="noindent" >Table 8.86 Flags for submit-form actions (page 704):
+ <!--l. 2253--><p class="noindent" ><div class="obeylines-v">
<br />[1 Include/Exclude] unsupported, use &#8216;noexport&#8217; (table 8.70) instead
<br />2 IncludeNoValueFields
<br />[3 ExportFormat] handled by option &#8216;export&#8217;
@@ -5734,35 +5738,35 @@ class="ec-lmvtt-10">http://www.adobe.com/devnet/acrobat/pdfs/pdf_reference.pdf</
<br />12 ExclFKey (PDF 1.4)
<br />14 EmbedForm (PDF 1.5)</div>
</li></ul>
-<!--l. 2269--><p class="indent" > New option &#8216;export&#8217; sets the export format of a submit action. Valid values are (upper- or
+<!--l. 2270--><p class="indent" > New option &#8216;export&#8217; sets the export format of a submit action. Valid values are (upper- or
lowercase):
<ul class="itemize1">
<li class="itemize">
- <!--l. 2272--><p class="noindent" >FDF
+ <!--l. 2273--><p class="noindent" >FDF
</li>
<li class="itemize">
- <!--l. 2273--><p class="noindent" >HTML
+ <!--l. 2274--><p class="noindent" >HTML
</li>
<li class="itemize">
- <!--l. 2274--><p class="noindent" >XFDF
+ <!--l. 2275--><p class="noindent" >XFDF
</li>
<li class="itemize">
- <!--l. 2275--><p class="noindent" >PDF (not supported by Acrobat Reader)</li></ul>
-<!--l. 2278--><p class="noindent" >
+ <!--l. 2276--><p class="noindent" >PDF (not supported by Acrobat Reader)</li></ul>
+<!--l. 2279--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.17 </span> <a
id="x1-460007.17"></a>Option &#8216;pdfversion&#8217;</h4>
-<!--l. 2280--><p class="noindent" >This is an experimental option. It notifies &#8216;hyperref&#8217; about the intended PDF version. Currently this is
+<!--l. 2281--><p class="noindent" >This is an experimental option. It notifies &#8216;hyperref&#8217; about the intended PDF version. Currently this is
used in code for PDF forms (implementation notes 116 and 122 of PDF spec 1.7).
-<!--l. 2286--><p class="indent" > Values: 1.2, 1.3, 1.4, 1.5, 1.6, 1.7. Values below 1.2 are not supported, because most drivers expect
+<!--l. 2287--><p class="indent" > Values: 1.2, 1.3, 1.4, 1.5, 1.6, 1.7. Values below 1.2 are not supported, because most drivers expect
higher PDF versions.
-<!--l. 2291--><p class="indent" > The option must be used early, not after <span class="obeylines-h"><span class="verb"><span
+<!--l. 2292--><p class="indent" > The option must be used early, not after <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\usepackage{hyperref}</span></span></span>.
-<!--l. 2294--><p class="indent" > In theory this option should also set the PDF version, but this is not generally supported.
+<!--l. 2295--><p class="indent" > In theory this option should also set the PDF version, but this is not generally supported.
<ul class="itemize1">
<li class="itemize">
- <!--l. 2297--><p class="noindent" >pdfTeX below 1.10a: unsupported. pdfTeX <span
+ <!--l. 2298--><p class="noindent" >pdfTeX below 1.10a: unsupported. pdfTeX <span
class="lmsy-10">&#x2265; </span>1.10a and &#x003C; 1.30: <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\pdfoptionpdfminorversion</span></span></span>
pdfTeX <span
@@ -5770,69 +5774,69 @@ class="lmsy-10">&#x2265; </span>1.30: <span class="obeylines-h"><span class="ver
class="ec-lmvtt-10">\pdfminorversion</span></span></span>
</li>
<li class="itemize">
- <!--l. 2300--><p class="noindent" >dvipdfm: configuration file, example: TeX Live 2007, texmf/dvipdfm/config/config, entry &#8216;V
+ <!--l. 2301--><p class="noindent" >dvipdfm: configuration file, example: TeX Live 2007, texmf/dvipdfm/config/config, entry &#8216;V
2&#8217;.
</li>
<li class="itemize">
- <!--l. 2302--><p class="noindent" >dvipdfmx: configuration file, example: TeX Live 2007, texmf/dvipdfm/dvipdfmx.cfg, entry
+ <!--l. 2303--><p class="noindent" >dvipdfmx: configuration file, example: TeX Live 2007, texmf/dvipdfm/dvipdfmx.cfg, entry
&#8216;V 4&#8217;.
</li>
<li class="itemize">
- <!--l. 2304--><p class="noindent" >Ghostscript: option -dCompatibilityLevel (this is set in &#8216;ps2pdf12&#8217;, &#8216;ps2pdf13&#8217;, &#8216;ps2pdf14&#8217;).</li></ul>
-<!--l. 2309--><p class="indent" > The current PDF version is used as default if this version can be detected (only pdfTeX <span
+ <!--l. 2305--><p class="noindent" >Ghostscript: option -dCompatibilityLevel (this is set in &#8216;ps2pdf12&#8217;, &#8216;ps2pdf13&#8217;, &#8216;ps2pdf14&#8217;).</li></ul>
+<!--l. 2310--><p class="indent" > The current PDF version is used as default if this version can be detected (only pdfTeX <span
class="lmsy-10">&#x2265; </span>1.10a).
Otherwise the lowest version 1.2 is assumed. Thus &#8216;hyperref&#8217; tries to avoid PDF code that breaks this
version, but is free to use ignorable higher PDF features.
-<!--l. 2316--><p class="noindent" >
+<!--l. 2317--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.18 </span> <a
id="x1-470007.18"></a>Field option &#8216;name&#8217;</h4>
-<!--l. 2318--><p class="noindent" >Many form objects uses the label argument for several purposes:
+<!--l. 2319--><p class="noindent" >Many form objects uses the label argument for several purposes:
<ul class="itemize1">
<li class="itemize">
- <!--l. 2321--><p class="noindent" >Layouted label.
+ <!--l. 2322--><p class="noindent" >Layouted label.
</li>
<li class="itemize">
- <!--l. 2322--><p class="noindent" >As name in HTML structures.</li></ul>
-<!--l. 2324--><p class="noindent" >Code that is suitable for layouting with TeX can break in the structures of the output format. If option
+ <!--l. 2323--><p class="noindent" >As name in HTML structures.</li></ul>
+<!--l. 2325--><p class="noindent" >Code that is suitable for layouting with TeX can break in the structures of the output format. If option
&#8216;name&#8217; is given, then its value is used as name in the different output structures. Thus the value should
consist of letters only.
-<!--l. 2331--><p class="noindent" >
+<!--l. 2332--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.19 </span> <a
id="x1-480007.19"></a>Option &#8216;pdfencoding&#8217;</h4>
-<!--l. 2333--><p class="noindent" >The PDF format allows two encodings for bookmarks and entries in the information dictionary:
+<!--l. 2334--><p class="noindent" >The PDF format allows two encodings for bookmarks and entries in the information dictionary:
PDFDocEncoding and Unicode as UTF-16BE. Option <span
class="ec-lmss-10">pdfencoding </span>selects between these
encodings:
<ul class="itemize1">
<li class="itemize">
- <!--l. 2337--><p class="noindent" ><span
+ <!--l. 2338--><p class="noindent" ><span
class="ec-lmss-10">pdfdoc </span>uses PDFDocEncoding. It uses just one byte per character, but the supported
characters are limited (244 in PDF-1.7).
</li>
<li class="itemize">
- <!--l. 2339--><p class="noindent" ><span
+ <!--l. 2340--><p class="noindent" ><span
class="ec-lmss-10">unicode </span>sets Unicode. It is encoded as UTF-16BE. Two bytes are used for most characters,
surrogates need four bytes.
</li>
<li class="itemize">
- <!--l. 2341--><p class="noindent" ><span
+ <!--l. 2342--><p class="noindent" ><span
class="ec-lmss-10">auto </span>PDFDocEncoding if the string does not contain characters outside the encoding (outside
ascii if an unicode engine is used) and Unicode otherwise. This option is not intended for
the unicode engines.</li></ul>
-<!--l. 2346--><p class="indent" > All drivers use <span
+<!--l. 2347--><p class="indent" > All drivers use <span
class="ec-lmss-10">unicode </span>by default now. If another encoding should be forced, it should be done in
<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">hypersetup</span></span></span>.
-<!--l. 2349--><p class="noindent" >
+<!--l. 2350--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.20 </span> <a
id="x1-490007.20"></a>Color options/package hycolor</h4>
-<!--l. 2351--><p class="noindent" >See documentation of package &#8216;hycolor&#8217;.
-<!--l. 2354--><p class="noindent" >
+<!--l. 2352--><p class="noindent" >See documentation of package &#8216;hycolor&#8217;.
+<!--l. 2355--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.21 </span> <a
id="x1-500007.21"></a>Option pdfusetitle</h4>
-<!--l. 2356--><p class="noindent" >If option pdfusetitle is set then <span
+<!--l. 2357--><p class="noindent" >If option pdfusetitle is set then <span
class="ec-lmss-10">hyperref </span>tries to derive the values for pdftitle and pdfauthor
from <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\title</span></span></span> and <span class="obeylines-h"><span class="verb"><span
@@ -5840,28 +5844,28 @@ class="ec-lmvtt-10">\author</span></span></span>. An optional argument for <span
class="ec-lmvtt-10">\title</span></span></span> and <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\author</span></span></span> is supported (class
amsart).
-<!--l. 2362--><p class="noindent" >
+<!--l. 2363--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.22 </span> <a
id="x1-510007.22"></a>Starred form of \autoref</h4>
-<!--l. 2364--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
+<!--l. 2365--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\autoref*</span></span></span> generates a reference without link as <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\ref*</span></span></span> or <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\pageref*</span></span></span>.
-<!--l. 2367--><p class="noindent" >
+<!--l. 2368--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.23 </span> <a
id="x1-520007.23"></a>Link border style</h4>
-<!--l. 2369--><p class="noindent" >Links can be underlined instead of the default rectangle or options <span
+<!--l. 2370--><p class="noindent" >Links can be underlined instead of the default rectangle or options <span
class="ec-lmss-10">colorlinks</span>, <span
class="ec-lmss-10">frenchlinks</span>. This is done by
option <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">pdfborderstyle={/S/U/W</span><span
class="ec-lmvtt-10">&#x00A0;1}</span></span></span>
-<!--l. 2373--><p class="indent" > Some remarks:
+<!--l. 2374--><p class="indent" > Some remarks:
<ul class="itemize1">
<li class="itemize">
- <!--l. 2376--><p class="noindent" >AR7/Linux seems to have a bug, that don&#8217;t use the default value <span class="obeylines-h"><span class="verb"><span
+ <!--l. 2377--><p class="noindent" >AR7/Linux seems to have a bug, that don&#8217;t use the default value <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">1</span></span></span> for the width, but zero,
thus that the underline is not visible without <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">/W</span><span
@@ -5869,44 +5873,44 @@ class="ec-lmvtt-10">&#x00A0;1</span></span></span>. The same applies for dashed
pdfborderstyle=/S/D/D[3 2]/W 1
</li>
<li class="itemize">
- <!--l. 2382--><p class="noindent" >The syntax is described in the PDF specification, look for &#8220;border style&#8221;, eg. Table 8.13
+ <!--l. 2383--><p class="noindent" >The syntax is described in the PDF specification, look for &#8220;border style&#8221;, eg. Table 8.13
&#8220;Entries in a border style dictionary&#8221; (specification for version 1.6)
</li>
<li class="itemize">
- <!--l. 2387--><p class="noindent" >The border style is removed by pdfborderstyle= This is automatically done if option
+ <!--l. 2388--><p class="noindent" >The border style is removed by pdfborderstyle= This is automatically done if option
colorlinks is enabled.
</li>
<li class="itemize">
- <!--l. 2391--><p class="noindent" >Be aware that not all PDF viewers support this feature, not even Acrobat Reader itself:
- <!--l. 2394--><p class="noindent" >Some support:
+ <!--l. 2392--><p class="noindent" >Be aware that not all PDF viewers support this feature, not even Acrobat Reader itself:
+ <!--l. 2395--><p class="noindent" >Some support:
<ul class="itemize2">
<li class="itemize">
- <!--l. 2396--><p class="noindent" >AR7/Linux: <span
+ <!--l. 2397--><p class="noindent" >AR7/Linux: <span
class="ec-lmss-10">underline </span>and <span
class="ec-lmss-10">dashed</span>, but the border width must be given.
</li>
<li class="itemize">
- <!--l. 2398--><p class="noindent" >xpdf 3.00: <span
+ <!--l. 2399--><p class="noindent" >xpdf 3.00: <span
class="ec-lmss-10">underline </span>and <span
class="ec-lmss-10">dashed</span></li></ul>
- <!--l. 2401--><p class="noindent" >Unsupported:
+ <!--l. 2402--><p class="noindent" >Unsupported:
<ul class="itemize2">
<li class="itemize">
- <!--l. 2403--><p class="noindent" >AR5/Linux
+ <!--l. 2404--><p class="noindent" >AR5/Linux
</li>
<li class="itemize">
- <!--l. 2404--><p class="noindent" >ghostscript 8.50</li></ul>
+ <!--l. 2405--><p class="noindent" >ghostscript 8.50</li></ul>
</li></ul>
-<!--l. 2408--><p class="noindent" >
+<!--l. 2409--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.24 </span> <a
id="x1-530007.24"></a>Option <span
class="ec-lmss-10">bookmarksdepth</span></h4>
-<!--l. 2410--><p class="noindent" >The depth of the bookmarks can be controlled by the new option <span
+<!--l. 2411--><p class="noindent" >The depth of the bookmarks can be controlled by the new option <span
class="ec-lmss-10">bookmarksdepth</span>. The option acts
globally and distinguishes three cases:
<ul class="itemize1">
<li class="itemize">
- <!--l. 2414--><p class="noindent" ><span
+ <!--l. 2415--><p class="noindent" ><span
class="ec-lmss-10">bookmarksdepth </span>without value Then <span
class="ec-lmss-10">hyperref </span>uses the current value of counter <span
class="ec-lmss-10">tocdepth</span>. This
@@ -5915,12 +5919,12 @@ class="ec-lmss-10">tocdepth</span>. This
</li>
<li class="itemize">
- <!--l. 2417--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
+ <!--l. 2418--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">bookmarksdepth=&#x003C;number&#x003E;</span></span></span>, the value is number (also negative): The depth for the
bookmarks are set to this number.
</li>
<li class="itemize">
- <!--l. 2419--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
+ <!--l. 2420--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">bookmarksdepth=&#x003C;name&#x003E;</span></span></span> The &#x003C;name&#x003E; is a document division name (part, chapter, ...). It must
not start with a digit or minus to avoid mixing up with the number case. Internally <span
class="ec-lmss-10">hyperref </span>uses
@@ -5933,32 +5937,32 @@ class="ec-lmvtt-10">\toclevel@&#x003C;name&#x003E;</span></span></span>. Example
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\hypersetup{bookmarksdepth=4}&#x00A0;%&#x00A0;same&#x00A0;as&#x00A0;before
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\hypersetup{bookmarksdepth}&#x00A0;%&#x00A0;counter&#x00A0;"tocdepth"&#x00A0;is&#x00A0;used
</pre>
- <!--l. 2429--><p class="nopar" ></li></ul>
-<!--l. 2432--><p class="noindent" >
+ <!--l. 2430--><p class="nopar" ></li></ul>
+<!--l. 2433--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.25 </span> <a
id="x1-540007.25"></a>Option <span
class="ec-lmss-10">pdfescapeform</span></h4>
-<!--l. 2434--><p class="noindent" >There are many places where arbitrary strings end up as PS or PDF strings. The PS/PDF strings in
+<!--l. 2435--><p class="noindent" >There are many places where arbitrary strings end up as PS or PDF strings. The PS/PDF strings in
parentheses form require the protection of some characters, e.g. unmatched left or right parentheses need
escaping or the escape character itself (backslash). Since 2006/02/12&#x00A0;v6.75a the PS/PDF driver
should do this automatically. However I assume a problem with compatibility, especially
regarding the form part where larger amounts of JavaScript code can be present. It would
be a pain to remove all the escaping, because an additional escaping layer can falsify the
code.
-<!--l. 2446--><p class="indent" > Therefore a new option pdfescapeform was introduced:
+<!--l. 2447--><p class="indent" > Therefore a new option pdfescapeform was introduced:
<ul class="itemize1">
<li class="itemize">
- <!--l. 2448--><p class="noindent" >pdfescapeform=false Escaping for the formulars are disabled, this is the compatibility
+ <!--l. 2449--><p class="noindent" >pdfescapeform=false Escaping for the formulars are disabled, this is the compatibility
behaviour, therefore this is the default.
</li>
<li class="itemize">
- <!--l. 2451--><p class="noindent" >pdfescapeform=true Then the PS/PDF drivers do all the necessary escaping. This is the
+ <!--l. 2452--><p class="noindent" >pdfescapeform=true Then the PS/PDF drivers do all the necessary escaping. This is the
logical choice and the recommended setting. For example, the user writes JavaScript as
JavaScript and do not care about escaping characters for PS/PDF output.</li></ul>
-<!--l. 2459--><p class="noindent" >
+<!--l. 2460--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.26 </span> <a
id="x1-550007.26"></a>Default driver setting</h4>
-<!--l. 2461--><p class="noindent" >(hyperref <span
+<!--l. 2462--><p class="noindent" >(hyperref <span
class="lmsy-10">&#x2265; </span>6.72s) If no driver is given, <span
class="ec-lmss-10">hyperref </span>tries its best to guess the most suitable
driver. Thus it loads <span
@@ -5976,19 +5980,19 @@ class="ec-lmvtt-10">hyperref.cfg</span></span></span>:
<pre class="verbatim" id="verbatim-46">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\providecommand*{\Hy@defaultdriver}{hdvips}
</pre>
-<!--l. 2474--><p class="nopar" > for dvips, or
+<!--l. 2475--><p class="nopar" > for dvips, or
<pre class="verbatim" id="verbatim-47">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\providecommand*{\Hy@defaultdriver}{hypertex}
</pre>
-<!--l. 2478--><p class="nopar" > for the default behaviour of <span
+<!--l. 2479--><p class="nopar" > for the default behaviour of <span
class="ec-lmss-10">hyperref</span>.
-<!--l. 2481--><p class="indent" > See also the new option &#8216;driverfallback&#8217;.
-<!--l. 2483--><p class="noindent" >
+<!--l. 2482--><p class="indent" > See also the new option &#8216;driverfallback&#8217;.
+<!--l. 2484--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.27 </span> <a
id="x1-560007.27"></a>Backref entries</h4>
-<!--l. 2485--><p class="noindent" >Alternative interface for formatting of backref entries, example:
+<!--l. 2486--><p class="noindent" >Alternative interface for formatting of backref entries, example:
<pre class="verbatim" id="verbatim-48">
@@ -6081,11 +6085,11 @@ class="ec-lmss-10">hyperref</span>.
\end{document}
</pre>
-<!--l. 2574--><p class="nopar" >
-<!--l. 2576--><p class="noindent" >
+<!--l. 2575--><p class="nopar" >
+<!--l. 2577--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.28 </span> <a
id="x1-570007.28"></a>\phantomsection</h4>
-<!--l. 2578--><p class="noindent" >Set an anchor at this location. It is often used in conjunction with <span class="obeylines-h"><span class="verb"><span
+<!--l. 2579--><p class="noindent" >Set an anchor at this location. It is often used in conjunction with <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\addcontentsline</span></span></span> for sectionlike things
(index, bibliography, preface). <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\addcontentsline</span></span></span> refers to the latest previous location where an anchor is
@@ -6098,13 +6102,13 @@ set.
&#x00A0;&#x00A0;\addcontentsline{toc}{chapter}{\indexname}
&#x00A0;&#x00A0;\printindex
</pre>
-<!--l. 2588--><p class="nopar" >
-<!--l. 2590--><p class="indent" > Now the entry in the table of contents (and bookmarks) for the index points to the start of the index
+<!--l. 2589--><p class="nopar" >
+<!--l. 2591--><p class="indent" > Now the entry in the table of contents (and bookmarks) for the index points to the start of the index
page, not to a location before this page.
-<!--l. 2594--><p class="noindent" >
+<!--l. 2595--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.29 </span> <a
id="x1-580007.29"></a>puenc encoding, puenc-greekbasic.def and puenc-extra.def</h4>
-<!--l. 2596--><p class="noindent" >The <span
+<!--l. 2597--><p class="noindent" >The <span
class="ec-lmvtt-10">unicode </span>option loads for the bookmarks <span
class="ec-lmvtt-10">puenc.def </span>which contains quite a lot definitions of
commands for the bookmarks. As <span
@@ -6115,27 +6119,27 @@ class="ec-lmss-10">hyperref </span>uses
two strategies.
<ul class="itemize1">
<li class="itemize">
- <!--l. 2603--><p class="noindent" >A number of command are only defined conditionally: The commands for the cyrillic block
+ <!--l. 2604--><p class="noindent" >A number of command are only defined conditionally: The commands for the cyrillic block
if <span
class="ec-lmvtt-10">\CYRDZE </span>is defined, greek if <span
class="ec-lmvtt-10">\textBeta </span>is defined, and hebrew if <span
class="ec-lmvtt-10">\hebdalet </span>is defined.
- <!--l. 2607--><p class="noindent" >The greek block is in an extra file, <span
+ <!--l. 2608--><p class="noindent" >The greek block is in an extra file, <span
class="ec-lmvtt-10">puenc-greekbasic.def</span>, which can be loaded manually if
needed.
</li>
<li class="itemize">
- <!--l. 2610--><p class="noindent" >Other commands are moved to an extra file <span
+ <!--l. 2611--><p class="noindent" >Other commands are moved to an extra file <span
class="ec-lmvtt-10">puenc-extra.def </span>which is not loaded
automatically, but can be loaded in the preamble if needed. Currently this file contains all
definitions for the accent <span
class="ec-lmvtt-10">\G</span>.</li></ul>
-<!--l. 2617--><p class="noindent" >
+<!--l. 2618--><p class="noindent" >
<h3 class="sectionHead"><span class="titlemark">8 </span> <a
id="x1-590008"></a>Acrobat-specific behavior</h3>
-<!--l. 2618--><p class="noindent" >If you want to access the menu options of Acrobat Reader or Exchange, the following macro is provided
+<!--l. 2619--><p class="noindent" >If you want to access the menu options of Acrobat Reader or Exchange, the following macro is provided
in the appropriate drivers:
-<!--l. 2621--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-44" class="tabular"
+<!--l. 2622--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-44" class="tabular"
><colgroup id="TBL-44-1g"><col
id="TBL-44-1"></colgroup><tr
@@ -6148,17 +6152,17 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 2625--><p class="noindent" >The <span
+<!--l. 2626--><p class="noindent" >The <span
class="ec-lmri-10">text </span>is used to create a button which activates the appropriate <span
class="ec-lmri-10">menuoption</span>. The following table lists
the option names you can use&#8212;comparison of this with the menus in Acrobat Reader or Exchange will
show what they do. Obviously some are only appropriate to Exchange.
-<!--l. 2628--><p class="indent" >
+<!--l. 2629--><p class="indent" >
<a
id="x1-59001r13"></a>
- <!--l. 2629--><div class="longtable"> <table id="TBL-45" class="longtable"
+ <!--l. 2630--><div class="longtable"> <table id="TBL-45" class="longtable"
><colgroup id="TBL-45-1g"><col
id="TBL-45-1"><col
@@ -6167,7 +6171,7 @@ id="TBL-45-2"></colgroup>
style="vertical-align:baseline;" id="TBL-45-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-1-1"
class="td01">File </td><td style="white-space:normal; text-align:left;" id="TBL-45-1-2"
class="td10">
- <!--l. 2629--><p class="noindent" >Open,
+ <!--l. 2630--><p class="noindent" >Open,
Close,
Scan,
Save,
@@ -6181,7 +6185,7 @@ class="td10">
class="td01">File<span
class="lmsy-10">&#x2192;</span>Import </td><td style="white-space:normal; text-align:left;" id="TBL-45-2-2"
class="td10">
- <!--l. 2630--><p class="noindent" >ImportImage,
+ <!--l. 2631--><p class="noindent" >ImportImage,
ImportNotes,
AcroForm:ImportFDF </td>
</tr><tr
@@ -6189,14 +6193,14 @@ class="td10">
class="td01">File<span
class="lmsy-10">&#x2192;</span>Export </td><td style="white-space:normal; text-align:left;" id="TBL-45-3-2"
class="td10">
- <!--l. 2631--><p class="noindent" >ExportNotes,
+ <!--l. 2632--><p class="noindent" >ExportNotes,
AcroForm:ExportFDF </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-45-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-4-1"
class="td01">File<span
class="lmsy-10">&#x2192;</span>DocumentInfo </td><td style="white-space:normal; text-align:left;" id="TBL-45-4-2"
class="td10">
- <!--l. 2632--><p class="noindent" >GeneralInfo,
+ <!--l. 2633--><p class="noindent" >GeneralInfo,
OpenInfo,
FontsInfo,
SecurityInfo,
@@ -6207,7 +6211,7 @@ class="td10">
class="td01">File<span
class="lmsy-10">&#x2192;</span>Preferences </td><td style="white-space:normal; text-align:left;" id="TBL-45-5-2"
class="td10">
- <!--l. 2633--><p class="noindent" >GeneralPrefs,
+ <!--l. 2634--><p class="noindent" >GeneralPrefs,
NotePrefs,
FullScreenPrefs,
Weblink:Prefs,
@@ -6219,7 +6223,7 @@ class="td10">
style="vertical-align:baseline;" id="TBL-45-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-6-1"
class="td01">Edit </td><td style="white-space:normal; text-align:left;" id="TBL-45-6-2"
class="td10">
- <!--l. 2635--><p class="noindent" >Undo,
+ <!--l. 2636--><p class="noindent" >Undo,
Cut,
Copy,
Paste,
@@ -6235,13 +6239,13 @@ class="td10">
style="vertical-align:baseline;" id="TBL-45-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-7-1"
class="td01"> </td><td style="white-space:normal; text-align:left;" id="TBL-45-7-2"
class="td10">
- <!--l. 2638--><p class="noindent" >Properties </td>
+ <!--l. 2639--><p class="noindent" >Properties </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-45-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-8-1"
class="td01">Edit<span
class="lmsy-10">&#x2192;</span>Fields </td><td style="white-space:normal; text-align:left;" id="TBL-45-8-2"
class="td10">
- <!--l. 2639--><p class="noindent" >AcroForm:Duplicate,
+ <!--l. 2640--><p class="noindent" >AcroForm:Duplicate,
AcroForm:TabOrder </td>
@@ -6249,7 +6253,7 @@ class="td10">
style="vertical-align:baseline;" id="TBL-45-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-9-1"
class="td01">Document </td><td style="white-space:normal; text-align:left;" id="TBL-45-9-2"
class="td10">
- <!--l. 2640--><p class="noindent" >Cpt:CapturePages,
+ <!--l. 2641--><p class="noindent" >Cpt:CapturePages,
AcroForm:Actions,
CropPages,
RotatePages,
@@ -6265,7 +6269,7 @@ class="td10">
style="vertical-align:baseline;" id="TBL-45-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-10-1"
class="td01">View </td><td style="white-space:normal; text-align:left;" id="TBL-45-10-2"
class="td10">
- <!--l. 2643--><p class="noindent" >ActualSize,
+ <!--l. 2644--><p class="noindent" >ActualSize,
FitVisible,
FitWidth,
FitPage,
@@ -6289,7 +6293,7 @@ class="td10">
style="vertical-align:baseline;" id="TBL-45-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-11-1"
class="td01">Tools </td><td style="white-space:normal; text-align:left;" id="TBL-45-11-2"
class="td10">
- <!--l. 2646--><p class="noindent" >Hand,
+ <!--l. 2647--><p class="noindent" >Hand,
ZoomIn,
ZoomOut,
SelectText,
@@ -6311,7 +6315,7 @@ class="td10">
class="td01">Tools<span
class="lmsy-10">&#x2192;</span>Search </td><td style="white-space:normal; text-align:left;" id="TBL-45-12-2"
class="td10">
- <!--l. 2649--><p class="noindent" >AcroSrch:Query,
+ <!--l. 2650--><p class="noindent" >AcroSrch:Query,
AcroSrch:Indexes,
AcroSrch:Results,
AcroSrch:Assist,
@@ -6323,7 +6327,7 @@ class="td10">
style="vertical-align:baseline;" id="TBL-45-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-13-1"
class="td01">Window </td><td style="white-space:normal; text-align:left;" id="TBL-45-13-2"
class="td10">
- <!--l. 2651--><p class="noindent" >ShowHideToolBar,
+ <!--l. 2652--><p class="noindent" >ShowHideToolBar,
ShowHideMenuBar,
ShowHideClipboard,
Cascade,
@@ -6334,7 +6338,7 @@ class="td10">
style="vertical-align:baseline;" id="TBL-45-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-14-1"
class="td01">Help </td><td style="white-space:normal; text-align:left;" id="TBL-45-14-2"
class="td10">
- <!--l. 2653--><p class="noindent" >HelpUserGuide,
+ <!--l. 2654--><p class="noindent" >HelpUserGuide,
HelpTutorial,
HelpExchange,
HelpScan,
@@ -6349,7 +6353,7 @@ class="td10">
style="vertical-align:baseline;" id="TBL-45-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-15-1"
class="td01">Help(Windows) </td><td style="white-space:normal; text-align:left;" id="TBL-45-15-2"
class="td10">
- <!--l. 2655--><p class="noindent" >About </td>
+ <!--l. 2656--><p class="noindent" >About </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-45-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-16-1"
class="td01"> </td>
@@ -6364,18 +6368,18 @@ class="td01"> </td>
class="td01"> </td><td style="white-space:normal; text-align:left;" id="TBL-45-19-2"
class="td10"></td></tr>
</table></div>
-<!--l. 2658--><p class="noindent" >
+<!--l. 2659--><p class="noindent" >
<h3 class="sectionHead"><span class="titlemark">9 </span> <a
id="x1-600009"></a>PDF and HTML forms</h3>
-<!--l. 2659--><p class="noindent" >You must put your fields inside a <span
+<!--l. 2660--><p class="noindent" >You must put your fields inside a <span
class="ec-lmvtt-10">Form </span>environment. The environment does some general setups, so
should be used only once in a document. Using simply <span
class="ec-lmvtt-10">\Form </span>at the begin of the document is possible
too.
-<!--l. 2663--><p class="indent" > There are six macros to prepare fields:
+<!--l. 2664--><p class="indent" > There are six macros to prepare fields:
-<!--l. 2665--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-46" class="tabular"
+<!--l. 2666--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-46" class="tabular"
><colgroup id="TBL-46-1g"><col
id="TBL-46-1"></colgroup><tr
@@ -6388,7 +6392,7 @@ class="ec-lmvtt-10">]{</span></span></span><span
class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 2669--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-47" class="tabular"
+<!--l. 2670--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-47" class="tabular"
><colgroup id="TBL-47-1g"><col
id="TBL-47-1"></colgroup><tr
@@ -6401,7 +6405,7 @@ class="ec-lmvtt-10">]{</span></span></span><span
class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 2673--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-48" class="tabular"
+<!--l. 2674--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-48" class="tabular"
><colgroup id="TBL-48-1g"><col
id="TBL-48-1"></colgroup><tr
@@ -6416,7 +6420,7 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">choices</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 2677--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-49" class="tabular"
+<!--l. 2678--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-49" class="tabular"
><colgroup id="TBL-49-1g"><col
id="TBL-49-1"></colgroup><tr
@@ -6429,7 +6433,7 @@ class="ec-lmvtt-10">]{</span></span></span><span
class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 2681--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-50" class="tabular"
+<!--l. 2682--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-50" class="tabular"
><colgroup id="TBL-50-1g"><col
id="TBL-50-1"></colgroup><tr
@@ -6442,7 +6446,7 @@ class="ec-lmvtt-10">]{</span></span></span><span
class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 2685--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-51" class="tabular"
+<!--l. 2686--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-51" class="tabular"
><colgroup id="TBL-51-1g"><col
id="TBL-51-1"></colgroup><tr
@@ -6455,8 +6459,8 @@ class="ec-lmvtt-10">]{</span></span></span><span
class="ec-lmri-10">label</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 2689--><p class="indent" > The way forms and their labels are laid out is determined by:
-<!--l. 2690--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-52" class="tabular"
+<!--l. 2690--><p class="indent" > The way forms and their labels are laid out is determined by:
+<!--l. 2691--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-52" class="tabular"
><colgroup id="TBL-52-1g"><col
id="TBL-52-1"></colgroup><tr
@@ -6469,7 +6473,7 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">field</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 2694--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-53" class="tabular"
+<!--l. 2695--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-53" class="tabular"
><colgroup id="TBL-53-1g"><col
id="TBL-53-1"></colgroup><tr
@@ -6482,7 +6486,7 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">field</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 2698--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-54" class="tabular"
+<!--l. 2699--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-54" class="tabular"
><colgroup id="TBL-54-1g"><col
id="TBL-54-1"></colgroup><tr
@@ -6495,9 +6499,9 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">field</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 2702--><p class="indent" > These macros default to #1 #2
-<!--l. 2704--><p class="indent" > What is actually shown in the field is determined by:
-<!--l. 2705--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-55" class="tabular"
+<!--l. 2703--><p class="indent" > These macros default to #1 #2
+<!--l. 2705--><p class="indent" > What is actually shown in the field is determined by:
+<!--l. 2706--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-55" class="tabular"
><colgroup id="TBL-55-1g"><col
id="TBL-55-1"></colgroup><tr
@@ -6510,7 +6514,7 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">height</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 2709--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-56" class="tabular"
+<!--l. 2710--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-56" class="tabular"
><colgroup id="TBL-56-1g"><col
id="TBL-56-1"></colgroup><tr
@@ -6523,7 +6527,7 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">height</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 2712--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-57" class="tabular"
+<!--l. 2713--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-57" class="tabular"
><colgroup id="TBL-57-1g"><col
id="TBL-57-1"></colgroup><tr
@@ -6536,7 +6540,7 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">height</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 2715--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-58" class="tabular"
+<!--l. 2716--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-58" class="tabular"
><colgroup id="TBL-58-1g"><col
id="TBL-58-1"></colgroup><tr
@@ -6549,7 +6553,7 @@ class="ec-lmvtt-10">}{</span></span></span><span
class="ec-lmri-10">height</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td>
</tr></table> </div></span>
-<!--l. 2719--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-59" class="tabular"
+<!--l. 2720--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-59" class="tabular"
><colgroup id="TBL-59-1g"><col
id="TBL-59-1"></colgroup><tr
@@ -6559,7 +6563,7 @@ class="ec-lmvtt-10">\MakeButtonField</span><span class="obeylines-h"><span class
class="ec-lmvtt-10">{</span></span></span><span
class="ec-lmri-10">text</span><span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">}</span></span></span> </td></tr></table> </div></span>
-<!--l. 2723--><p class="indent" > These macros default to <span class="obeylines-h"><span class="verb"><span
+<!--l. 2724--><p class="indent" > These macros default to <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\vbox</span><span
class="ec-lmvtt-10">&#x00A0;to</span><span
class="ec-lmvtt-10">&#x00A0;#2{\hbox</span><span
@@ -6568,7 +6572,7 @@ class="ec-lmvtt-10">&#x00A0;#1{\hfill}\vfill}</span></span></span>, except the l
to #1; it is used for buttons, and the special <span
class="ec-lmvtt-10">\Submit </span>and <span
class="ec-lmvtt-10">\Reset </span>macros.
-<!--l. 2727--><p class="indent" > You may also want to redefine the following macros:
+<!--l. 2728--><p class="indent" > You may also want to redefine the following macros:
<pre class="verbatim" id="verbatim-50">
@@ -6584,13 +6588,13 @@ class="ec-lmvtt-10">\Reset </span>macros.
\def\DefaultHeightofTextMultiline{4\baselineskip}
\def\DefaultWidthofText{3cm}
</pre>
-<!--l. 2740--><p class="nopar" >
-<!--l. 2742--><p class="noindent" >
+<!--l. 2741--><p class="nopar" >
+<!--l. 2743--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">9.1 </span> <a
id="x1-610009.1"></a>Forms environment parameters</h4>
-<!--l. 2745--><p class="noindent" >
+<!--l. 2746--><p class="noindent" >
<a
- id="x1-61001r14"></a> <!--l. 2746--><div class="longtable"> <table id="TBL-60" class="longtable"
+ id="x1-61001r14"></a> <!--l. 2747--><div class="longtable"> <table id="TBL-60" class="longtable"
><colgroup id="TBL-60-1g"><col
id="TBL-60-1"><col
@@ -6603,7 +6607,7 @@ class="ec-lmvtt-10">action </span></td><td style="white-space:nowrap; text-
class="td11"> <span
class="ec-lmri-10">URL </span></td><td style="white-space:normal; text-align:left;" id="TBL-60-1-3"
class="td10">
- <!--l. 2746--><p class="noindent" >The URL that will receive the form data if a <span
+ <!--l. 2747--><p class="noindent" >The URL that will receive the form data if a <span
class="ec-lmss-10">Submit </span>button
is included in the form </td>
</tr><tr
@@ -6613,7 +6617,7 @@ class="ec-lmvtt-10">encoding </span></td><td style="white-space:nowrap; text-a
class="td11"> <span
class="ec-lmri-10">name </span></td><td style="white-space:normal; text-align:left;" id="TBL-60-2-3"
class="td10">
- <!--l. 2747--><p class="noindent" >The encoding for the string set to the URL; FDF-encoding
+ <!--l. 2748--><p class="noindent" >The encoding for the string set to the URL; FDF-encoding
is usual, and <span
class="ec-lmvtt-10">html </span>is the only valid value </td>
</tr><tr
@@ -6623,7 +6627,7 @@ class="ec-lmvtt-10">method </span></td><td style="white-space:nowrap; text-al
class="td11"> <span
class="ec-lmri-10">name </span></td><td style="white-space:normal; text-align:left;" id="TBL-60-3-3"
class="td10">
- <!--l. 2749--><p class="noindent" >Used only when generating HTML; values can be <span
+ <!--l. 2750--><p class="noindent" >Used only when generating HTML; values can be <span
class="ec-lmvtt-10">post </span>or
<span
class="ec-lmvtt-10">get</span> </td>
@@ -6645,16 +6649,16 @@ class="td01"> </td><td style="white-space:nowrap; text-align:left;" id=
class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-60-8-3"
class="td10"></td></tr>
</table></div>
-<!--l. 2752--><p class="noindent" >
+<!--l. 2753--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">9.2 </span> <a
id="x1-620009.2"></a>Forms optional parameters</h4>
-<!--l. 2753--><p class="noindent" >Note that all colors must be expressed as RGB triples, in the range 0..1 (i.e.&#x00A0;<span
+<!--l. 2754--><p class="noindent" >Note that all colors must be expressed as RGB triples, in the range 0..1 (i.e.&#x00A0;<span
class="ec-lmvtt-10">color=0 0</span>
<span
class="ec-lmvtt-10">0.5</span>)
-<!--l. 2757--><p class="indent" >
+<!--l. 2758--><p class="indent" >
<a
- id="x1-62001r15"></a> <!--l. 2758--><div class="longtable"> <table id="TBL-61" class="longtable"
+ id="x1-62001r15"></a> <!--l. 2759--><div class="longtable"> <table id="TBL-61" class="longtable"
><colgroup id="TBL-61-1g"><col
id="TBL-61-1"><col
@@ -7114,29 +7118,29 @@ class="td11"> </td><td style="white-space:nowrap; text-align:left;" id=
class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-61-63-4"
class="td10"></td></tr>
</table></div>
-<!--l. 2819--><p class="noindent" >
+<!--l. 2820--><p class="noindent" >
<h3 class="sectionHead"><span class="titlemark">10 </span> <a
id="x1-6300010"></a>Defining a new driver</h3>
-<!--l. 2820--><p class="noindent" >A <span
+<!--l. 2821--><p class="noindent" >A <span
class="ec-lmss-10">hyperref </span>driver has to provide definitions for eight macros:
-<!--l. 2823--><p class="noindent" >1. <span class="obeylines-h"><span class="verb"><span
+<!--l. 2824--><p class="noindent" >1. <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hyper@anchor</span></span></span>
-<!--l. 2825--><p class="noindent" >2. <span class="obeylines-h"><span class="verb"><span
+<!--l. 2826--><p class="noindent" >2. <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hyper@link</span></span></span>
-<!--l. 2827--><p class="noindent" >3. <span class="obeylines-h"><span class="verb"><span
+<!--l. 2828--><p class="noindent" >3. <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hyper@linkfile</span></span></span>
-<!--l. 2829--><p class="noindent" >4. <span class="obeylines-h"><span class="verb"><span
+<!--l. 2830--><p class="noindent" >4. <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hyper@linkurl</span></span></span>
-<!--l. 2831--><p class="noindent" >5. <span class="obeylines-h"><span class="verb"><span
+<!--l. 2832--><p class="noindent" >5. <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hyper@anchorstart</span></span></span>
-<!--l. 2833--><p class="noindent" >6. <span class="obeylines-h"><span class="verb"><span
+<!--l. 2834--><p class="noindent" >6. <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hyper@anchorend</span></span></span>
-<!--l. 2835--><p class="noindent" >7. <span class="obeylines-h"><span class="verb"><span
+<!--l. 2836--><p class="noindent" >7. <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hyper@linkstart</span></span></span>
-<!--l. 2837--><p class="noindent" >8. <span class="obeylines-h"><span class="verb"><span
+<!--l. 2838--><p class="noindent" >8. <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hyper@linkend</span></span></span>
-<!--l. 2840--><p class="indent" > The draft option defines the macros as follows
+<!--l. 2841--><p class="indent" > The draft option defines the macros as follows
<pre class="verbatim" id="verbatim-51">
@@ -7149,17 +7153,17 @@ class="ec-lmvtt-10">\hyper@linkend</span></span></span>
\let\hyper@linkstart\@gobbletwo
\let\hyper@linkend\@empty
</pre>
-<!--l. 2850--><p class="nopar" >
-<!--l. 2852--><p class="noindent" >
+<!--l. 2851--><p class="nopar" >
+<!--l. 2853--><p class="noindent" >
<h3 class="sectionHead"><span class="titlemark">11 </span> <a
id="x1-6400011"></a>Special support for other packages</h3>
-<!--l. 2854--><p class="noindent" >Package <span
+<!--l. 2855--><p class="noindent" >Package <span
class="ec-lmss-10">hyperref </span>aims to cooperate with other packages, but while the long term goal is to remove
patches and to move link support into the kernel, classes and packages there are still several possible
sources for conflict, such as
<ul class="itemize1">
<li class="itemize">
- <!--l. 2861--><p class="noindent" >Packages that manipulate the bibliographic mechanism. Peter William&#8217;s <span
+ <!--l. 2862--><p class="noindent" >Packages that manipulate the bibliographic mechanism. Peter William&#8217;s <span
class="ec-lmss-10">harvard </span>package
is supported. However, the recommended package is either Patrick Daly&#8217;s <span
class="ec-lmss-10">natbib </span>package
@@ -7171,7 +7175,7 @@ class="ec-lmss-10">biblatex </span>package. Both
class="ec-lmss-10">hyperref</span>.
</li>
<li class="itemize">
- <!--l. 2869--><p class="noindent" >Packages that changes <span
+ <!--l. 2870--><p class="noindent" >Packages that changes <span
class="ec-lmvtt-10">\label </span>and <span
class="ec-lmvtt-10">\ref </span>macros. Since LaTeX 2023-06-01 the kernel and
<span
@@ -7182,11 +7186,11 @@ class="ec-lmvtt-10">\label </span>has a hook for external packages.
There should be no need for external packages and classes to redefine them.
</li>
<li class="itemize">
- <!--l. 2875--><p class="noindent" >Packages that do anything serious with the index.
+ <!--l. 2876--><p class="noindent" >Packages that do anything serious with the index.
</li>
<li class="itemize">
- <!--l. 2877--><p class="noindent" >Packages that do anything serious with sectioning commands and the toc.</li></ul>
-<!--l. 2883--><p class="indent" > The <span
+ <!--l. 2878--><p class="noindent" >Packages that do anything serious with sectioning commands and the toc.</li></ul>
+<!--l. 2884--><p class="indent" > The <span
class="ec-lmss-10">hyperref </span>package is distributed with a variant of the <span
class="ec-lmss-10">xr</span>,
<span
@@ -7200,8 +7204,8 @@ class="ec-lmvtt-10">\ref </span>mechanisms.
<h4 class="subsectionHead"><span class="titlemark">11.1 </span> <a
id="x1-6500011.1"></a>Package Compatibility</h4>
-<!--l. 2891--><p class="noindent" >Currently only package loading orders are available:
-<!--l. 2894--><p class="noindent" >
+<!--l. 2892--><p class="noindent" >Currently only package loading orders are available:
+<!--l. 2895--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.1 </span> <a
id="x1-6600011.1.1"></a>algorithm</h5>
@@ -7211,11 +7215,11 @@ class="ec-lmvtt-10">\ref </span>mechanisms.
&#x00A0;&#x00A0;\usepackage{hyperref}
&#x00A0;&#x00A0;\usepackage[chapter]{algorithm}%&#x00A0;eg.
</pre>
-<!--l. 2899--><p class="nopar" >
-<!--l. 2901--><p class="noindent" >
+<!--l. 2900--><p class="nopar" >
+<!--l. 2902--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.2 </span> <a
id="x1-6700011.1.2"></a>amsmath</h5>
-<!--l. 2903--><p class="noindent" >The environments equation and eqnarray are not supported too well. For example, there might be
+<!--l. 2904--><p class="noindent" >The environments equation and eqnarray are not supported too well. For example, there might be
spacing problems (eqnarray isn&#8217;t recommended anyway, see CTAN:info/l2tabu/, the situation for
equation is unclear, because nobody is interested in investigating). Consider using the environments that
package amsmath provide, e.g. gather for equation. The environment equation can even redefined to use
@@ -7227,11 +7231,11 @@ gather:
&#x00A0;&#x00A0;\let\equation\gather
&#x00A0;&#x00A0;\let\endequation\endgather
</pre>
-<!--l. 2914--><p class="nopar" >
-<!--l. 2916--><p class="noindent" >
+<!--l. 2915--><p class="nopar" >
+<!--l. 2917--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.3 </span> <a
id="x1-6800011.1.3"></a>amsrefs</h5>
-<!--l. 2918--><p class="noindent" >The documentation of <span
+<!--l. 2919--><p class="noindent" >The documentation of <span
class="ec-lmss-10">amsrefs </span>claims that the package must be loaded after <span
class="ec-lmss-10">hyperref </span>(it is unclear if that
is really true) so the recommended package loading order is:
@@ -7241,11 +7245,11 @@ is really true) so the recommended package loading order is:
&#x00A0;&#x00A0;\usepackage{hyperref}
&#x00A0;&#x00A0;\usepackage{amsrefs}
</pre>
-<!--l. 2925--><p class="nopar" >
-<!--l. 2927--><p class="noindent" >
+<!--l. 2926--><p class="nopar" >
+<!--l. 2928--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.4 </span> <a
id="x1-6900011.1.4"></a>arydshln, longtable</h5>
-<!--l. 2929--><p class="noindent" >Package <span
+<!--l. 2930--><p class="noindent" >Package <span
class="ec-lmss-10">longtable </span>must be put before <span
class="ec-lmss-10">hyperref </span>and <span
class="ec-lmss-10">arydshln</span>, <span
@@ -7259,16 +7263,16 @@ thus the resulting package order is then:
&#x00A0;&#x00A0;\usepackage{hyperref}
&#x00A0;&#x00A0;\usepackage{arydshln}
</pre>
-<!--l. 2937--><p class="nopar" >
-<!--l. 2939--><p class="noindent" >
+<!--l. 2938--><p class="nopar" >
+<!--l. 2940--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.5 </span> <a
id="x1-7000011.1.5"></a>babel/magyar.ldf</h5>
-<!--l. 2941--><p class="noindent" >The old version 2005/03/30 v1.4j will not work. You need at least version 1.5, maintained by Péter
+<!--l. 2942--><p class="noindent" >The old version 2005/03/30 v1.4j will not work. You need at least version 1.5, maintained by Péter
Szabó, see CTAN:language/hungarian/babel/.
-<!--l. 2946--><p class="noindent" >
+<!--l. 2947--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.6 </span> <a
id="x1-7100011.1.6"></a>babel/spanish.ldf</h5>
-<!--l. 2948--><p class="noindent" >Babel&#8217;s spanish.ldf redefines &#8216;<span class="obeylines-h"><span class="verb"><span
+<!--l. 2949--><p class="noindent" >Babel&#8217;s spanish.ldf redefines &#8216;<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\.</span></span></span>&#8217; to support &#8216;<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\...</span></span></span>&#8217;. In bookmarks (<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\pdfstringdef</span></span></span>) only &#8216;<span class="obeylines-h"><span class="verb"><span
@@ -7276,10 +7280,10 @@ class="ec-lmvtt-10">\.</span></span></span>&#8217; is supported. If
&#8216;<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\...</span></span></span>&#8217; is needed, <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\texorpdfstring{\...}{\dots}</span></span></span> can be used instead.
-<!--l. 2955--><p class="noindent" >
+<!--l. 2956--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.7 </span> <a
id="x1-7200011.1.7"></a>bibentry</h5>
-<!--l. 2957--><p class="noindent" >Workaround:
+<!--l. 2958--><p class="noindent" >Workaround:
<pre class="verbatim" id="verbatim-56">
@@ -7298,20 +7302,20 @@ class="ec-lmvtt-10">\texorpdfstring{\...}{\dots}</span></span></span> can be use
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\nobibliography{database}
&#x00A0;&#x00A0;\endgroup
</pre>
-<!--l. 2974--><p class="nopar" >
-<!--l. 2976--><p class="noindent" >
+<!--l. 2975--><p class="nopar" >
+<!--l. 2977--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.8 </span> <a
id="x1-7300011.1.8"></a>bigfoot</h5>
-<!--l. 2978--><p class="noindent" ><span
+<!--l. 2979--><p class="noindent" ><span
class="ec-lmss-10">hyperref </span>does not support package <span
class="ec-lmss-10">bigfoot</span>. And package <span
class="ec-lmss-10">bigfoot </span>does not support <span
class="ec-lmss-10">hyperref</span>&#8217;s footnotes and
disables them (hyperfootnotes=false).
-<!--l. 2983--><p class="noindent" >
+<!--l. 2984--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.9 </span> <a
id="x1-7400011.1.9"></a>chappg</h5>
-<!--l. 2985--><p class="noindent" >Package <span
+<!--l. 2986--><p class="noindent" >Package <span
class="ec-lmss-10">chappg </span>uses <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\@addtoreset</span></span></span> that is redefined by <span
class="ec-lmss-10">hyperref</span>. The package order is therefore:
@@ -7321,11 +7325,11 @@ class="ec-lmss-10">hyperref</span>. The package order is therefore:
&#x00A0;&#x00A0;\usepackage{hyperref}
&#x00A0;&#x00A0;\usepackage{chappg}
</pre>
-<!--l. 2991--><p class="nopar" >
-<!--l. 2993--><p class="noindent" >
+<!--l. 2992--><p class="nopar" >
+<!--l. 2994--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.10 </span> <a
id="x1-7500011.1.10"></a>count1to</h5>
-<!--l. 2995--><p class="noindent" >Package &#8216;count1to&#8217; adds several <span class="obeylines-h"><span class="verb"><span
+<!--l. 2996--><p class="noindent" >Package &#8216;count1to&#8217; adds several <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\@addtoreset</span></span></span> commands that confuse &#8216;hyperref&#8217;. Therefore <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\theH&#x003C;...&#x003E;</span></span></span>
has to be fixed:
@@ -7341,27 +7345,27 @@ has to be fixed:
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\theHsubparagraph}{\theHparagraph.\arabic{subparagraph}}%
&#x00A0;&#x00A0;}
</pre>
-<!--l. 3007--><p class="nopar" >
-<!--l. 3009--><p class="noindent" >
+<!--l. 3008--><p class="nopar" >
+<!--l. 3010--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.11 </span> <a
id="x1-7600011.1.11"></a>dblaccnt</h5>
-<!--l. 3011--><p class="noindent" >pd1enc.def or puenc.def should be loaded before:
+<!--l. 3012--><p class="noindent" >pd1enc.def or puenc.def should be loaded before:
<pre class="verbatim" id="verbatim-59">
&#x00A0;&#x00A0;\usepackage{hyperref}
&#x00A0;&#x00A0;\usepackage{dblaccnt}
</pre>
-<!--l. 3015--><p class="nopar" > or see entry for <span
+<!--l. 3016--><p class="nopar" > or see entry for <span
class="ec-lmss-10">vietnam</span>.
-<!--l. 3019--><p class="noindent" >
+<!--l. 3020--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.12 </span> <a
id="x1-7700011.1.12"></a>easyeqn</h5>
-<!--l. 3020--><p class="noindent" >Not compatible, breaks.
-<!--l. 3023--><p class="noindent" >
+<!--l. 3021--><p class="noindent" >Not compatible, breaks.
+<!--l. 3024--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.13 </span> <a
id="x1-7800011.1.13"></a>ellipsis</h5>
-<!--l. 3025--><p class="noindent" >This packages redefines <span class="obeylines-h"><span class="verb"><span
+<!--l. 3026--><p class="noindent" >This packages redefines <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\textellipsis</span></span></span> after package <span
class="ec-lmss-10">hyperref </span>(pd1enc.def/puenc.def should be loaded
before):
@@ -7371,10 +7375,10 @@ before):
&#x00A0;&#x00A0;\usepackage{hyperref}
&#x00A0;&#x00A0;\usepackage{ellipsis}
</pre>
-<!--l. 3030--><p class="nopar" >
-<!--l. 3032--><p class="indent" > (this will lead to wrong ellipsis in the bookmarks, so <span class="obeylines-h"><span class="verb"><span
+<!--l. 3031--><p class="nopar" >
+<!--l. 3033--><p class="indent" > (this will lead to wrong ellipsis in the bookmarks, so <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\texorpdfstring</span></span></span> is needed).
-<!--l. 3034--><p class="noindent" >
+<!--l. 3035--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.14 </span> <a
id="x1-7900011.1.14"></a>float</h5>
@@ -7383,22 +7387,22 @@ class="ec-lmvtt-10">\texorpdfstring</span></span></span> is needed).
&#x00A0;\usepackage{float}
&#x00A0;&#x00A0;\usepackage{hyperref}
</pre>
-<!--l. 3038--><p class="nopar" >
+<!--l. 3039--><p class="nopar" >
<ul class="itemize1">
<li class="itemize">
- <!--l. 3040--><p class="noindent" >Several <span class="obeylines-h"><span class="verb"><span
+ <!--l. 3041--><p class="noindent" >Several <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\caption</span></span></span> commands are not supported inside one float object.
</li>
<li class="itemize">
- <!--l. 3041--><p class="noindent" >Anchor are set at top of the float object, if its style is controlled by float.sty.</li></ul>
-<!--l. 3045--><p class="noindent" >
+ <!--l. 3042--><p class="noindent" >Anchor are set at top of the float object, if its style is controlled by float.sty.</li></ul>
+<!--l. 3046--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.15 </span> <a
id="x1-8000011.1.15"></a>endnotes</h5>
-<!--l. 3046--><p class="noindent" >Unsupported.
-<!--l. 3048--><p class="noindent" >
+<!--l. 3047--><p class="noindent" >Unsupported.
+<!--l. 3049--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.16 </span> <a
id="x1-8100011.1.16"></a>foiltex</h5>
-<!--l. 3049--><p class="noindent" >Update to version 2008/01/28 v2.1.4b: Since version 6.77a <span
+<!--l. 3050--><p class="noindent" >Update to version 2008/01/28 v2.1.4b: Since version 6.77a <span
class="ec-lmss-10">hyperref </span>does not hack into <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\@begindvi</span></span></span>, it
uses package &#8216;atbegshi&#8217; instead, that hooks into <span class="obeylines-h"><span class="verb"><span
@@ -7407,14 +7411,14 @@ class="ec-lmss-10">hyperref</span>
is now obsolete and causes an undefined error message about <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\@hyperfixhead</span></span></span>. This is fixed in FoilTeX
2.1.4b.
-<!--l. 3057--><p class="noindent" >
+<!--l. 3058--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.17 </span> <a
id="x1-8200011.1.17"></a>footnote</h5>
-<!--l. 3059--><p class="noindent" >This package is not supported, you have to disable <span
+<!--l. 3060--><p class="noindent" >This package is not supported, you have to disable <span
class="ec-lmss-10">hyperref</span>&#8217;s footnote support by using option
<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">hyperfootnotes=false</span></span></span>.
-<!--l. 3063--><p class="noindent" >
+<!--l. 3064--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.18 </span> <a
id="x1-8300011.1.18"></a>linguex</h5>
@@ -7423,8 +7427,8 @@ class="ec-lmvtt-10">hyperfootnotes=false</span></span></span>.
&#x00A0;\usepackage{hyperref}
&#x00A0;&#x00A0;\usepackage{linguex}
</pre>
-<!--l. 3067--><p class="nopar" >
-<!--l. 3069--><p class="noindent" >
+<!--l. 3068--><p class="nopar" >
+<!--l. 3070--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.19 </span> <a
id="x1-8400011.1.19"></a>ltabptch</h5>
@@ -7434,12 +7438,12 @@ class="ec-lmvtt-10">hyperfootnotes=false</span></span></span>.
&#x00A0;&#x00A0;\usepackage{ltabptch}
&#x00A0;&#x00A0;\usepackage{hyperref}
</pre>
-<!--l. 3074--><p class="nopar" >
-<!--l. 3076--><p class="noindent" >
+<!--l. 3075--><p class="nopar" >
+<!--l. 3077--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.20 </span> <a
id="x1-8500011.1.20"></a>mathenv</h5>
-<!--l. 3078--><p class="noindent" >Unsupported.
-<!--l. 3082--><p class="indent" > Both <span
+<!--l. 3079--><p class="noindent" >Unsupported.
+<!--l. 3083--><p class="indent" > Both <span
class="ec-lmss-10">mathenv </span>and <span
class="ec-lmss-10">hyperref </span>messes around with environment <span
class="ec-lmvtt-10">eqnarray</span>. You can load <span
@@ -7449,12 +7453,12 @@ class="ec-lmss-10">hyperref </span>to avoid an error message. But <span class="o
class="ec-lmvtt-10">\label</span></span></span> will not work inside environment <span
class="ec-lmvtt-10">eqnarray </span>properly, for
example.
-<!--l. 3089--><p class="noindent" >
+<!--l. 3090--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.21 </span> <a
id="x1-8600011.1.21"></a>minitoc-hyper</h5>
-<!--l. 3091--><p class="noindent" >This package is obsolete, use the up-to-date original package <span
+<!--l. 3092--><p class="noindent" >This package is obsolete, use the up-to-date original package <span
class="ec-lmss-10">minitoc </span>instead.
-<!--l. 3096--><p class="noindent" >
+<!--l. 3097--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.22 </span> <a
id="x1-8700011.1.22"></a>multind</h5>
@@ -7463,8 +7467,8 @@ class="ec-lmss-10">minitoc </span>instead.
&#x00A0;\usepackage{multind}
&#x00A0;&#x00A0;\usepackage{hyperref}
</pre>
-<!--l. 3100--><p class="nopar" >
-<!--l. 3102--><p class="noindent" >
+<!--l. 3101--><p class="nopar" >
+<!--l. 3103--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.23 </span> <a
id="x1-8800011.1.23"></a>natbib</h5>
@@ -7473,23 +7477,31 @@ class="ec-lmss-10">minitoc </span>instead.
&#x00A0;\usepackage{natbib}
&#x00A0;&#x00A0;\usepackage{hyperref}
</pre>
-<!--l. 3106--><p class="nopar" >
-<!--l. 3108--><p class="noindent" >
+<!--l. 3107--><p class="nopar" >
+<!--l. 3109--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.24 </span> <a
id="x1-8900011.1.24"></a>nomencl</h5>
-<!--l. 3109--><p class="noindent" >Example for introducing links for the page numbers:
+<!--l. 3110--><p class="noindent" >Example for introducing links for the page numbers:
<pre class="verbatim" id="verbatim-66">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\pagedeclaration}[1]{\unskip,&#x00A0;\hyperpage{#1}}
</pre>
-<!--l. 3112--><p class="nopar" >
+<!--l. 3113--><p class="nopar" >
<!--l. 3115--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.25 </span> <a
- id="x1-9000011.1.25"></a>ntheorem-hyper</h5>
-<!--l. 3116--><p class="noindent" >This package is obsolete, use the up-to-date original package <span
+ id="x1-9000011.1.25"></a>ntheorem</h5>
+<!--l. 3117--><p class="noindent" >This package is not fully supported. The <span
+class="ec-lmvtt-10">thref </span>option should not be used at all as it breaks the <span class="obeylines-h"><span class="verb"><span
+class="ec-lmvtt-10">\label</span></span></span>
+command. It also not garantied that links to theorems always work properly as the package redefines
+many internals and but offers no proper interface for hyperlinks.
+<!--l. 3122--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">11.1.26 </span> <a
+ id="x1-9100011.1.26"></a>ntheorem-hyper</h5>
+<!--l. 3123--><p class="noindent" >This package is obsolete, use the up-to-date original package <span
class="ec-lmss-10">ntheorem </span>instead.
-<!--l. 3120--><p class="indent" > For equations the following might work:
+<!--l. 3127--><p class="indent" > For equations the following might work:
<pre class="verbatim" id="verbatim-67">
@@ -7499,10 +7511,10 @@ class="ec-lmss-10">ntheorem </span>instead.
&#x00A0;&#x00A0;&#x00A0;&#x00A0;But&#x00A0;the&#x00A0;mapping&#x00A0;from&#x00A0;the&#x00A0;equation&#x00A0;number&#x00A0;to&#x00A0;the&#x00A0;anchor&#x00A0;name
&#x00A0;&#x00A0;&#x00A0;&#x00A0;is&#x00A0;not&#x00A0;available&#x00A0;in&#x00A0;general.
</pre>
-<!--l. 3127--><p class="nopar" >
-<!--l. 3130--><p class="noindent" >
- <h5 class="subsubsectionHead"><span class="titlemark">11.1.26 </span> <a
- id="x1-9100011.1.26"></a>prettyref</h5>
+<!--l. 3134--><p class="nopar" >
+<!--l. 3137--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">11.1.27 </span> <a
+ id="x1-9200011.1.27"></a>prettyref</h5>
<pre class="verbatim" id="verbatim-68">
@@ -7525,30 +7537,30 @@ class="ec-lmss-10">ntheorem </span>instead.
%%%&#x00A0;example&#x00A0;for&#x00A0;prettyref&#x00A0;%%%
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;
</pre>
-<!--l. 3149--><p class="nopar" >
-<!--l. 3152--><p class="noindent" >
- <h5 class="subsubsectionHead"><span class="titlemark">11.1.27 </span> <a
- id="x1-9200011.1.27"></a>setspace</h5>
+<!--l. 3156--><p class="nopar" >
+<!--l. 3159--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">11.1.28 </span> <a
+ id="x1-9300011.1.28"></a>setspace</h5>
<pre class="verbatim" id="verbatim-69">
&#x00A0;\usepackage{setspace}
&#x00A0;&#x00A0;\usepackage{hyperref}
</pre>
-<!--l. 3156--><p class="nopar" >
-<!--l. 3158--><p class="noindent" >
- <h5 class="subsubsectionHead"><span class="titlemark">11.1.28 </span> <a
- id="x1-9300011.1.28"></a>sidecap</h5>
-<!--l. 3159--><p class="noindent" >Nothing special is needed anymore.
-<!--l. 3161--><p class="noindent" >
+<!--l. 3163--><p class="nopar" >
+<!--l. 3165--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.29 </span> <a
- id="x1-9400011.1.29"></a>subfigure</h5>
-<!--l. 3162--><p class="noindent" >The package is obsolete. Use either <span
+ id="x1-9400011.1.29"></a>sidecap</h5>
+<!--l. 3166--><p class="noindent" >Nothing special is needed anymore.
+<!--l. 3168--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">11.1.30 </span> <a
+ id="x1-9500011.1.30"></a>subfigure</h5>
+<!--l. 3169--><p class="noindent" >The package is obsolete. Use either <span
class="ec-lmss-10">subfig </span>or <span
class="ec-lmss-10">subcaption</span>
-<!--l. 3165--><p class="noindent" >
- <h5 class="subsubsectionHead"><span class="titlemark">11.1.30 </span> <a
- id="x1-9500011.1.30"></a>titleref</h5>
+<!--l. 3172--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">11.1.31 </span> <a
+ id="x1-9600011.1.31"></a>titleref</h5>
<pre class="verbatim" id="verbatim-70">
@@ -7556,31 +7568,31 @@ class="ec-lmss-10">subcaption</span>
&#x00A0;&#x00A0;\usepackage{titleref}%&#x00A0;without&#x00A0;usetoc
&#x00A0;&#x00A0;\usepackage{hyperref}
</pre>
-<!--l. 3170--><p class="nopar" >
-<!--l. 3172--><p class="noindent" >
- <h5 class="subsubsectionHead"><span class="titlemark">11.1.31 </span> <a
- id="x1-9600011.1.31"></a>tabularx</h5>
-<!--l. 3174--><p class="noindent" >Linked footnotes are not supported inside environment <span
+<!--l. 3177--><p class="nopar" >
+<!--l. 3179--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">11.1.32 </span> <a
+ id="x1-9700011.1.32"></a>tabularx</h5>
+<!--l. 3181--><p class="noindent" >Linked footnotes are not supported inside environment <span
class="ec-lmvtt-10">tabularx</span>, because they uses the optional
argument of <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\footnotetext</span></span></span>, see section &#8216;Limitations&#8217;. Before version 2011/09/28 6.82i <span
class="ec-lmss-10">hyperref </span>had
disabled footnotes entirely by <span
class="ec-lmvtt-10">hyperfootnotes=false</span>.
-<!--l. 3180--><p class="noindent" >
- <h5 class="subsubsectionHead"><span class="titlemark">11.1.32 </span> <a
- id="x1-9700011.1.32"></a>titlesec</h5>
-<!--l. 3182--><p class="noindent" ><span
+<!--l. 3187--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">11.1.33 </span> <a
+ id="x1-9800011.1.33"></a>titlesec</h5>
+<!--l. 3189--><p class="noindent" ><span
class="ec-lmss-10">nameref </span>supports <span
class="ec-lmss-10">titlesec</span>, but <span
class="ec-lmss-10">hyperref </span>does not (unsolved is the anchor setting, missing with unnumbered
section, perhaps problems with page breaks with numbered ones).
-<!--l. 3187--><p class="noindent" >
- <h5 class="subsubsectionHead"><span class="titlemark">11.1.33 </span> <a
- id="x1-9800011.1.33"></a>ucs/utf8x.def</h5>
-<!--l. 3188--><p class="noindent" >Note: utf8 is now the default in LaTeX and <span
+<!--l. 3194--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">11.1.34 </span> <a
+ id="x1-9900011.1.34"></a>ucs/utf8x.def</h5>
+<!--l. 3195--><p class="noindent" >Note: utf8 is now the default in LaTeX and <span
class="ec-lmss-10">ucs </span>is no longer recommended.
-<!--l. 3191--><p class="indent" > The first time a multibyte UTF8 sequence is called, it does some calculations and stores the result in
+<!--l. 3198--><p class="indent" > The first time a multibyte UTF8 sequence is called, it does some calculations and stores the result in
a macro for speeding up the next calls of that UTF8 sequence. However this makes the first call
non-expandable and will break if used in information entries or bookmarks. Package <span
class="ec-lmss-10">ucs </span>offers
@@ -7596,18 +7608,18 @@ class="ec-lmvtt-10">\PreloadUnicodePage</span></span></span> to solve this:
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\PrerenderUnicode{^^c3^^b6}%&#x00A0;or&#x00A0;\PrerenderUnicodePage{1}
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\hypersetup{pdftitle={Umlaut&#x00A0;example:&#x00A0;^^c3^^b6}}
</pre>
-<!--l. 3204--><p class="nopar" > The notation with two carets avoids trouble with 8-bit bytes for the README file, you can use the
+<!--l. 3211--><p class="nopar" > The notation with two carets avoids trouble with 8-bit bytes for the README file, you can use the
characters directly.
-<!--l. 3209--><p class="noindent" >
- <h5 class="subsubsectionHead"><span class="titlemark">11.1.34 </span> <a
- id="x1-9900011.1.34"></a>varioref</h5>
-<!--l. 3210--><p class="noindent" >Most previous problems with <span
+<!--l. 3216--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">11.1.35 </span> <a
+ id="x1-10000011.1.35"></a>varioref</h5>
+<!--l. 3217--><p class="noindent" >Most previous problems with <span
class="ec-lmss-10">varioref </span>should be resolved. There is only an open issue regarding
<span
class="ec-lmvtt-10">\vrefformat </span>(<a
href="https://github.com/latex3/hyperref/issues/225" class="url" ><span
class="ec-lmvtt-10">https://github.com/latex3/hyperref/issues/225</span></a>).
-<!--l. 3214--><p class="indent" > It is recommended to load <span
+<!--l. 3221--><p class="indent" > It is recommended to load <span
class="ec-lmss-10">varioref </span>always with the option <span
class="ec-lmvtt-10">nospace</span>, see the documentation.
@@ -7615,15 +7627,15 @@ class="ec-lmvtt-10">nospace</span>, see the documentation.
<pre class="verbatim" id="verbatim-72">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage[nospace]{varioref}
</pre>
-<!--l. 3218--><p class="nopar" >
-<!--l. 3220--><p class="noindent" >
- <h5 class="subsubsectionHead"><span class="titlemark">11.1.35 </span> <a
- id="x1-10000011.1.35"></a>verse</h5>
-<!--l. 3222--><p class="noindent" >Version 2005/08/22 v2.22 contains support for <span
-class="ec-lmss-10">hyperref</span>.
-<!--l. 3224--><p class="noindent" >
+<!--l. 3225--><p class="nopar" >
+<!--l. 3227--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">11.1.36 </span> <a
- id="x1-10100011.1.36"></a>vietnam</h5>
+ id="x1-10100011.1.36"></a>verse</h5>
+<!--l. 3229--><p class="noindent" >Version 2005/08/22 v2.22 contains support for <span
+class="ec-lmss-10">hyperref</span>.
+<!--l. 3231--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">11.1.37 </span> <a
+ id="x1-10200011.1.37"></a>vietnam</h5>
<pre class="verbatim" id="verbatim-73">
@@ -7632,21 +7644,21 @@ class="ec-lmss-10">hyperref</span>.
&#x00A0;&#x00A0;\usepackage{vietnam}
&#x00A0;&#x00A0;\usepackage{hyperref}
</pre>
-<!--l. 3230--><p class="nopar" >
-<!--l. 3232--><p class="noindent" >
- <h5 class="subsubsectionHead"><span class="titlemark">11.1.37 </span> <a
- id="x1-10200011.1.37"></a>XeTeX</h5>
-<!--l. 3234--><p class="noindent" >Default for the encoding of bookmarks is <span class="obeylines-h"><span class="verb"><span
+<!--l. 3237--><p class="nopar" >
+<!--l. 3239--><p class="noindent" >
+ <h5 class="subsubsectionHead"><span class="titlemark">11.1.38 </span> <a
+ id="x1-10300011.1.38"></a>XeTeX</h5>
+<!--l. 3241--><p class="noindent" >Default for the encoding of bookmarks is <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">pdfencoding=unicode</span></span></span>. That means the strings are always
treated as unicode strings. If <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">auto</span></span></span> or <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">pdfdoc</span></span></span> is forced it applies only if the string restricts to the
printable ASCII set, The reason is that the <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\special</span></span></span> does not support PDFDocEncoding.
-<!--l. 3240--><p class="indent" > In older versions <span
+<!--l. 3247--><p class="indent" > In older versions <span
class="ec-lmss-10">hyperref </span>contained special conversion code from UTF-16BE back to UTF-8 in a
number of places for xetex to avoid the xdvipdfmx warning
-<!--l. 3244--><p class="indent" > <span class="obeylines-h"><span class="verb"><span
+<!--l. 3251--><p class="indent" > <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">Failed</span><span
class="ec-lmvtt-10">&#x00A0;to</span><span
class="ec-lmvtt-10">&#x00A0;convert</span><span
@@ -7654,54 +7666,54 @@ class="ec-lmvtt-10">&#x00A0;input</span><span
class="ec-lmvtt-10">&#x00A0;string</span><span
class="ec-lmvtt-10">&#x00A0;to</span><span
class="ec-lmvtt-10">&#x00A0;UTF16...</span></span></span>
-<!--l. 3246--><p class="indent" > This is no longer needed with a current xdvipdfmx, so this code has been removed.
+<!--l. 3253--><p class="indent" > This is no longer needed with a current xdvipdfmx, so this code has been removed.
<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\csname</span><span
class="ec-lmvtt-10">&#x00A0;HyPsd@XeTeXBigCharstrue\endcsname</span></span></span> should no longer be used.
-<!--l. 3252--><p class="noindent" >
+<!--l. 3259--><p class="noindent" >
<h3 class="sectionHead"><span class="titlemark">12 </span> <a
- id="x1-10300012"></a>Limitations<span class="footnote-mark"><a
+ id="x1-10400012"></a>Limitations<span class="footnote-mark"><a
href="hyperref-doc8.html#fn7x0"><sup class="textsuperscript">7</sup></a></span><a
- id="x1-103001f7"></a> </h3>
+ id="x1-104001f7"></a> </h3>
<h4 class="subsectionHead"><span class="titlemark">12.1 </span> <a
- id="x1-10400012.1"></a>Wrapped/broken link support</h4>
-<!--l. 3255--><p class="noindent" >Only few drivers support automatically wrapped/broken links, e.g. pdftex, dvipdfmx, hypertex. Other
+ id="x1-10500012.1"></a>Wrapped/broken link support</h4>
+<!--l. 3262--><p class="noindent" >Only few drivers support automatically wrapped/broken links, e.g. pdftex, dvipdfmx, hypertex. Other
drivers lack this feature, e.g. dvips, dvipsone.
-<!--l. 3259--><p class="indent" > Workarounds:
+<!--l. 3266--><p class="indent" > Workarounds:
<ul class="itemize1">
<li class="itemize">
- <!--l. 3261--><p class="noindent" >For long section or caption titles in the table of contents or list of figures/tables option
+ <!--l. 3268--><p class="noindent" >For long section or caption titles in the table of contents or list of figures/tables option
<span
class="ec-lmss-10">linktocpage </span>can be used. Then the page number will be a link, and the overlong section title
is not forced into an one line link with overfull <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hbox</span></span></span> warning.
</li>
<li class="itemize">
- <!--l. 3266--><p class="noindent" >&#8220;<span class="obeylines-h"><span class="verb"><span
+ <!--l. 3273--><p class="noindent" >&#8220;<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\url</span></span></span>&#8221;s are caught by package <span
class="ec-lmss-10">breakurl</span>.
</li>
<li class="itemize">
- <!--l. 3267--><p class="noindent" >The option <span
+ <!--l. 3274--><p class="noindent" >The option <span
class="ec-lmss-10">breaklinks </span>is intended for internal use. But it can be used to force link wrapping,
e.g. when printing a document. However, when such a document is converted to PDF and
viewed with a PDF viewer, the active link area will be misplaced.
- <!--l. 3273--><p class="noindent" >Another limitation: some penalties are &#8220;optimized&#8221; by TeX, thus there are missing break
+ <!--l. 3280--><p class="noindent" >Another limitation: some penalties are &#8220;optimized&#8221; by TeX, thus there are missing break
points, especially within <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\url</span></span></span>. (See thread &#8220;hyperref.sty, breaklinks and url.sty 3.2&#8221; in
comp.text.tex 2005-09).</li></ul>
-<!--l. 3279--><p class="noindent" >
+<!--l. 3286--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">12.2 </span> <a
- id="x1-10500012.2"></a>Links across pages</h4>
-<!--l. 3281--><p class="noindent" >In general they have problems:
+ id="x1-10600012.2"></a>Links across pages</h4>
+<!--l. 3288--><p class="noindent" >In general they have problems:
<ul class="itemize1">
<li class="itemize">
- <!--l. 3283--><p class="noindent" >Some driver doesn&#8217;t support them at all (see above).
+ <!--l. 3290--><p class="noindent" >Some driver doesn&#8217;t support them at all (see above).
</li>
<li class="itemize">
- <!--l. 3284--><p class="noindent" >The driver allows it, but the link result might include the footer and/or header. This can
+ <!--l. 3291--><p class="noindent" >The driver allows it, but the link result might include the footer and/or header. This can
currently (2023) be avoided by using the PDF management and to load at least the new-or-1
module from latex-lab:
@@ -7710,12 +7722,12 @@ class="ec-lmvtt-10">\url</span></span></span>. (See thread &#8220;hyperref.st
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\DocumentMetadata{testphase=new-or-1}
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;
</pre>
- <!--l. 3290--><p class="nopar" >
+ <!--l. 3297--><p class="nopar" >
</li></ul>
-<!--l. 3294--><p class="noindent" >
+<!--l. 3301--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">12.3 </span> <a
- id="x1-10600012.3"></a>Footnotes</h4>
-<!--l. 3296--><p class="noindent" >LaTeX allows the separation of the footnote mark and the footnote text (<span class="obeylines-h"><span class="verb"><span
+ id="x1-10700012.3"></a>Footnotes</h4>
+<!--l. 3303--><p class="noindent" >LaTeX allows the separation of the footnote mark and the footnote text (<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\footnotemark</span></span></span>,
<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\footnotetext</span></span></span>). This interface might be enough for visual typesetting. But the relation between
@@ -7732,14 +7744,14 @@ class="ec-lmss-10">hyperref </span>does not support the optional argument of <sp
class="ec-lmvtt-10">\footnotemark</span></span></span> and
<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\footnotetext</span></span></span>.
-<!--l. 3307--><p class="noindent" >
+<!--l. 3314--><p class="noindent" >
<h3 class="sectionHead"><span class="titlemark">13 </span> <a
- id="x1-10700013"></a>Hints<span class="footnote-mark"><a
+ id="x1-10800013"></a>Hints<span class="footnote-mark"><a
href="hyperref-doc9.html#fn8x0"><sup class="textsuperscript">8</sup></a></span><a
- id="x1-107001f8"></a> </h3>
+ id="x1-108001f8"></a> </h3>
<h4 class="subsectionHead"><span class="titlemark">13.1 </span> <a
- id="x1-10800013.1"></a>Spaces in option values</h4>
-<!--l. 3311--><p class="noindent" >Unhappily LaTeX strips spaces from options if they are given in <span class="obeylines-h"><span class="verb"><span
+ id="x1-10900013.1"></a>Spaces in option values</h4>
+<!--l. 3318--><p class="noindent" >Unhappily LaTeX strips spaces from options if they are given in <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\documentclass</span></span></span> or <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\usepackage</span></span></span> (or
<span class="obeylines-h"><span class="verb"><span
@@ -7749,41 +7761,41 @@ class="ec-lmvtt-10">\RequirePackage</span></span></span>), e.g.:
<pre class="verbatim" id="verbatim-75">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage[pdfborder=0&#x00A0;0&#x00A0;1]{hyperref}
</pre>
-<!--l. 3315--><p class="nopar" > Package <span
+<!--l. 3322--><p class="nopar" > Package <span
class="ec-lmss-10">hyperref </span>now gets
<pre class="verbatim" id="verbatim-76">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;pdfborder=001
</pre>
-<!--l. 3319--><p class="nopar" > and the result is an invalid PDF file. As workaround braces can be used:
+<!--l. 3326--><p class="nopar" > and the result is an invalid PDF file. As workaround braces can be used:
<pre class="verbatim" id="verbatim-77">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage[pdfborder={0&#x00A0;0&#x00A0;1}]{hyperref}
</pre>
-<!--l. 3324--><p class="nopar" > Some options can also be given in <span class="obeylines-h"><span class="verb"><span
+<!--l. 3331--><p class="nopar" > Some options can also be given in <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hypersetup</span></span></span>
<pre class="verbatim" id="verbatim-78">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\hypersetup{pdfborder=0&#x00A0;0&#x00A0;1}
</pre>
-<!--l. 3328--><p class="nopar" > In <span class="obeylines-h"><span class="verb"><span
+<!--l. 3335--><p class="nopar" > In <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hypersetup</span></span></span> the options are directly processed as key value options (see package keyval) without
space stripping in the value part.
-<!--l. 3334--><p class="indent" > Alternatively, LaTeX&#8217;s option handling system can be adapted to key value options by one of the
+<!--l. 3341--><p class="indent" > Alternatively, LaTeX&#8217;s option handling system can be adapted to key value options by one of the
packages <span
class="ec-lmss-10">kvoptions-patch </span>(from project <span
class="ec-lmss-10">kvoptions</span>) or <span
class="ec-lmss-10">xkvltxp </span>(from project <span
class="ec-lmss-10">xsetkeys</span>).
-<!--l. 3339--><p class="noindent" >
+<!--l. 3346--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">13.2 </span> <a
- id="x1-10900013.2"></a>Index with makeindex</h4>
+ id="x1-11000013.2"></a>Index with makeindex</h4>
<ul class="itemize1">
<li class="itemize">
- <!--l. 3341--><p class="noindent" >Package <span
+ <!--l. 3348--><p class="noindent" >Package <span
class="ec-lmss-10">hyperref </span>adds <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hyperpage</span></span></span> commands by the encap mechanism (see documentation
of Makeindex), if option hyperindex is set (default). <span class="obeylines-h"><span class="verb"><span
@@ -7798,7 +7810,7 @@ class="ec-lmvtt-10">\romannumbering</span></span></span>, ...), then the page an
class="ec-lmvtt-10">plainpages=false</span></span></span> is recommended.
</li>
<li class="itemize">
- <!--l. 3351--><p class="noindent" >The encap mechanism of Makeindex allows to use one command only (see documentation of
+ <!--l. 3358--><p class="noindent" >The encap mechanism of Makeindex allows to use one command only (see documentation of
Makeindex). If the user sets such a command, <span
class="ec-lmss-10">hyperref </span>suppresses its <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hyperpage</span></span></span> command. With
@@ -7813,23 +7825,23 @@ class="ec-lmvtt-10">\hyperpage</span></span></span> command. With
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;...
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\index{Some&#x00A0;example|main}
</pre>
- <!--l. 3363--><p class="nopar" >
+ <!--l. 3370--><p class="nopar" >
</li>
<li class="itemize">
- <!--l. 3364--><p class="noindent" >Scientic Word/Scientific WorkPlace users can use package robustindex with hyperindex=false.
+ <!--l. 3371--><p class="noindent" >Scientic Word/Scientific WorkPlace users can use package robustindex with hyperindex=false.
</li>
<li class="itemize">
- <!--l. 3366--><p class="noindent" >Other encap characters can be set by option <span
+ <!--l. 3373--><p class="noindent" >Other encap characters can be set by option <span
class="ec-lmss-10">encap</span>. Example for use of &#8220;?&#8221;:
<pre class="verbatim" id="verbatim-80">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage[encap=?]{hyperref}
</pre>
- <!--l. 3370--><p class="nopar" >
+ <!--l. 3377--><p class="nopar" >
</li>
<li class="itemize">
- <!--l. 3371--><p class="noindent" >Another possibility is the insertion of <span class="obeylines-h"><span class="verb"><span
+ <!--l. 3378--><p class="noindent" >Another possibility is the insertion of <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\hyperpage</span></span></span> by a style file for makeindex. For this case,
<span
class="ec-lmss-10">hyperref</span>&#8217;s insertion will be disabled by <span class="obeylines-h"><span class="verb"><span
@@ -7850,12 +7862,12 @@ class="ec-lmvtt-10">\hyperpage</span></span></span> will be defined regardless o
encap_suffix&#x00A0;"}"
%%%&#x00A0;cut&#x00A0;%%%&#x00A0;hyperindex.ist&#x00A0;%%%&#x00A0;cut&#x00A0;%%%
</pre>
- <!--l. 3386--><p class="nopar" ></li></ul>
-<!--l. 3389--><p class="noindent" >
+ <!--l. 3393--><p class="nopar" ></li></ul>
+<!--l. 3396--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">13.3 </span> <a
- id="x1-11000013.3"></a>Warning <span
+ id="x1-11100013.3"></a>Warning <span
class="ec-lmvtt-10">"bookmark level for unknown &#x003C;foobar&#x003E; defaults to 0"</span></h4>
-<!--l. 3391--><p class="noindent" >Getting rid of it:
+<!--l. 3398--><p class="noindent" >Getting rid of it:
<pre class="verbatim" id="verbatim-82">
@@ -7863,33 +7875,33 @@ class="ec-lmvtt-10">"bookmark level for unknown &#x003C;foobar&#x003E; defaults
\providecommand*{\toclevel@&#x003C;foobar&#x003E;}{0}
\makeatother
</pre>
-<!--l. 3396--><p class="nopar" >
-<!--l. 3398--><p class="noindent" >
+<!--l. 3403--><p class="nopar" >
+<!--l. 3405--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">13.4 </span> <a
- id="x1-11100013.4"></a>Link anchors in figures</h4>
-<!--l. 3400--><p class="noindent" >The caption command increments the counter and here is the place where <span
+ id="x1-11200013.4"></a>Link anchors in figures</h4>
+<!--l. 3407--><p class="noindent" >The caption command increments the counter and here is the place where <span
class="ec-lmss-10">hyperref </span>set the corresponding
anchor. Unhappily the caption is set below the figure, so the figure is not visible if a link jumps
to a figure. In this case, try package <span
class="ec-lmss-10">hypcap </span>that implements a method to circumvent the
problem.
-<!--l. 3408--><p class="noindent" >
+<!--l. 3415--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">13.5 </span> <a
- id="x1-11200013.5"></a>Additional unicode characters in bookmarks and pdf information entries:</h4>
+ id="x1-11300013.5"></a>Additional unicode characters in bookmarks and pdf information entries:</h4>
<pre class="verbatim" id="verbatim-83">
\documentclass[pdftex]{article}
\usepackage[unicode]{hyperref}
</pre>
-<!--l. 3412--><p class="nopar" >
-<!--l. 3414--><p class="indent" > Support for additional unicode characters:
-<!--l. 3416--><p class="indent" > Example: <span class="obeylines-h"><span class="verb"><span
+<!--l. 3419--><p class="nopar" >
+<!--l. 3421--><p class="indent" > Support for additional unicode characters:
+<!--l. 3423--><p class="indent" > Example: <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\.{a}</span></span></span> and <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\d{a}</span></span></span>
-<!--l. 3418--><p class="indent" > 1. Get a list with unicode data, eg:
-<!--l. 3420--><p class="indent" > http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
-<!--l. 3422--><p class="indent" > 2. Identify the characters (<span class="obeylines-h"><span class="verb"><span
+<!--l. 3425--><p class="indent" > 1. Get a list with unicode data, eg:
+<!--l. 3427--><p class="indent" > http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
+<!--l. 3429--><p class="indent" > 2. Identify the characters (<span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\.{a}</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\d{a}</span></span></span>):
@@ -7898,9 +7910,9 @@ class="ec-lmvtt-10">\d{a}</span></span></span>):
&#x00A0;&#x00A0;&#x00A0;&#x00A0;0227;LATIN&#x00A0;SMALL&#x00A0;LETTER&#x00A0;A&#x00A0;WITH&#x00A0;DOT&#x00A0;ABOVE;...
&#x00A0;&#x00A0;&#x00A0;&#x00A0;1EA1;LATIN&#x00A0;SMALL&#x00A0;LETTER&#x00A0;A&#x00A0;WITH&#x00A0;DOT&#x00A0;BELOW;...
</pre>
-<!--l. 3426--><p class="nopar" >
-<!--l. 3428--><p class="indent" > 3. Calculate the octal code:
-<!--l. 3430--><p class="indent" > The first characters of the line in the file are hex values, convert each byte and prepend them with a
+<!--l. 3433--><p class="nopar" >
+<!--l. 3435--><p class="indent" > 3. Calculate the octal code:
+<!--l. 3437--><p class="indent" > The first characters of the line in the file are hex values, convert each byte and prepend them with a
backslash. (This will go into the PDF file.)
@@ -7908,10 +7920,10 @@ backslash. (This will go into the PDF file.)
&#x00A0;&#x00A0;&#x00A0;&#x00A0;0227&#x00A0;-&#x003E;&#x00A0;\002\047
&#x00A0;&#x00A0;&#x00A0;&#x00A0;1EA1&#x00A0;-&#x003E;&#x00A0;\036\241
</pre>
-<!--l. 3437--><p class="nopar" >
-<!--l. 3439--><p class="indent" > 4. Transform into a form understood by <span
+<!--l. 3444--><p class="nopar" >
+<!--l. 3446--><p class="indent" > 4. Transform into a form understood by <span
class="ec-lmss-10">hyperref</span>:
-<!--l. 3441--><p class="indent" > Hyperref must know where the first byte starts, this is marked by <span class="obeylines-h"><span class="verb"><span
+<!--l. 3448--><p class="indent" > Hyperref must know where the first byte starts, this is marked by <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">9</span></span></span> (8 and 9 cannot occur in octal
numbers):
@@ -7920,8 +7932,8 @@ numbers):
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\002\047&#x00A0;-&#x003E;&#x00A0;\9002\047
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\036\241&#x00A0;-&#x003E;&#x00A0;\9036\241
</pre>
-<!--l. 3448--><p class="nopar" >
-<!--l. 3450--><p class="indent" > Optional: <span class="obeylines-h"><span class="verb"><span
+<!--l. 3455--><p class="nopar" >
+<!--l. 3457--><p class="indent" > Optional: <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">8</span></span></span> is used for abbreviations:
@@ -7930,8 +7942,8 @@ class="ec-lmvtt-10">8</span></span></span> is used for abbreviations:
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\9002\047&#x00A0;-&#x003E;&#x00A0;\82\047
</pre>
-<!--l. 3456--><p class="nopar" >
-<!--l. 3458--><p class="indent" > 5. Declare the character with LaTeX:
+<!--l. 3463--><p class="nopar" >
+<!--l. 3465--><p class="indent" > 5. Declare the character with LaTeX:
<pre class="verbatim" id="verbatim-88">
@@ -7943,11 +7955,11 @@ class="ec-lmvtt-10">8</span></span></span> is used for abbreviations:
\end{document}
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;
</pre>
-<!--l. 3467--><p class="nopar" >
-<!--l. 3469--><p class="noindent" >
+<!--l. 3474--><p class="nopar" >
+<!--l. 3476--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">13.6 </span> <a
- id="x1-11300013.6"></a>Footnotes</h4>
-<!--l. 3471--><p class="noindent" >The footnote support is rather limited. It is beyond the scope to use <span class="obeylines-h"><span class="verb"><span
+ id="x1-11400013.6"></a>Footnotes</h4>
+<!--l. 3478--><p class="noindent" >The footnote support is rather limited. It is beyond the scope to use <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\footnotemark</span></span></span> and <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\footnotetext</span></span></span>
out of order or reusing <span class="obeylines-h"><span class="verb"><span
@@ -8006,12 +8018,12 @@ C%
\end{document}
</pre>
-<!--l. 3525--><p class="nopar" >
+<!--l. 3532--><p class="nopar" >
-<!--l. 3527--><p class="noindent" >
+<!--l. 3534--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">13.7 </span> <a
- id="x1-11400013.7"></a>Subordinate counters</h4>
-<!--l. 3529--><p class="noindent" >Some counters do not have unique values and require the value of other counters to be unique. For
+ id="x1-11500013.7"></a>Subordinate counters</h4>
+<!--l. 3536--><p class="noindent" >Some counters do not have unique values and require the value of other counters to be unique. For
example, sections or figures might be numbered within chapters or <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\newtheorem</span></span></span> is used with an
optional counter argument. Internally LaTeX uses <span class="obeylines-h"><span class="verb"><span
@@ -8022,7 +8034,7 @@ class="ec-lmvtt-10">\@addtoreset</span></span></span> to catch this situation. A
class="ec-lmvtt-10">\numberwithin</span></span></span>
of package amsmath is caught by <span
class="ec-lmss-10">hyperref</span>.
-<!--l. 3539--><p class="indent" > However, if the definition of subordinate counters take place before <span
+<!--l. 3546--><p class="indent" > However, if the definition of subordinate counters take place before <span
class="ec-lmss-10">hyperref </span>is loaded, the old
meaning of <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\@addtoreset</span></span></span> is called without <span
@@ -8031,7 +8043,7 @@ class="ec-lmss-10">hyperref</span>&#8217;s additions. Then the companion counter
class="ec-lmvtt-10">\theH&#x003C;counter&#x003E;</span></span></span> can be redefined accordingly. Or move the definition of subordinate counters after
<span
class="ec-lmss-10">hyperref </span>is loaded.
-<!--l. 3545--><p class="indent" > Example for <span class="obeylines-h"><span class="verb"><span
+<!--l. 3552--><p class="indent" > Example for <span class="obeylines-h"><span class="verb"><span
class="ec-lmvtt-10">\newtheorem</span></span></span>, problematic case:
@@ -8039,14 +8051,14 @@ class="ec-lmvtt-10">\newtheorem</span></span></span>, problematic case:
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\newtheorem{corA}{CorollaryA}[section]
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{hyperref}
</pre>
-<!--l. 3549--><p class="nopar" > Solution a)
+<!--l. 3556--><p class="nopar" > Solution a)
<pre class="verbatim" id="verbatim-91">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{hyperref}
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\newtheorem{corA}{CorollaryA}[section}
</pre>
-<!--l. 3554--><p class="nopar" > Solution b)
+<!--l. 3561--><p class="nopar" > Solution b)
<pre class="verbatim" id="verbatim-92">
@@ -8054,11 +8066,11 @@ class="ec-lmvtt-10">\newtheorem</span></span></span>, problematic case:
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\usepackage{hyperref}
&#x00A0;&#x00A0;&#x00A0;&#x00A0;\newcommand*{\theHcorA}{\theHsection.\number\value{corA}}
</pre>
-<!--l. 3560--><p class="nopar" >
-<!--l. 3562--><p class="noindent" >
+<!--l. 3567--><p class="nopar" >
+<!--l. 3569--><p class="noindent" >
<h3 class="sectionHead"><span class="titlemark">14 </span> <a
- id="x1-11500014"></a>History and acknowledgments</h3>
-<!--l. 3564--><p class="noindent" >The original authors of <span
+ id="x1-11600014"></a>History and acknowledgments</h3>
+<!--l. 3571--><p class="noindent" >The original authors of <span
class="ec-lmss-10">hyperbasics.tex </span>and <span
class="ec-lmss-10">hypertex.sty</span>, from which this package descends, are
Tanmoy Bhattacharya and Thorsten Ohl. Package <span
@@ -8071,12 +8083,12 @@ Carlisle, T.&#x00A0;V.&#x00A0;Raman and Leslie Lamport for comments, requests, t
get the package into its first useable state. Various other people are mentioned at the point
in the source where I had to change the code in later versions because of problems they
found.
-<!--l. 3577--><p class="indent" > Tanmoy found a great many of the bugs, and (even better) often provided fixes, which has
+<!--l. 3584--><p class="indent" > Tanmoy found a great many of the bugs, and (even better) often provided fixes, which has
made the package more robust. The days spent on RevTeX&#x00A0;are entirely due to him! The
investigations of Bill Moss into the later versions including native PDF support uncovered a
good many bugs, and his testing is appreciated. Hans Hagen provided a lot of insight into
PDF.
-<!--l. 3585--><p class="indent" > Berthold Horn provided help, encouragement and sponsorship for the <span
+<!--l. 3592--><p class="indent" > Berthold Horn provided help, encouragement and sponsorship for the <span
class="ec-lmss-10">dvipsone </span>and <span
class="ec-lmss-10">dviwindo </span>drivers.
Sergey Lesenko provided the changes needed for <span
@@ -8090,14 +8102,14 @@ class="ec-lmss-10">hyper </span>package (developed in parallel with
<span
class="ec-lmss-10">hyperref</span>) showed me solutions for some problems. Hopefully the two packages will combine one
day.
-<!--l. 3594--><p class="indent" > The forms creation section owes a great deal to: T.&#x00A0;V.&#x00A0;Raman, for encouragement, support and
+<!--l. 3601--><p class="indent" > The forms creation section owes a great deal to: T.&#x00A0;V.&#x00A0;Raman, for encouragement, support and
ideas; Thomas Merz, whose book <span
class="ec-lmri-10">Web Publishing with Acrobat/PDF </span>provided crucial insights;
D.&#x00A0;P.&#x00A0;Story, whose detailed article about pdfmarks and forms solved many practical problems; and Hans
Hagen, who explained how to do it in <span
class="ec-lmss-10">pdftex</span>.
-<!--l. 3600--><p class="indent" > Steve Peter recreated the manual source in July 2003 after it had been lost.
-<!--l. 3603--><p class="indent" > Especial extra thanks to David Carlisle for the <span
+<!--l. 3607--><p class="indent" > Steve Peter recreated the manual source in July 2003 after it had been lost.
+<!--l. 3610--><p class="indent" > Especial extra thanks to David Carlisle for the <span
class="ec-lmss-10">backref </span>module, the ps2pdf and dviwindo support,
frequent general rewrites of my bad code, and for working on changes to the <span
class="ec-lmss-10">xr </span>package to suit
@@ -8106,62 +8118,62 @@ class="ec-lmss-10">hyperref</span>.
<h3 class="sectionHead"><span class="titlemark">15 </span> <a
- id="x1-11600015"></a>GNU Free Documentation License</h3>
-<!--l. 3643--><p class="noindent" >Version 1.2, November 2002
-<!--l. 3646--><p class="indent" > Copyright <span
+ id="x1-11700015"></a>GNU Free Documentation License</h3>
+<!--l. 3650--><p class="noindent" >Version 1.2, November 2002
+<!--l. 3653--><p class="indent" > Copyright <span
class="ts1-lmr10-">©</span>&#x00A0;2000,2001,2002 Free Software Foundation, Inc.<br
class="newline" />59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br
class="newline" />Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is
not allowed.
-<!--l. 3652--><p class="noindent" >
+<!--l. 3659--><p class="noindent" >
<h4 class="likesubsectionHead"><a
- id="x1-117000"></a>Preamble</h4>
-<!--l. 3654--><p class="noindent" >The purpose of this License is to make a manual, textbook, or other functional and useful document
+ id="x1-118000"></a>Preamble</h4>
+<!--l. 3661--><p class="noindent" >The purpose of this License is to make a manual, textbook, or other functional and useful document
&#8220;free&#8221; in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with
or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for
the author and publisher a way to get credit for their work, while not being considered responsible for
modifications made by others.
-<!--l. 3662--><p class="indent" > This License is a kind of &#8220;copyleft&#8221;, which means that derivative works of the document must
+<!--l. 3669--><p class="indent" > This License is a kind of &#8220;copyleft&#8221;, which means that derivative works of the document must
themselves be free in the same sense. It complements the GNU General Public License, which is a
copyleft license designed for free software.
-<!--l. 3667--><p class="indent" > We have designed this License in order to use it for manuals for free software, because free software
+<!--l. 3674--><p class="indent" > We have designed this License in order to use it for manuals for free software, because free software
needs free documentation: a free program should come with manuals providing the same
freedoms that the software does. But this License is not limited to software manuals; it can
be used for any textual work, regardless of subject matter or whether it is published as a
printed book. We recommend this License principally for works whose purpose is instruction or
reference.
-<!--l. 3676--><p class="noindent" >
+<!--l. 3683--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">15.1 </span> <a
- id="x1-11800015.1"></a>Applicability and definitions</h4>
-<!--l. 3679--><p class="noindent" >This License applies to any manual or other work, in any medium, that contains a notice placed by
+ id="x1-11900015.1"></a>Applicability and definitions</h4>
+<!--l. 3686--><p class="noindent" >This License applies to any manual or other work, in any medium, that contains a notice placed by
the copyright holder saying it can be distributed under the terms of this License. Such a
notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under
the conditions stated herein. The &#8220;Document&#8221;, below, refers to any such manual or work.
Any member of the public is a licensee, and is addressed as &#8220;you&#8221;. You accept the license
if you copy, modify or distribute the work in a way requiring permission under copyright
law.
-<!--l. 3689--><p class="indent" > A &#8220;Modified Version&#8221; of the Document means any work containing the Document or a
+<!--l. 3696--><p class="indent" > A &#8220;Modified Version&#8221; of the Document means any work containing the Document or a
portion of it, either copied verbatim, or with modifications and/or translated into another
language.
-<!--l. 3693--><p class="indent" > A &#8220;Secondary Section&#8221; is a named appendix or a front-matter section of the Document that deals
+<!--l. 3700--><p class="indent" > A &#8220;Secondary Section&#8221; is a named appendix or a front-matter section of the Document that deals
exclusively with the relationship of the publishers or authors of the Document to the Document&#8217;s overall
subject (or to related matters) and contains nothing that could fall directly within that overall subject.
(Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any
mathematics.) The relationship could be a matter of historical connection with the subject or with
related matters, or of legal, commercial, philosophical, ethical or political position regarding
them.
-<!--l. 3704--><p class="indent" > The &#8220;Invariant Sections&#8221; are certain Secondary Sections whose titles are designated, as being those of
+<!--l. 3711--><p class="indent" > The &#8220;Invariant Sections&#8221; are certain Secondary Sections whose titles are designated, as being those of
Invariant Sections, in the notice that says that the Document is released under this License. If a section
does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The
Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections
then there are none.
-<!--l. 3712--><p class="indent" > The &#8220;Cover Texts&#8221; are certain short passages of text that are listed, as Front-Cover Texts or
+<!--l. 3719--><p class="indent" > The &#8220;Cover Texts&#8221; are certain short passages of text that are listed, as Front-Cover Texts or
Back-Cover Texts, in the notice that says that the Document is released under this License.
A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25
words.
-<!--l. 3717--><p class="indent" > A &#8220;Transparent&#8221; copy of the Document means a machine-readable copy, represented in a format
+<!--l. 3724--><p class="indent" > A &#8220;Transparent&#8221; copy of the Document means a machine-readable copy, represented in a format
whose specification is available to the general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or
(for drawings) some widely available drawing editor, and that is suitable for input to text formatters or
@@ -8170,7 +8182,7 @@ otherwise Transparent file format whose markup, or absence of markup, has been a
discourage subsequent modification by readers is not Transparent. An image format is not
Transparent if used for any substantial amount of text. A copy that is not &#8220;Transparent&#8221; is called
&#8220;Opaque&#8221;.
-<!--l. 3730--><p class="indent" > Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo
+<!--l. 3737--><p class="indent" > Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo
input format, LaTeX&#x00A0;input format, SGML or XML using a publicly available DTD, and
standard-conforming simple HTML, PostScript or PDF designed for human modification.
Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include
@@ -8178,41 +8190,41 @@ proprietary formats that can be read and edited only by proprietary word process
or XML for which the DTD and/or processing tools are not generally available, and the
machine-generated HTML, PostScript or PDF produced by some word processors for output purposes
only.
-<!--l. 3741--><p class="indent" > The &#8220;Title Page&#8221; means, for a printed book, the title page itself, plus such following pages as are
+<!--l. 3748--><p class="indent" > The &#8220;Title Page&#8221; means, for a printed book, the title page itself, plus such following pages as are
needed to hold, legibly, the material this License requires to appear in the title page. For works in
formats which do not have any title page as such, &#8220;Title Page&#8221; means the text near the
most prominent appearance of the work&#8217;s title, preceding the beginning of the body of the
text.
-<!--l. 3748--><p class="indent" > A section &#8220;Entitled XYZ&#8221; means a named subunit of the Document whose title either is precisely
+<!--l. 3755--><p class="indent" > A section &#8220;Entitled XYZ&#8221; means a named subunit of the Document whose title either is precisely
XYZ or contains XYZ in parentheses following text that translates XYZ in another language.
(Here XYZ stands for a specific section name mentioned below, such as &#8220;Acknowledgements&#8221;,
&#8220;Dedications&#8221;, &#8220;Endorsements&#8221;, or &#8220;History&#8221;.) To &#8220;Preserve the Title&#8221; of such a section when you
modify the Document means that it remains a section &#8220;Entitled XYZ&#8221; according to this
definition.
-<!--l. 3756--><p class="indent" > The Document may include Warranty Disclaimers next to the notice which states that this
+<!--l. 3763--><p class="indent" > The Document may include Warranty Disclaimers next to the notice which states that this
License applies to the Document. These Warranty Disclaimers are considered to be included by
reference in this License, but only as regards disclaiming warranties: any other implication
that these Warranty Disclaimers may have is void and has no effect on the meaning of this
License.
-<!--l. 3764--><p class="noindent" >
+<!--l. 3771--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">15.2 </span> <a
- id="x1-11900015.2"></a>Verbatim copying</h4>
-<!--l. 3767--><p class="noindent" >You may copy and distribute the Document in any medium, either commercially or noncommercially,
+ id="x1-12000015.2"></a>Verbatim copying</h4>
+<!--l. 3774--><p class="noindent" >You may copy and distribute the Document in any medium, either commercially or noncommercially,
provided that this License, the copyright notices, and the license notice saying this License applies to the
Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this
License. You may not use technical measures to obstruct or control the reading or further copying of the
copies you make or distribute. However, you may accept compensation in exchange for copies.
If you distribute a large enough number of copies you must also follow the conditions in
section&#x00A0;<a
-href="#x1-12000015.3">15.3<!--tex4ht:ref: copying --></a>.
-<!--l. 3778--><p class="indent" > You may also lend copies, under the same conditions stated above, and you may publicly display
+href="#x1-12100015.3">15.3<!--tex4ht:ref: copying --></a>.
+<!--l. 3785--><p class="indent" > You may also lend copies, under the same conditions stated above, and you may publicly display
copies.
-<!--l. 3782--><p class="noindent" >
+<!--l. 3789--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">15.3 </span> <a
- id="x1-12000015.3"></a>Copying in quantity</h4>
-<!--l. 3785--><p class="noindent" >If you publish printed copies (or copies in media that commonly have printed covers) of the Document,
+ id="x1-12100015.3"></a>Copying in quantity</h4>
+<!--l. 3792--><p class="noindent" >If you publish printed copies (or copies in media that commonly have printed covers) of the Document,
numbering more than 100, and the Document&#8217;s license notice requires Cover Texts, you must enclose the
copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front
cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly
@@ -8221,10 +8233,10 @@ words of the title equally prominent and visible. You may add other material on
addition. Copying with changes limited to the covers, as long as they preserve the title of
the Document and satisfy these conditions, can be treated as verbatim copying in other
respects.
-<!--l. 3798--><p class="indent" > If the required texts for either cover are too voluminous to fit legibly, you should put the first ones
+<!--l. 3805--><p class="indent" > If the required texts for either cover are too voluminous to fit legibly, you should put the first ones
listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent
pages.
-<!--l. 3803--><p class="indent" > If you publish or distribute Opaque copies of the Document numbering more than 100, you must
+<!--l. 3810--><p class="indent" > If you publish or distribute Opaque copies of the Document numbering more than 100, you must
either include a machine-readable Transparent copy along with each Opaque copy, or state in or with
each Opaque copy a computer-network location from which the general network-using public has access
to download using public-standard network protocols a complete Transparent copy of the Document, free
@@ -8233,75 +8245,75 @@ begin distribution of Opaque copies in quantity, to ensure that this Transparent
remain thus accessible at the stated location until at least one year after the last time you
distribute an Opaque copy (directly or through your agents or retailers) of that edition to the
public.
-<!--l. 3816--><p class="indent" > It is requested, but not required, that you contact the authors of the Document well before
+<!--l. 3823--><p class="indent" > It is requested, but not required, that you contact the authors of the Document well before
redistributing any large number of copies, to give them a chance to provide you with an updated version
of the Document.
-<!--l. 3821--><p class="noindent" >
+<!--l. 3828--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">15.4 </span> <a
- id="x1-12100015.4"></a>Modifications</h4>
-<!--l. 3824--><p class="noindent" >You may copy and distribute a Modified Version of the Document under the conditions of sections&#x00A0;<a
-href="#x1-11900015.2">15.2<!--tex4ht:ref: verbatim --></a>
+ id="x1-12200015.4"></a>Modifications</h4>
+<!--l. 3831--><p class="noindent" >You may copy and distribute a Modified Version of the Document under the conditions of sections&#x00A0;<a
+href="#x1-12000015.2">15.2<!--tex4ht:ref: verbatim --></a>
and <a
-href="#x1-12000015.3">15.3<!--tex4ht:ref: copying --></a> above, provided that you release the Modified Version under precisely this License, with the
+href="#x1-12100015.3">15.3<!--tex4ht:ref: copying --></a> above, provided that you release the Modified Version under precisely this License, with the
Modified Version filling the role of the Document, thus licensing distribution and modification of the
Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified
Version:
-<!--l. 3833--><p class="indent" >
+<!--l. 3840--><p class="indent" >
<ol class="enumerate1" >
<li
- class="enumerate" id="x1-121002x1">
- <!--l. 3834--><p class="noindent" >Use in the Title Page (and on the covers, if any) a title distinct from that of the Document,
+ class="enumerate" id="x1-122002x1">
+ <!--l. 3841--><p class="noindent" >Use in the Title Page (and on the covers, if any) a title distinct from that of the Document,
and from those of previous versions (which should, if there were any, be listed in the History
section of the Document). You may use the same title as a previous version if the original
publisher of that version gives permission.
</li>
<li
- class="enumerate" id="x1-121004x2">
- <!--l. 3839--><p class="noindent" >List on the Title Page, as authors, one or more persons or entities responsible for authorship
+ class="enumerate" id="x1-122004x2">
+ <!--l. 3846--><p class="noindent" >List on the Title Page, as authors, one or more persons or entities responsible for authorship
of the modifications in the Modified Version, together with at least five of the principal
authors of the Document (all of its principal authors, if it has fewer than five), unless they
release you from this requirement.
</li>
<li
- class="enumerate" id="x1-121006x3">
- <!--l. 3844--><p class="noindent" >State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ class="enumerate" id="x1-122006x3">
+ <!--l. 3851--><p class="noindent" >State on the Title page the name of the publisher of the Modified Version, as the publisher.
</li>
<li
- class="enumerate" id="x1-121008x4">
- <!--l. 3846--><p class="noindent" >Preserve all the copyright notices of the Document.
+ class="enumerate" id="x1-122008x4">
+ <!--l. 3853--><p class="noindent" >Preserve all the copyright notices of the Document.
</li>
<li
- class="enumerate" id="x1-121010x5">
- <!--l. 3847--><p class="noindent" >Add an appropriate copyright notice for your modifications adjacent to the other copyright
+ class="enumerate" id="x1-122010x5">
+ <!--l. 3854--><p class="noindent" >Add an appropriate copyright notice for your modifications adjacent to the other copyright
notices.
</li>
<li
- class="enumerate" id="x1-121012x6">
- <!--l. 3849--><p class="noindent" >Include, immediately after the copyright notices, a license notice giving the public permission
+ class="enumerate" id="x1-122012x6">
+ <!--l. 3856--><p class="noindent" >Include, immediately after the copyright notices, a license notice giving the public permission
to use the Modified Version under the terms of this License, in the form shown in the
Addendum below.
</li>
<li
- class="enumerate" id="x1-121014x7">
- <!--l. 3852--><p class="noindent" >Preserve in that license notice the full lists of Invariant Sections and required Cover Texts
+ class="enumerate" id="x1-122014x7">
+ <!--l. 3859--><p class="noindent" >Preserve in that license notice the full lists of Invariant Sections and required Cover Texts
given in the Document&#8217;s license notice.
</li>
<li
- class="enumerate" id="x1-121016x8">
- <!--l. 3854--><p class="noindent" >Include an unaltered copy of this License.
+ class="enumerate" id="x1-122016x8">
+ <!--l. 3861--><p class="noindent" >Include an unaltered copy of this License.
</li>
<li
- class="enumerate" id="x1-121018x9">
- <!--l. 3855--><p class="noindent" >Preserve the section Entitled &#8220;History&#8221;, Preserve its Title, and add to it an item stating at
+ class="enumerate" id="x1-122018x9">
+ <!--l. 3862--><p class="noindent" >Preserve the section Entitled &#8220;History&#8221;, Preserve its Title, and add to it an item stating at
least the title, year, new authors, and publisher of the Modified Version as given on the Title
Page. If there is no section Entitled &#8220;History&#8221; in the Document, create one stating the title,
year, authors, and publisher of the Document as given on its Title Page, then add an item
describing the Modified Version as stated in the previous sentence.
</li>
<li
- class="enumerate" id="x1-121020x10">
- <!--l. 3862--><p class="noindent" >Preserve the network location, if any, given in the Document for public access to a
+ class="enumerate" id="x1-122020x10">
+ <!--l. 3869--><p class="noindent" >Preserve the network location, if any, given in the Document for public access to a
Transparent copy of the Document, and likewise the network locations given in the Document
for previous versions it was based on. These may be placed in the &#8220;History&#8221; section. You
may omit a network location for a work that was published at least four years before the
@@ -8310,99 +8322,99 @@ Version:
</li>
<li
- class="enumerate" id="x1-121022x11">
- <!--l. 3869--><p class="noindent" >For any section Entitled &#8220;Acknowledgements&#8221; or &#8220;Dedications&#8221;, Preserve the Title of the
+ class="enumerate" id="x1-122022x11">
+ <!--l. 3876--><p class="noindent" >For any section Entitled &#8220;Acknowledgements&#8221; or &#8220;Dedications&#8221;, Preserve the Title of the
section, and preserve in the section all the substance and tone of each of the contributor
acknowledgements and/or dedications given therein.
</li>
<li
- class="enumerate" id="x1-121024x12">
- <!--l. 3873--><p class="noindent" >Preserve all the Invariant Sections of the Document, unaltered in their text and in their
+ class="enumerate" id="x1-122024x12">
+ <!--l. 3880--><p class="noindent" >Preserve all the Invariant Sections of the Document, unaltered in their text and in their
titles. Section numbers or the equivalent are not considered part of the section titles.
</li>
<li
- class="enumerate" id="x1-121026x13">
- <!--l. 3876--><p class="noindent" >Delete any section Entitled &#8220;Endorsements&#8221;. Such a section may not be included in the
+ class="enumerate" id="x1-122026x13">
+ <!--l. 3883--><p class="noindent" >Delete any section Entitled &#8220;Endorsements&#8221;. Such a section may not be included in the
Modified Version.
</li>
<li
- class="enumerate" id="x1-121028x14">
- <!--l. 3878--><p class="noindent" >Do not retitle any existing section to be Entitled &#8220;Endorsements&#8221; or to conflict in title with
+ class="enumerate" id="x1-122028x14">
+ <!--l. 3885--><p class="noindent" >Do not retitle any existing section to be Entitled &#8220;Endorsements&#8221; or to conflict in title with
any Invariant Section.
</li>
<li
- class="enumerate" id="x1-121030x15">
- <!--l. 3880--><p class="noindent" >Preserve any Warranty Disclaimers.
+ class="enumerate" id="x1-122030x15">
+ <!--l. 3887--><p class="noindent" >Preserve any Warranty Disclaimers.
</li></ol>
-<!--l. 3884--><p class="indent" > If the Modified Version includes new front-matter sections or appendices that qualify as Secondary
+<!--l. 3891--><p class="indent" > If the Modified Version includes new front-matter sections or appendices that qualify as Secondary
Sections and contain no material copied from the Document, you may at your option designate some or
all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in
the Modified Version&#8217;s license notice. These titles must be distinct from any other section
titles.
-<!--l. 3891--><p class="indent" > You may add a section Entitled &#8220;Endorsements&#8221;, provided it contains nothing but endorsements of
+<!--l. 3898--><p class="indent" > You may add a section Entitled &#8220;Endorsements&#8221;, provided it contains nothing but endorsements of
your Modified Version by various parties&#8211;for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a standard.
-<!--l. 3897--><p class="indent" > You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as
+<!--l. 3904--><p class="indent" > You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as
a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any
one entity. If the Document already includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of, you may not add another; but you
may replace the old one, on explicit permission from the previous publisher that added the old
one.
-<!--l. 3907--><p class="indent" > The author(s) and publisher(s) of the Document do not by this License give permission to use their
+<!--l. 3914--><p class="indent" > The author(s) and publisher(s) of the Document do not by this License give permission to use their
names for publicity for or to assert or imply endorsement of any Modified Version.
-<!--l. 3912--><p class="noindent" >
+<!--l. 3919--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">15.5 </span> <a
- id="x1-12200015.5"></a>Combining documents</h4>
-<!--l. 3915--><p class="noindent" >You may combine the Document with other documents released under this License, under the terms
+ id="x1-12300015.5"></a>Combining documents</h4>
+<!--l. 3922--><p class="noindent" >You may combine the Document with other documents released under this License, under the terms
defined in section&#x00A0;<a
-href="#x1-12100015.4">15.4<!--tex4ht:ref: modifications --></a> above for modified versions, provided that you include in the combination all of
+href="#x1-12200015.4">15.4<!--tex4ht:ref: modifications --></a> above for modified versions, provided that you include in the combination all of
the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant
Sections of your combined work in its license notice, and that you preserve all their Warranty
Disclaimers.
-<!--l. 3923--><p class="indent" > The combined work need only contain one copy of this License, and multiple identical Invariant
+<!--l. 3930--><p class="indent" > The combined work need only contain one copy of this License, and multiple identical Invariant
Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name
but different contents, make the title of each such section unique by adding at the end of it, in
parentheses, the name of the original author or publisher of that section if known, or else a unique
number. Make the same adjustment to the section titles in the list of Invariant Sections in the license
notice of the combined work.
-<!--l. 3932--><p class="indent" > In the combination, you must combine any sections Entitled &#8220;History&#8221; in the various original
+<!--l. 3939--><p class="indent" > In the combination, you must combine any sections Entitled &#8220;History&#8221; in the various original
documents, forming one section Entitled &#8220;History&#8221;; likewise combine any sections Entitled
&#8220;Acknowledgements&#8221;, and any sections Entitled &#8220;Dedications&#8221;. You must delete all sections Entitled
&#8220;Endorsements&#8221;.
-<!--l. 3939--><p class="noindent" >
+<!--l. 3946--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">15.6 </span> <a
- id="x1-12300015.6"></a>Collections of documents</h4>
-<!--l. 3942--><p class="noindent" >You may make a collection consisting of the Document and other documents released under this License,
+ id="x1-12400015.6"></a>Collections of documents</h4>
+<!--l. 3949--><p class="noindent" >You may make a collection consisting of the Document and other documents released under this License,
and replace the individual copies of this License in the various documents with a single copy that is
included in the collection, provided that you follow the rules of this License for verbatim copying of each
of the documents in all other respects.
-<!--l. 3948--><p class="indent" > You may extract a single document from such a collection, and distribute it individually under this
+<!--l. 3955--><p class="indent" > You may extract a single document from such a collection, and distribute it individually under this
License, provided you insert a copy of this License into the extracted document, and follow this License
in all other respects regarding verbatim copying of that document.
-<!--l. 3954--><p class="noindent" >
+<!--l. 3961--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">15.7 </span> <a
- id="x1-12400015.7"></a>Aggregation with independent works</h4>
-<!--l. 3957--><p class="noindent" >A compilation of the Document or its derivatives with other separate and independent documents or
+ id="x1-12500015.7"></a>Aggregation with independent works</h4>
+<!--l. 3964--><p class="noindent" >A compilation of the Document or its derivatives with other separate and independent documents or
works, in or on a volume of a storage or distribution medium, is called an &#8220;aggregate&#8221; if the copyright
resulting from the compilation is not used to limit the legal rights of the compilation&#8217;s users beyond what
the individual works permit. When the Document is included in an aggregate, this License does not
apply to the other works in the aggregate which are not themselves derivative works of the
Document.
-<!--l. 3966--><p class="indent" > If the Cover Text requirement of section&#x00A0;<a
-href="#x1-12000015.3">15.3<!--tex4ht:ref: copying --></a> is applicable to these copies of the Document, then if
+<!--l. 3973--><p class="indent" > If the Cover Text requirement of section&#x00A0;<a
+href="#x1-12100015.3">15.3<!--tex4ht:ref: copying --></a> is applicable to these copies of the Document, then if
the Document is less than one half of the entire aggregate, the Document&#8217;s Cover Texts may be placed
on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the
Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole
aggregate.
-<!--l. 3975--><p class="noindent" >
+<!--l. 3982--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">15.8 </span> <a
- id="x1-12500015.8"></a>Translation</h4>
-<!--l. 3978--><p class="noindent" >Translation is considered a kind of modification, so you may distribute translations of the Document
+ id="x1-12600015.8"></a>Translation</h4>
+<!--l. 3985--><p class="noindent" >Translation is considered a kind of modification, so you may distribute translations of the Document
under the terms of section&#x00A0;<a
-href="#x1-12100015.4">15.4<!--tex4ht:ref: modifications --></a>. Replacing Invariant Sections with translations requires special
+href="#x1-12200015.4">15.4<!--tex4ht:ref: modifications --></a>. Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include translations of some or all Invariant
Sections in addition to the original versions of these Invariant Sections. You may include a translation of
@@ -8411,53 +8423,53 @@ provided that you also include the original English version of this License and
versions of those notices and disclaimers. In case of a disagreement between the translation
and the original version of this License or a notice or disclaimer, the original version will
prevail.
-<!--l. 3992--><p class="indent" > If a section in the Document is Entitled &#8220;Acknowledgements&#8221;, &#8220;Dedications&#8221;, or &#8220;History&#8221;, the
+<!--l. 3999--><p class="indent" > If a section in the Document is Entitled &#8220;Acknowledgements&#8221;, &#8220;Dedications&#8221;, or &#8220;History&#8221;, the
requirement (section&#x00A0;<a
-href="#x1-12100015.4">15.4<!--tex4ht:ref: modifications --></a>) to Preserve its Title (section&#x00A0;<a
-href="#x1-11800015.1">15.1<!--tex4ht:ref: applicability --></a>) will typically require changing the actual
+href="#x1-12200015.4">15.4<!--tex4ht:ref: modifications --></a>) to Preserve its Title (section&#x00A0;<a
+href="#x1-11900015.1">15.1<!--tex4ht:ref: applicability --></a>) will typically require changing the actual
title.
-<!--l. 3999--><p class="noindent" >
+<!--l. 4006--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">15.9 </span> <a
- id="x1-12600015.9"></a>Termination</h4>
-<!--l. 4002--><p class="noindent" >You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under
+ id="x1-12700015.9"></a>Termination</h4>
+<!--l. 4009--><p class="noindent" >You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under
this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will
automatically terminate your rights under this License. However, parties who have received copies, or
rights, from you under this License will not have their licenses terminated so long as such parties remain
in full compliance.
-<!--l. 4011--><p class="noindent" >
+<!--l. 4018--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">15.10 </span> <a
- id="x1-12700015.10"></a>Future revisions of this license</h4>
-<!--l. 4014--><p class="noindent" >The Free Software Foundation may publish new, revised versions of the GNU Free Documentation
+ id="x1-12800015.10"></a>Future revisions of this license</h4>
+<!--l. 4021--><p class="noindent" >The Free Software Foundation may publish new, revised versions of the GNU Free Documentation
License from time to time. Such new versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
-<!--l. 4020--><p class="indent" > Each version of the License is given a distinguishing version number. If the Document specifies that a
+<!--l. 4027--><p class="indent" > Each version of the License is given a distinguishing version number. If the Document specifies that a
particular numbered version of this License &#8220;or any later version&#8221; applies to it, you have the option of
following the terms and conditions either of that specified version or of any later version that has been
published (not as a draft) by the Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not as a draft) by the Free Software
Foundation.
-<!--l. 4030--><p class="noindent" >
+<!--l. 4037--><p class="noindent" >
<h4 class="likesubsectionHead"><a
- id="x1-128000"></a>Addendum: how to use this license for your documents</h4>
-<!--l. 4032--><p class="noindent" >To use this License in a document you have written, include a copy of the License in the document and
+ id="x1-129000"></a>Addendum: how to use this license for your documents</h4>
+<!--l. 4039--><p class="noindent" >To use this License in a document you have written, include a copy of the License in the document and
put the following copyright and license notices just after the title page:
-<!--l. 4036--><p class="indent" >
+<!--l. 4043--><p class="indent" >
<blockquote class="quote">
- <!--l. 4037--><p class="noindent" >Copyright <span
+ <!--l. 4044--><p class="noindent" >Copyright <span
class="ts1-lmr10-">©</span>&#x00A0;YEAR YOUR NAME. Permission is granted to copy, distribute and/or
modify this document under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software Foundation; with no
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the
license is included in the section entitled &#8220;GNU Free Documentation License&#8221;.</blockquote>
-<!--l. 4046--><p class="indent" > If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the &#8220;with...Texts.&#8221;
+<!--l. 4053--><p class="indent" > If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the &#8220;with...Texts.&#8221;
line with this:
-<!--l. 4049--><p class="indent" > with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and
+<!--l. 4056--><p class="indent" > with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and
with the Back-Cover Texts being LIST.
-<!--l. 4052--><p class="indent" > If you have Invariant Sections without Cover Texts, or some other combination of the three, merge
+<!--l. 4059--><p class="indent" > If you have Invariant Sections without Cover Texts, or some other combination of the three, merge
those two alternatives to suit the situation.
-<!--l. 4056--><p class="indent" > If your document contains nontrivial examples of program code, we recommend releasing these
+<!--l. 4063--><p class="indent" > If your document contains nontrivial examples of program code, we recommend releasing these
examples in parallel under your choice of free software license, such as the GNU General Public License,
to permit their use in free software.
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc.pdf b/macros/latex/contrib/hyperref/doc/hyperref-doc.pdf
index ffc86541b6..06eca0ae05 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc.pdf
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc.tex b/macros/latex/contrib/hyperref/doc/hyperref-doc.tex
index e7e21d6196..cfc4058afb 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc.tex
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc.tex
@@ -166,7 +166,7 @@
}
\makeatother
\title{Hypertext marks in \hologo{LaTeX}: a manual for \xpackage{hyperref}}
-\date{2023-10-27 v7.01d}
+\date{2023-11-07 v7.01e}
\begin{document}
@@ -1407,7 +1407,8 @@ alias command.
\end{cmdsyntax}
\noindent A base \emph{URL} is established, which is prepended to other
-specified URLs, to make it easier to write portable documents.
+specified URLs, to make it easier to write portable documents. When creating a PDF
+the command can be used only once as the \emph{URL} is written into the catalog.
\begin{cmdsyntax}
\ci{hyperimage}\verb|{|\emph{imageURL}\verb|}{|\emph{text}\verb|}|
@@ -3111,6 +3112,12 @@ Example for introducing links for the page numbers:
\renewcommand*{\pagedeclaration}[1]{\unskip, \hyperpage{#1}}
\end{verbatim}
+\subsubsection{ntheorem}
+
+This package is not fully supported. The \texttt{thref} option should not be used at all as
+it breaks the \verb+\label+ command. It also not garantied that links to theorems always work
+properly as the package redefines many internals and but offers no proper interface for hyperlinks.
+
\subsubsection{ntheorem-hyper}
This package is obsolete, use the up-to-date original
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc7.html b/macros/latex/contrib/hyperref/doc/hyperref-doc7.html
index 775f79225f..767dd0b5b4 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc7.html
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc7.html
@@ -11,7 +11,7 @@
</head><body
>
<div class="footnote-text">
- <!--l. 2885--><p class="indent" > <span class="footnote-mark"><a
+ <!--l. 2886--><p class="indent" > <span class="footnote-mark"><a
id="fn6x0"><a
id="x7-64002x11"></a> <sup class="textsuperscript">6</sup></a></span><span
class="ec-lmr-8">It will be merged with the </span><span
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc8.html b/macros/latex/contrib/hyperref/doc/hyperref-doc8.html
index e7a3d2bade..dc87a971db 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc8.html
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc8.html
@@ -13,7 +13,7 @@
<div class="footnote-text">
<span class="footnote-mark"><a
id="fn7x0"><a
- id="x8-103002x12"></a> <sup class="textsuperscript">7</sup></a></span><span
+ id="x8-104002x12"></a> <sup class="textsuperscript">7</sup></a></span><span
class="ec-lmr-8">This section moved from the README file, needs more integration into the manual</span></div>
</body></html>
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc9.html b/macros/latex/contrib/hyperref/doc/hyperref-doc9.html
index 00d37bbe57..da2b18955e 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc9.html
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc9.html
@@ -13,7 +13,7 @@
<div class="footnote-text">
<span class="footnote-mark"><a
id="fn8x0"><a
- id="x9-107002x13"></a> <sup class="textsuperscript">8</sup></a></span><span
+ id="x9-108002x13"></a> <sup class="textsuperscript">8</sup></a></span><span
class="ec-lmr-8">This section moved from the README file, needs more integration into the manual</span></div>
</body></html>
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf b/macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf
index f72a822cbd..1305ef1528 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf
+++ b/macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/hyperref.pdf b/macros/latex/contrib/hyperref/doc/hyperref.pdf
index 907a70d08a..04ea790337 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref.pdf
+++ b/macros/latex/contrib/hyperref/doc/hyperref.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/nameref.pdf b/macros/latex/contrib/hyperref/doc/nameref.pdf
index 60b61c8557..5b2f5f320e 100644
--- a/macros/latex/contrib/hyperref/doc/nameref.pdf
+++ b/macros/latex/contrib/hyperref/doc/nameref.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/hluatex.dtx b/macros/latex/contrib/hyperref/hluatex.dtx
index ada09a282d..d8309b3eb9 100644
--- a/macros/latex/contrib/hyperref/hluatex.dtx
+++ b/macros/latex/contrib/hyperref/hluatex.dtx
@@ -1,6 +1,6 @@
% \iffalse
% Source File: hluatex.dtx
-% 2023-10-27 v7.01d
+% 2023-11-07 v7.01e
%
% Copyright
% 2016-2019 Oberdiek Package Support Group
@@ -31,7 +31,7 @@
%
% \begin{macrocode}
%<*luatex>
-%% 2023-10-27 v7.01d
+%% 2023-11-07 v7.01e
%% force unicode encoding, see issue #101
%% code mostly copied from hxetex.def
\HyPsd@LoadUnicode
diff --git a/macros/latex/contrib/hyperref/hyperref-linktarget.dtx b/macros/latex/contrib/hyperref/hyperref-linktarget.dtx
index 58ff089276..d013b89980 100644
--- a/macros/latex/contrib/hyperref/hyperref-linktarget.dtx
+++ b/macros/latex/contrib/hyperref/hyperref-linktarget.dtx
@@ -53,7 +53,7 @@
% }^^A
% }
%
-% \date{Version 2023-10-27 v7.01d}
+% \date{Version 2023-11-07 v7.01e}
%
% \maketitle
% \begin{documentation}
@@ -412,7 +412,7 @@
\cs_new_protected:Npn \@@_target_raise:n #1
{
\mode_if_vertical:TF
- { #1 }
+ { \UseSocket{hyp/raisedlink}{#1} }
{
\Hy@SaveSpaceFactor
\penalty\@M
diff --git a/macros/latex/contrib/hyperref/hyperref-patches.dtx b/macros/latex/contrib/hyperref/hyperref-patches.dtx
index 1e8213d599..2c1209001a 100644
--- a/macros/latex/contrib/hyperref/hyperref-patches.dtx
+++ b/macros/latex/contrib/hyperref/hyperref-patches.dtx
@@ -55,7 +55,7 @@
% }^^A
% }
%
-% \date{Version 2023-10-27 v7.01d}
+% \date{Version 2023-11-07 v7.01e}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/hyperref/hyperref.dtx b/macros/latex/contrib/hyperref/hyperref.dtx
index 0c5340d50b..c6fccc9cfd 100644
--- a/macros/latex/contrib/hyperref/hyperref.dtx
+++ b/macros/latex/contrib/hyperref/hyperref.dtx
@@ -51,7 +51,7 @@
%<puvnenc>\ProvidesFile{puvnenc.def}
%<puarenc>\ProvidesFile{puarenc.def}
%<psdextra>\ProvidesFile{psdextra.def}
-%<!none&!packageEnd> [2023-10-27 v7.01d %
+%<!none&!packageEnd> [2023-11-07 v7.01e %
%<package> Hypertext links for LaTeX]
%<nohyperref> Dummy hyperref (SR)]
%<driver> Hyperref documentation driver file]
@@ -4312,9 +4312,16 @@
\global\Hy@SavedSpaceFactor=\the\Hy@SavedSpaceFactor\relax
}%
}
+% \end{macrocode}
+% Packages like varwidth need an option to change the handling in vmode.
+% (Issue \#204). With a new format we therefore insert a socket.
+% \begin{macrocode}
+\@ifl@t@r\fmtversion{2023-11-01}
+ {\NewSocket{hyp/raisedlink}{1}}
+ {\providecommand\UseSocket[2]{#2}}
\def\Hy@raisedlink#1{%
\ifvmode
- #1%
+ \UseSocket{hyp/raisedlink}{#1}%
\else
\Hy@SaveSpaceFactor
\penalty\@M
@@ -10692,6 +10699,20 @@
\def\hypergetpageref#1{\getrefbykeydefault{#1}{page}{0}}
% \end{macrocode}
%
+% \section{Package varwidth support}
+% 2023-11-07: varwidth needs a special configuration point to inserts its handler.
+% We use a socket for this.
+%
+% \begin{macrocode}
+\@ifl@t@r\fmtversion{2023-11-01}
+ {
+ \AddToHook{package/varwidth/after}
+ {
+ \NewSocketPlug{hyp/raisedlink}{varwidth}{\@vwid@wrap{#1}}
+ \appto\@vwid@setup{\AssignSocketPlug{hyp/raisedlink}{varwidth}}
+ }
+ }{}
+% \end{macrocode}
% \section{Package titlesec and titletoc support}
%
% This code is contributed by Javier Bezos
@@ -10734,30 +10755,6 @@
}{}
% \end{macrocode}
%
-%
-% \section{Package varioref support}
-%
-% Package nameref uses five arguments for the ref system.
-% Fix provided by Felix Neubauer (\Email{felix.neubauer@gmx.net}).
-% This fix will no longer be needed with latex 2021-11-15.
-% \begin{macrocode}
-\@ifl@t@r\fmtversion{2021-11-15}
- {}%
- {
- \AtBeginDocument{%
- \def\Hy@varioref@undefined{{??}{??}{}{}{}}
- \@ifpackageloaded{varioref}{%
- \def\vref@pagenum#1#2{%
- \@ifundefined{r@#2}{%
- \expandafter\let\csname r@#2\endcsname\Hy@varioref@undefined
- }{}%
- \edef#1{\getpagerefnumber{#2}}%
- }%
- }{}
- }
- }
-% \end{macrocode}
-%
% \section{Package longtable support}
%
% Sometimes the anchor of the longtable goes to the previous
@@ -10967,14 +10964,52 @@
}
% \end{macrocode}
%
-% Support for theorems. We move the target into the para hook to
-% avoid spacing problem. The patch will not apply to
-% \texttt{cleveref} but hopefully it does the right thing anyway.
+% \section{Support for theorems}
+%
+% Hyperlink support in theorems has to resolve typically three problems:
+% \begin{itemize}
+% \item The \cs{refstepcounter} can be issued to early. The target it produces
+% can be separated from the theorem and then the link if wrong (see testfiles thm-005-xx).
+% It can also affect spacing.
+% This means that it is better if this \cs{refstepcounter} doesn't produce a target.
+%
+% \item The natural place for the target (before the theorem label) is normally not printed
+% directly but delayed to the next paragraph begin (through the \cs{item} code or by other means).
+% and \cs{label} commands used directly at the begin of the environment are perhaps
+% processed \emph{before} the target is created
+% and so do not know the correct \cs{@currentHref} value. That means that if
+% \cs{refstepcounter} does not produce a target, it should nevertheless update the target
+% name.
+%
+% \item The target should be placed (in horizontal mode) before the theorem label to avoid
+% side effects on spacing. For this a suitable place must be
+% found depending on the actual theorem definition.
+% \end{itemize}
+%
+% Theorems typically issue the \cs{refstepcounter} in \cs{@thm}.
+% The first two points can therefore be resolved by patching this command
+% and replacing the \cs{refstepcounter}.
+%
+% The last point is the most complicated. Simply moving at the point \cs{refstepcounter}
+% is encountered into the next para hook doesn't work, as this can be in a header if there is page
+% break. The next item hook doesn't work for the same reason,
+% also not every theorem environment actually use \cs{item} (e.g. {amsthm} and ams-classes).
+% Patching (or using a hook) \cs{@begintheorem} doesn't work either as {ntheorem}
+% redefines this on the fly.
+%
+% For now we move the target creation into the item hook. This is not perfect,
+% as it can end up in header or be to much to the right, but there is not really
+% a better place.
+%
+% The patch will not apply to
+% \texttt{cleveref}, this means that with cleveref there
+% can be a page break between target and theorem but beside this
+% it hopefully it does the right thing.
% \cs{@currentHref} is updated directly for labels set before
% the actual start of the paragraph. The target can be behind
% a target created from a following list, so we restore \cs{@currentHref}
-% just in case
-%
+% just in case.
+% Later we could use sockets here (or hope that the packages take this over.
%
% \begin{macrocode}
\newcommand\Hy@theorem@refstepcounter[1]
@@ -10982,33 +11017,37 @@
\H@refstepcounter{#1}%
\hyper@makecurrent{#1}%
\global\let\Hy@dth@currentHref\@currentHref
+ \Hy@theorem@makelinktarget{\Hy@dth@currentHref}%
+ }
+\newcommand\Hy@theorem@makelinktarget[1]
+ {
\AddToHookNext{cmd/item/before}
{\AddToHookNext{para/begin}
{\let\Hy@tempa\@currentHref
- \MakeLinkTarget*{\Hy@dth@currentHref}%
+ \MakeLinkTarget*{#1}% \Hy@dth@currentHref
\global\let\@currentHref\Hy@tempa
}%
- }%
- }
+ }%
+ }
% \end{macrocode}
% amsthm doesn't issue an item in the theorem, we delay the target into
% \cs{deferred@thm@head} and hope that it always begins a paragraph.
% \begin{macrocode}
-\AddToHook{package/amsthm/after}
- {
- \renewcommand\Hy@theorem@refstepcounter[1]
+\AddToHook{begindocument}
+ {%
+ \@ifundefined{deferred@thm@head}{}
{%
- \H@refstepcounter{#1}%
- \hyper@makecurrent{#1}%
- \global\let\Hy@dth@currentHref\@currentHref
- \AddToHookNext{cmd/deferred@thm@head/before}
- {\AddToHookNext{para/begin}
- {\let\Hy@tempa\@currentHref
- \MakeLinkTarget*{\Hy@dth@currentHref}%
- \global\let\@currentHref\Hy@tempa
- }%
- }%
- }
+ \renewcommand\Hy@theorem@makelinktarget[1]
+ {%
+ \AddToHookNext{cmd/deferred@thm@head/before}
+ {\AddToHookNext{para/begin}
+ {\let\Hy@tempa\@currentHref
+ \MakeLinkTarget*{#1}%
+ \global\let\@currentHref\Hy@tempa
+ }%
+ }%
+ }%
+ }%
}
\@ifundefined{hyper@nopatch@thm}{%
\AtBeginDocument{%
diff --git a/macros/latex/contrib/hyperref/xr-hyper.sty b/macros/latex/contrib/hyperref/xr-hyper.sty
index 4fe22f0e44..929f1d8cdd 100644
--- a/macros/latex/contrib/hyperref/xr-hyper.sty
+++ b/macros/latex/contrib/hyperref/xr-hyper.sty
@@ -57,7 +57,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{xr-hyper}
- [2023-10-27 v7.01d eXternal References (DPC)]
+ [2023-11-07 v7.01e eXternal References (DPC)]
\def\externaldocument{\@testopt\XR@cite{}}
\let\externalcitedocument\externaldocument
diff --git a/macros/latex/contrib/ipsum/README.md b/macros/latex/contrib/ipsum/README.md
new file mode 100644
index 0000000000..6d6958bcfc
--- /dev/null
+++ b/macros/latex/contrib/ipsum/README.md
@@ -0,0 +1,7 @@
+ipsum is a package to work with multilingual 'dummy texts'.
+----------------------------------------------------------------------------
+ipsum est un pakage pour afficher des paragraphes multilangues type "dummy".
+----------------------------------------------------------------------------
+Author : Cédric Pierquet
+email : cpierquet@outlook.fr
+Licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt \ No newline at end of file
diff --git a/macros/latex/contrib/ipsum/doc/ipsum-doc.pdf b/macros/latex/contrib/ipsum/doc/ipsum-doc.pdf
new file mode 100644
index 0000000000..6bfc05c3df
--- /dev/null
+++ b/macros/latex/contrib/ipsum/doc/ipsum-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/ipsum/doc/ipsum-doc.tex b/macros/latex/contrib/ipsum/doc/ipsum-doc.tex
new file mode 100644
index 0000000000..65baec2bce
--- /dev/null
+++ b/macros/latex/contrib/ipsum/doc/ipsum-doc.tex
@@ -0,0 +1,268 @@
+% !TeX TXS-program:compile = txs:///pdflatex
+
+\documentclass[11pt,a4paper]{ltxdoc}
+\usepackage{ipsum}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\usepackage{fontawesome5}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+%\rhead{\sffamily\small\affloetalab[Legende]}
+\lfoot{\sffamily\small [ipsum]}
+\cfoot{\sffamily\small - \thepage{} -}
+\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
+\usepackage{hologo}
+\providecommand\tikzlogo{Ti\textit{k}Z}
+\providecommand\TeXLive{\TeX{}Live\xspace}
+\providecommand\PSTricks{\textsf{PSTricks}\xspace}
+\let\pstricks\PSTricks
+\let\TikZ\tikzlogo
+
+\usepackage{hyperref}
+\urlstyle{same}
+\hypersetup{pdfborder=0 0 0}
+\usepackage[margin=2cm]{geometry}
+\setlength{\parindent}{0pt}
+\def\TPversion{0.1.0}
+\def\TPdate{07/11/2023}
+\usepackage{tcolorbox}
+\tcbuselibrary{skins,hooks}
+\usepackage{soul}
+\sethlcolor{lightgray!25}
+\NewDocumentCommand\MontreCode{ m }{%
+ \hl{\vphantom{\texttt{pf}}\texttt{#1}}%
+}
+\NewDocumentCommand\GenSample{ O{#2} m }{%
+ %\hfill\textbf{\textsf{LANG=#1}}\par\smallskip
+ \hrule\par\smallskip
+ \ipsum<Type=sent,Lang=#2>\par\smallskip
+ \hrule\par\smallskip
+ \ipsum<Type=sent,Lang=#2>[5-6]\par\smallskip
+ \hrule\par\smallskip
+ \ipsum<lang=#2>[2]\par\smallskip
+ \hrule\par\smallskip
+ \ipsum<lang=#2>[1-3]\par\smallskip
+ \hrule\par\smallskip
+ \ipsum<lang=#2>[6-7]\par\smallskip
+ \hrule\par\smallskip
+ \ipsum<Type=enum,Lang=#2>[2-4]\par\smallskip
+ \hrule\par\smallskip
+ \ipsum<Type=item,Lang=#2>[8-9]\par\smallskip
+ \hrule\par\smallskip
+}
+
+\begin{document}
+
+\pagestyle{fancy}
+
+\thispagestyle{empty}
+
+\begin{center}
+ \begin{minipage}{0.88\linewidth}
+ \begin{tcolorbox}[colframe=yellow,colback=yellow!15]
+ \begin{center}
+ \begin{tabular}{c}
+ {\Huge \texttt{ipsum}}\\
+ \\
+ {\LARGE Creating "Dummy Text"} \\
+ {\LARGE with multilingual support.} \\
+ \\
+ {\small \texttt{Version \TPversion{} -- \TPdate}}
+ \end{tabular}
+ \end{center}
+ \end{tcolorbox}
+\end{minipage}
+\end{center}
+
+\begin{center}
+ \begin{tabular}{c}
+ \texttt{Cédric Pierquet}\\
+ {\ttfamily c pierquet -- at -- outlook . fr}\\
+ \texttt{\url{https://github.com/cpierquet/ipsum}} \\
+ \\
+ \texttt{Thanks to \url{https://ipsum.one/} for the paragraphs, with free license !}
+\end{tabular}
+\end{center}
+
+\hrule
+
+\vfill
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5]
+\ipsum<Lang=EN>[6]
+\end{tcolorbox}
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5]
+\ipsum<Lang=LAT>[4]
+\end{tcolorbox}
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5]
+\ipsum<Lang=FR>[2]
+\end{tcolorbox}
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5]
+\ipsum<Type=enum,Lang=NL>[6-9]
+\end{tcolorbox}
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5]
+\ipsum<Type=item,Lang=ES>[1-3]
+\end{tcolorbox}
+
+\vfill~
+
+\pagebreak
+
+\phantomsection
+
+\hypertarget{matoc}{}
+
+\tableofcontents
+
+\vspace*{5mm}
+
+\hrule
+
+\vspace*{5mm}
+
+\section{Introduction}
+
+\subsection{Description}
+
+With this package you can create dummy text, in several languages.
+
+Use \cmd{\ipsum} to get some paragraphs/sentences/lists, with optional languages and optional numbers.
+
+Details can be found at \url{https://ipsum.one/}.
+
+\subsection{Loading}
+
+To load the package, simply use :
+
+\begin{quote}
+\begin{verbatim}
+\usepackage{blindtext}
+\end{verbatim}
+\end{quote}
+
+\vfill
+
+\subsection{History}
+
+\begin{quote}
+\begin{verbatim}
+0.1.0 : Initial version
+\end{verbatim}
+\end{quote}
+
+\pagebreak
+
+\section{The macros}
+
+\subsection{General usage}
+
+In order to print one or several paragraphs/sentences/lists, the command is :
+
+\begin{quote}
+\begin{verbatim}
+\ipsum<Lang=...,Type=...>[range]
+\end{verbatim}
+\end{quote}
+
+Available \textsf{Lang} are :
+
+\begin{multicols}{4}
+ \begin{itemize}
+ \item \texttt{LAT} : Latin (def.)
+ \item \texttt{EN~} : English
+ \item \texttt{FR~} : French
+ \item \texttt{DE~} : German
+ \item \texttt{ES~} : Spanish
+ \item \texttt{PT~} : Portuguese
+ \item \texttt{IT~} : Italian
+ \item \texttt{NL~} : Dutch
+ \end{itemize}
+\end{multicols}
+
+Available \textsf{Type} are :
+
+\begin{multicols}{2}
+ \begin{itemize}
+ \item \texttt{par~} : paragraphs (def.)
+ \item \texttt{sent} : sentences
+ \item \texttt{enum} : enumerated list
+ \item \texttt{item} : itemized list
+ \end{itemize}
+\end{multicols}
+
+The \textsf{range} can be given (by default it's \texttt{1}) :
+
+\begin{itemize}
+ \item by one number, between \texttt{1} and \texttt{7} ;
+ \item by two numbers, \texttt{a-b} (with $\mathtt{1 \leq a < b \leq 7}$ for paragraphs, and $\mathtt{1 \leq a < b \leq 9}$ for others).
+\end{itemize}
+
+\subsection{Samples}
+
+Each language is illustrated with :
+
+\begin{quote}
+\begin{verbatim}
+\ipsum<Type=sent,Lang=...> %the first sentence
+\ipsum<Type=sent,Lang=...>[5-6] %the 5/6th sentences
+\ipsum<Lang=...>[2] %the second paragraph
+\ipsum<Lang=...>[1-3] %the first three
+\ipsum<Lang=...>[6-7] %the last two
+\ipsum<Type=enum,Lang=...>[2-4] %enumlist with 2/3/4th sentences
+\ipsum<Type=item,Lang=...>[8-9] %itemist with last two sentences
+\end{verbatim}
+\end{quote}
+
+\pagebreak
+
+\subsubsection{Lang = Default}
+
+\GenSample[Default]{LAT}
+
+\pagebreak
+
+\subsubsection{Lang = EN}
+
+\GenSample{EN}
+
+\pagebreak
+
+\subsubsection{Lang = FR}
+
+\GenSample{FR}
+
+\pagebreak
+
+\subsubsection{Lang = DE}
+
+\GenSample{DE}
+
+\pagebreak
+
+\subsubsection{Lang = ES}
+
+\GenSample{ES}
+
+\pagebreak
+
+\subsubsection{Lang = PT}
+
+\GenSample{PT}
+
+\pagebreak
+
+\subsubsection{Lang = IT}
+
+\GenSample{IT}
+
+\pagebreak
+
+\subsubsection{Lang = NL}
+
+\GenSample{NL}
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/ipsum/tex/ipsum.sty b/macros/latex/contrib/ipsum/tex/ipsum.sty
new file mode 100644
index 0000000000..526f10a413
--- /dev/null
+++ b/macros/latex/contrib/ipsum/tex/ipsum.sty
@@ -0,0 +1,741 @@
+% Author : C. Pierquet
+% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+% Source : https://ipsum.one/
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{ipsum}[2023/11/07 0.1.0 Multilanguage simply dummy texts]
+
+%====HISTORIQUE
+% v 0.1.0 Initial version
+
+%====PACKAGES
+\RequirePackage{xstring}
+\RequirePackage{xintexpr}
+\RequirePackage{simplekv}
+
+%====KEYS
+\defKV[ipsumdummy]{%
+ Lang=\def\ipsumlg{#1},%
+ Type=\def\ipsumtype{#1}
+}
+\setKVdefault[ipsumdummy]{%
+ Lang=LAT,%
+ Type=par
+}
+
+%====PARAGRAPHS
+%==[LAT]
+\xdef\ipsum@par@LAT@A{%
+Nam quis enim. Quisque ornare dui a tortor. Fusce consequat lacus pellentesque metus. Duis euismod. Duis non quam. Maecenas vitae dolor in ipsum auctor vehicula. Vivamus nec nibh eget wisi varius pulvinar. Cras a lacus. Etiam et massa. Donec in nisl sit amet dui imperdiet vestibulum. Duis porttitor nibh id eros.\par
+}
+\xdef\ipsum@par@LAT@B{%
+Fusce adipiscing justo nec ante. Nullam in enim. Pellentesque felis orci, sagittis ac, malesuada et, facilisis in, ligula. Nunc non magna sit amet mi aliquam dictum. In mi. Curabitur sollicitudin justo sed quam. Aenean imperdiet. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae Donec lacinia nonummy lectus. Proin vel urna. Fusce sit amet orci ac magna iaculis pharetra. Duis sagittis massa in tellus. Aenean vel velit vel felis consectetuer pharetra.\par
+}
+\xdef\ipsum@par@LAT@C{%
+Morbi malesuada hendrerit dui. Nunc mauris leo, dapibus sit amet, vestibulum et, commodo id, est. Pellentesque purus. Pellentesque tristique, nunc ac pulvinar adipiscing, justo eros consequat lectus, sit amet posuere lectus neque vel augue. Cras consectetuer libero ac eros. Ut eget massa. Fusce sit amet enim eleifend sem dictum auctor. In eget risus luctus wisi convallis pulvinar. Vivamus sapien risus, tempor in, viverra in, aliquet pellentesque, eros. Aliquam euismod libero a sem.\par
+}
+\xdef\ipsum@par@LAT@D{%
+Fusce mollis dui eu leo. Sed sapien augue, porta at, posuere ut, ultrices molestie, est. Vivamus quis pede nec erat placerat tincidunt. Aenean odio dui, facilisis non, vehicula et, bibendum a, libero. Etiam leo turpis, venenatis eleifend, nonummy sit amet, aliquam non, mi. Maecenas eget mi. Sed nec diam. Integer orci tellus, pellentesque nec, bibendum quis, sodales ut, nibh. Duis laoreet aliquet orci. Curabitur sit amet sem sit amet nibh fermentum faucibus. Donec adipiscing, ipsum id fringilla convallis, elit massa cursus augue, at lobortis massa augue nec ligula. Proin ac lacus.\par
+}
+\xdef\ipsum@par@LAT@E{%
+Donec vel augue. Morbi a turpis sed libero consequat porta. Quisque lacinia consequat odio. Sed vehicula sollicitudin purus. Vestibulum eget est. In hac habitasse platea dictumst. Sed blandit, tortor a auctor imperdiet, wisi nibh ornare leo, ac dictum nibh enim eu orci. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam tincidunt ullamcorper justo. Etiam accumsan lacus nec ante. Ut dictum luctus mauris. Ut metus. Maecenas gravida. Proin iaculis. Integer convallis, justo iaculis ullamcorper sollicitudin, lectus neque tincidunt mi, at condimentum sem quam vel diam. Aenean sit amet purus.\par
+}
+\xdef\ipsum@par@LAT@F{%
+Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae Aliquam interdum porttitor tortor. Donec ultricies justo eget sapien. Proin ac est. Aliquam erat volutpat. In tempus scelerisque ligula. Morbi scelerisque urna. Duis ac nisl. Donec sed leo. Fusce posuere orci mollis nunc. Sed arcu enim, pharetra nec, aliquam eu, consectetuer sit amet, eros. Sed id enim. Etiam mattis est at elit. Pellentesque est risus, pellentesque nec, dignissim vitae, egestas vitae, sapien. Maecenas et eros non libero iaculis facilisis. Mauris porttitor tempor justo. Sed sollicitudin neque nec libero.\par
+}
+\xdef\ipsum@par@LAT@G{%
+Morbi tincidunt posuere arcu. Cras venenatis est vitae dolor. Vivamus scelerisque semper mi. Donec ipsum arcu, consequat scelerisque, viverra id, dictum at, metus. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut pede sem, tempus ut, porttitor bibendum, molestie eu, elit. Suspendisse potenti. Sed id lectus sit amet purus faucibus vehicula. Praesent sed sem non dui pharetra interdum. Nam viverra ultrices magna.\par
+}
+%==[FR]
+\xdef\ipsum@par@FR@A{%
+Sans qu’elle daignât le dire à personne, un accès de fièvre d’un de ses fils la mettait presque dans le même état que si l’enfant eût été mort. Un éclat de rire grossier, un haussement d’épaules, accompagné de quelque maxime triviale sur la folie des femmes, avaient constamment accueilli les confidences de ce genre de chagrins, que le besoin d’épanchement l’avait portée à faire à son mari, dans les premières années de leur mariage. Ces sortes de plaisanteries, quand surtout elles portaient sur les maladies de ses enfants, retournaient le poignard dans le cœur de Mme de Rênal. Voilà ce qu’elle trouva au lieu des flatteries empressées et mielleuses du couvent jésuitique où elle avait passé sa jeunesse. Son éducation fut faite par la douleur. Trop fière pour parler de ce genre de chagrins, même à son amie Mme Derville, elle se figura que tous les hommes étaient comme son mari, M. Valenod et le sous-préfet Charcot de Maugiron. La grossièreté, et la plus brutale insensibilité à tout ce qui n’était pas intérêt d’argent, de préséance ou de croix ; la haine aveugle pour tout raisonnement qui les contrariait, lui parurent des choses naturelles à ce sexe, comme porter des bottes et un chapeau de feutre.\par
+}
+\xdef\ipsum@par@FR@B{%
+On rit beaucoup, on admira ; tel est l’esprit à l’usage de Verrières. Julien était déjà debout, tout le monde se leva malgré le décorum ; tel est l’empire du génie. Mme Valenod le retint encore un quart d’heure ; il fallait bien qu’il entendît les enfants réciter leur catéchisme ; ils firent les plus drôles de confusions, dont lui seul s’aperçut. Il n’eut garde de les relever. Quelle ignorance des premiers principes de la religion! pensait-il. Il saluait enfin et croyait pouvoir s’échapper ; mais il fallut essuyer une fable de La Fontaine.\par
+}
+\xdef\ipsum@par@FR@C{%
+Mais la demoiselle du comptoir avait remarqué la charmante figure de ce jeune bourgeois de campagne, qui, arrêté à trois pas du poêle, et son petit paquet sous le bras, considérait le buste du roi, en beau plâtre blanc. Cette demoiselle, grande Franc-Comtoise, fort bien faite, et mise comme il le faut pour faire valoir un café, avait déjà dit deux fois, d’une petite voix qui cherchait à n’être entendue que de Julien : Monsieur! Monsieur! Julien rencontra de grands yeux bleus fort tendres, et vit que c’était à lui qu’on parlait.\par
+}
+\xdef\ipsum@par@FR@D{%
+Il est vrai que cet arrangement a été critiqué par les bonnes têtes de l’endroit. Une fois, c’était un jour de dimanche, il y a quatre ans de cela, M. de Rênal, revenant de l’église en costume de maire, vit de loin le vieux Sorel, entouré de ses trois fils, sourire en le regardant. Ce sourire a porté un jour fatal dans l’âme de M. le maire, il pense depuis lors qu’il eût pu obtenir l’échange à meilleur marché.\par
+}
+\xdef\ipsum@par@FR@E{%
+Il vit de loin la croix de fer doré sur la porte ; il approcha lentement ; ses jambes semblaient se dérober sous lui. Voilà donc cet enfer sur la terre, dont je ne pourrai sortir! Enfin il se décida à sonner. Le bruit de la cloche retentit comme dans un lieu solitaire. Au bout de dix minutes, un homme pâle, vêtu de noir, vint lui ouvrir. Julien le regarda et aussitôt baissa les yeux. Ce portier avait une physionomie singulière. La pupille saillante et verte de ses yeux s’arrondissait comme celle d’un chat ; les contours immobiles de ses paupières annonçaient l’impossibilité de toute sympathie ; ses lèvres minces se développaient en demi-cercle sur des dents qui avançaient. Cependant cette physionomie ne montrait pas le crime, mais plutôt cette insensibilité parfaite qui inspire bien plus de terreur à la jeunesse. Le seul sentiment que le regard rapide de Julien put deviner sur cette longue figure dévote fut un mépris profond pour tout ce dont on voudrait lui parler, et qui ne serait pas l’intérêt du ciel.\par
+}
+\xdef\ipsum@par@FR@F{%
+Ma femme a réellement beaucoup de tête ! se disait, le lendemain à six heures du matin, le maire de Verrières, en descendant à la scie du père Sorel. Quoi que je lui aie dit, pour conserver la supériorité qui m’appartient, je n’avais pas songé que si je ne prends pas ce petit abbé Sorel, qui, dit-on, sait le latin comme un ange, le directeur du dépôt, cette âme sans repos, pourrait bien avoir la même idée que moi et me l’enlever. Avec quel ton de suffisance il parlerait du précepteur de ses enfants !... Ce précepteur, une fois à moi, portera-t-il la soutane ?\par
+}
+\xdef\ipsum@par@FR@G{%
+M. de Rênal était absorbé dans ce doute, lorsqu’il vit de loin un paysan, homme de près de six pieds, qui, dès le petit jour, semblait fort occupé à mesurer des pièces de bois déposées le long du Doubs, sur le chemin de halage. Le paysan n’eut pas l’air fort satisfait de voir approcher M. le maire ; car ces pièces de bois obstruaient le chemin, et étaient déposées là en contravention.\par
+}
+%==[EN]
+\xdef\ipsum@par@EN@A{%
+On Wednesday night the weather was very bad, my balance was strangely variable, and I was obliged to lean with my knees and elbows against the sideboard, to prevent myself from falling. Portmanteaus and bags came in and out of my cabin; an unusual hubbub reigned in the adjoining saloon, in which two or three hundred packages were making expeditions from one end to the other, knocking the tables and chairs with loud crashes; doors slammed, the boards creaked, the partitions made that groaning noise peculiar to pine wood; bottles and glasses jingled together in their racks, and a cataract of plates and dishes rolled about on the pantry floors.\par
+}
+\xdef\ipsum@par@EN@B{%
+I said that the length of the 'Great Eastern' exceeded two hectometres. For the benefit of those partial to comparisons, I will add that it is a third longer than the 'Pont des Arts;' in reality this steam-ship measures 673 feet at the load water-line, between the perpendiculars; the upper deck is 680 feet from stem to stern; that is to say, its length is double that of the largest transatlantic steamers; its width amidships is about 71 feet, and behind the paddles about 107 feet.\par
+}
+\xdef\ipsum@par@EN@C{%
+After having left the Doctor, I spent the rest of the day with Fabian; we had gone to the stern, which Pitferge called 'walking in the country.' There alone, and leaning over the taffrail, we surveyed the great expanse of water, while around us rose the briny vapours distilled from the spray; small rainbows, formed by the refraction of the sun's rays, spanned the foaming waves. Below us, at a distance of forty feet, the screw was beating the water with a tremendous force, making its copper gleam in the midst of what appeared to be a vast conglomeration of liquefied emeralds, the fleecy track extending as far as the eye could reach, mingled in a milky path the foam from the screw, and the paddle engines, whilst the white and black fringed plumage of the sea-gulls flying above, cast rapid shadows over the sea.\par
+}
+\xdef\ipsum@par@EN@D{%
+The church was the great saloon, formed by the upper-deck at the stern, the exterior of which, from its width and regularity of structure, reminded one very much of the hotel of the Ministère des Finances, in the Rue de Rivoli. I entered. Numbers of the faithful were already in their places.\par
+}
+\xdef\ipsum@par@EN@E{%
+The church was the great saloon, formed by the upper-deck at the stern, the exterior of which, from its width and regularity of structure, reminded one very much of the hotel of the Ministère des Finances, in the Rue de Rivoli. I entered. Numbers of the faithful were already in their places.\par
+}
+\xdef\ipsum@par@EN@F{%
+Everything was finished by evening; not a trace of mud was visible on the well-swept boulevards, for an army of sweepers had been at work. There was a full cargo; provisions, goods, and coal filled the stewards' room, the store, and the coal houses. However, the steamer had not yet sunk to the load water-line, and did not draw the necessary thirty-three feet. It was an inconvenient position for the wheels, for the paddles not being sufficiently immersed, caused a great diminution in the speed.\par
+}
+\xdef\ipsum@par@EN@G{%
+Thus the reason for rearranging the ship to this purpose, and the consequent necessity of filling up the tanks and replacing the boilers, of enlarging the saloons in which so many people were to live during the voyage, and of building extra dining saloons, finally the arrangement of a thousand berths in the sides of the gigantic hull.\par
+}
+%==[DE]
+\xdef\ipsum@par@DE@A{%
+Ingenieur Und Dr.Krokowskis Lächeln zog sich gleichsam zurück, bü te an Kraft und Herzlichkeit für den Augenblick etwas ein. Das ist wacker.Und Sie werden hier also keinerlei ärztliche Behandlung in Anspruch nehmen, weder in körperlicher noch in psychischer Hinsicht Nein, ich danke tausendmal sagte Hans Castorp und wäre fast einen Schritt zurückgewichen.\par
+}
+\xdef\ipsum@par@DE@B{%
+Das mit der Seelenzergliederung war zu stark, das hätte nicht kommen dürfen.Au erdem bin ich doch auch wohl ein bi chen abgespannt von der Reise.Leidest du auch so an kalten Fü en Gleichzeitig hat man dann so ein hei es Gesicht, das ist unangenehm.\par
+}
+\xdef\ipsum@par@DE@C{%
+Raum, der sich drehend und fliehend zwischen ihn und seine Pflanzstätte wälzt, bewährt Kräfte, die man gewöhnlich der Zeit vorbehalten glaubt von Stunde zu Stunde stellt er innere Veränderungen her, die den von ihr bewirkten sehr ähnlich sind, aber sie in gewisser Weise übertreffen.\par
+}
+\xdef\ipsum@par@DE@D{%
+August, August sagte Hans Castorp. Aber mich friert Mich friert abscheulich, nämlich am Körper, denn im Gesicht bin ich auffallend echauffiert, da, fühle doch mal, wie ich brenne Diese Zumutung, man solle sein Gesicht befühlen, pa te ganz und gar nicht zu Hans Castorps Natur und berührte ihn selber peinlich.\par
+}
+\xdef\ipsum@par@DE@E{%
+Gleich wann Na, in drei Wochen. Ach so, du fährst wohl schon wieder nach Hause in deinen Gedanken, antwortete Joachim. Nun, warte nur, du kommst ja eben erst an.Drei Wochen sind freilich fast nichts für uns hier oben, aber für dich, der du zu Besuch hier bist und überhaupt nur drei Wochen bleiben sollst, für dich ist es doch eine Menge Zeit.\par
+}
+\xdef\ipsum@par@DE@F{%
+Leichen Ach so Na, höre mal rief Hans Castorp.Und plötzlich geriet er ins Lachen, in ein heftiges, unbezwingliches Lachen, das seine Brust erschütterte und sein vom kühlen Wind etwas steifes Gesicht zu einer leise schmerzenden Grimasse verzog.\par
+}
+\xdef\ipsum@par@DE@G{%
+Gletscher und Firnen und die gewaltigen Bergesriesen Diese Dinger sind doch nicht sehr hoch, wie mir scheint. Doch, sie sind hoch, antwortete Joachim. Du siehst die Baumgrenze fast überall, sie markiert sich ja auffallend scharf, die Fichten hören auf, und damit hört alles auf, aus ist es, Felsen, wie du bemerkst.\par
+}
+%==[IT]
+\xdef\ipsum@par@IT@A{%
+Quinci non passa mai anima buona e però, se Caron di te si lagna, ben puoi sapere omai che l suo dir suona.Finito questo, la buia campagna tremò sì forte, che de lo spavento la mente di sudore ancor mi bagna.La terra lagrimosa diede vento, che balenò una luce vermiglia la qual mi vinse ciascun sentimento e caddi come l uom cui sonno piglia.\par
+}
+\xdef\ipsum@par@IT@B{%
+Così discesi del cerchio primaio giù nel secondo, che men loco cinghia e tanto più dolor, che punge a guaio.Stavvi Minòs orribilmente, e ringhia essamina le colpe ne l intrata giudica e manda secondo ch avvinghia.Dico che quando l anima mal nata li vien dinanzi, tutta si confessa e quel conoscitor de le peccata vede qual loco d inferno è da essa cignesi con la coda tante volte quantunque gradi vuol che giù sia messa.\par
+}
+\xdef\ipsum@par@IT@C{%
+Quando vidi costui nel gran diserto, Miserere di me, gridai a lui, qual che tu sii, od ombra od omo certo.Rispuosemi Non omo, omo già fui, e li parenti miei furon lombardi, mantoani per patrïa ambedui.Nacqui sub Iulio, ancor che fosse tardi, e vissi a Roma sotto l buono Augusto nel tempo de li dèi falsi e bugiardi.\par
+}
+\xdef\ipsum@par@IT@D{%
+Quinci fuor quete le lanose gote al nocchier de la livida palude, che ntorno a li occhi avea di fiamme rote.Ma quell anime, ch eran lasse e nude, cangiar colore e dibattero i denti, ratto che nteser le parole crude.Bestemmiavano Dio e lor parenti, l umana spezie e l loco e l tempo e l seme di lor semenza e di lor nascimenti.\par
+}
+\xdef\ipsum@par@IT@E{%
+Quali fioretti dal notturno gelo chinati e chiusi, poi che l sol li mbianca, si drizzan tutti aperti in loro stelo, tal mi fec io di mia virtude stanca, e tanto buono ardire al cor mi corse, ch i cominciai come persona franca Oh pietosa colei che mi soccorse e te cortese ch ubidisti tosto a le vere parole che ti porse Tu m hai con disiderio il cor disposto sì al venir con le parole tue, ch i son tornato nel primo proposto.\par
+}
+\xdef\ipsum@par@IT@F{%
+Questi parea che contra me venisse con la test alta e con rabbiosa fame, sì che parea che l aere ne tremesse.Ed una lupa, che di tutte brame sembiava carca ne la sua magrezza, e molte genti fé già viver grame, questa mi porse tanto di gravezza con la paura ch uscia di sua vista, ch io perdei la speranza de l altezza.\par
+}
+\xdef\ipsum@par@IT@G{%
+GIntesi ch a così fatto tormento enno dannati i peccator carnali, che la ragion sommettono al talento.E come li stornei ne portan l ali nel freddo tempo, a schiera larga e piena, così quel fiato li spiriti mali di qua, di là, di giù, di sù li mena nulla speranza li conforta mai, non che di posa, ma di minor pena.\par
+}
+%==[SP]
+\xdef\ipsum@par@ES@A{%
+Vicente López, hemos contemplado con satisfacción en la sala de sus ilustres descendientes, fue preciso que todo Madrid se transformase que la desamortización edificara una ciudad nueva sobre los escombros de los conventos que el Marqués de Pontejos adecentase este lugarón que las reformas arancelarias del 49 y del 68, pusieran patas arriba todo el comercio madrileño que el grande ingenio de Salamanca idease los primeros ferrocarriles que Madrid se colocase, por arte del vapor, a cuarenta horas de París, y por fin, que hubiera muchas guerras y revoluciones y grandes trastornos en la riqueza individual.\par
+}
+\xdef\ipsum@par@ES@B{%
+D.Baldomero no lo decía así pero sus vagas ideas sobre el asunto se condensaban en una expresión de moda y muy socorrida el mundo marcha.Felizmente para Juanito, estaba allí su madre, en quien se equilibraban maravillosamente el corazón y la inteligencia.\par
+}
+\xdef\ipsum@par@ES@C{%
+Envolverse en él es como vestirse con un cuadro.La industria moderna no inventará nada que iguale a la ingenua poesía del mantón, salpicado de flores, flexible, pegadizo y mate, con aquel fleco que tiene algo de los enredos del sueño y aquella brillantez de color que iluminaba las muchedumbres en los tiempos en que su uso era general.\par
+}
+\xdef\ipsum@par@ES@D{%
+Juanito Santa Cruz y Miquis llevaron un día una sartén no sé si a la clase de Novar o a la de Uribe, que explicaba Metafísica y frieron un par de huevos.Otras muchas tonterías de este jaez cuenta Villalonga, las cuales no copio por no alargar este relato.\par
+}
+\xdef\ipsum@par@ES@E{%
+Porque Madrid no tenía de metrópoli más que el nombre y la vanidad ridícula.Era un payo con casaca de gentil-hombre y la camisa desgarrada y sucia.Por fin el paleto se disponía a ser señor de verdad.Isabel Cordero, que se anticipaba a su época, presintió la traída de aguas del Lozoya, en aquellos veranos ardorosos en que el Ayuntamiento refrescaba y alimentaba las fuentes del Berro y de la Teja con cubas de agua sacada de los pozos en aquellos tiempos en que los portales eran sentinas y en que los vecinos iban de un cuarto a otro con el pucherito en la mano, pidiendo por favor un poco de agua para afeitarse.\par
+}
+\xdef\ipsum@par@ES@F{%
+Dígase lo que se quiera, hija, aquella educación no era buena.Hoy no se puede criar a los hijos de esa manera.Yo qué quieres que te diga, creo que en lo esencial Juanito no ha de faltarnos.Es de casta honrada, tiene la formalidad en la masa de la sangre.\par
+}
+\xdef\ipsum@par@ES@G{%
+Pedro Mata opinaba del propio modo, aplicando a la sociedad y a la política el sistema de la medicina expectante.La naturaleza se cura sola no hay más que dejarla. Las fuerzas reparatrices lo hacen todo, ayudadas del aire.El hombre se educa sólo en virtud de las suscepciones constantes que determina en su espíritu la conciencia, ayudada del ambiente social.\par
+}
+%==[PT]
+\xdef\ipsum@par@PT@A{%
+Não resuscito Morto tenho eu vivido a vida toda.Trazeis-me rosas d onde as heis trazido, Boa velhinha e minha boa amiga Rosas no inverno permitti que o diga, Sois feiticeira d onde as heis colhido Na primavera de meus annos, ólho, Mas vejo abrolhos e não vejo flôres E vós colhêl-as, como as eu não colho.\par
+}
+\xdef\ipsum@par@PT@B{%
+Então, se por encanto Fallando em ti, mas só, Todo banhado em pranto Me visses, tinhas dó.Tinhas.A piedade É filha da mulher, Que sempre quiz metade D uma afflicção qualquer.Havias ao teu rosto De me apertar a mim, D encher, fartar de gosto, Todo este abysmo sim.\par
+}
+\xdef\ipsum@par@PT@C{%
+Abraços, abraços Que mal nos farão Se Deus me deu braços, Foi essa a razão.Um dia que o alto Me vinha abraçar, Fiquei-lhe d um salto Suspensa no ar.Amores, amores.Deixál-os dizer Se Deus me deu flôres, Foi para as colher.Eu tenho um moreno, Tenho um de outra côr, Tenho um mais pequeno, Tenho outro maior.\par
+}
+\xdef\ipsum@par@PT@D{%
+Astros fio-me em vós, e Deus permitta Que os infelizes sempre em vós se fiem.Intima voz do fundo, bem do fundo D alma me diz e as lagrimas me saltam Vês os milhões de soes que o espaço esmaltam Pisa a terra a teus pés, inda ha mais mundo.Ha depois d esta vida inda outra vida.\par
+}
+\xdef\ipsum@par@PT@E{%
+Bemdito seja Deus Além n aquelle serro Parece que raspou Com uma pá de ferro A terra que encontrou.Nem um só pé de trigo És lá capaz de vêr.Já eu disse commigo Como póde isto ser As arvores arranca O vento muito bem Serve-lhe de alavanca A rama que ellas tem.\par
+}
+\xdef\ipsum@par@PT@F{%
+Foi um diluvio d agua E o furacão, que fez, Emilia até dá mágoa Tantos estragos vês Esta infeliz víuva, Foi-lhe o telhado ao ar Depois, já nem da chuva Tinha onde se abrigar.De mais a mais sósinha, Sem ter nenhum dos seus Aqui ao pé ceguinha.\par
+}
+\xdef\ipsum@par@PT@G{%
+Não cabe Em nossa pobre lingua O que a alma sente, á mingua De voz, que só Deus sabe.Um dia, não sei que eu tinha...Uma tristeza tamanha E lembra-me ir á montanha, Que temos aqui vizinha, Onde em tempo me entretinha Horas e horas sósinha Quando ainda se não estranha Que n uma teia de aranha Se prenda uma innocentinha, Ou atraz d uma avesinha Se cance a vêr se a apanha.\par
+}
+%==[NL]
+\xdef\ipsum@par@NL@A{%
+Leidschen makker bij mij gelogeerd, met wien ik te Zomerzorg eten zou, om vervolgens over Velzerend naar Velzen te wandelen, waar wij den nacht zouden doorbrengen om s morgens naar de Breezaap te gaan en aldaar wat te botaniseeren, waarvan wij beide groote liefhebbers zijn.
+}
+\xdef\ipsum@par@NL@B{%
+Rampen, die benauwen, kwellen en schokken, en die niet zelden een grooten en hevigen invloed hebben op de vorming van het karakter.De eerste en grootste hebben wij al gehad.Het is, met verlof van Pestalozzi en Prinsen, de school.Dat is een kanker een dagelijks weerkeerend verdriet.
+}
+\xdef\ipsum@par@NL@C{%
+Welnu, er zijn er meer dan men denkt.Het grootworden, hoe schoon en voortreffelijk een uitvinding ook, is de oorzaak veler smarten.Want vooreerst, men steekt lange bloote armen uit de mouwen, groote en den kous uit de broek.Daarbij schaamt men zich dan gewoonlijk dat men nog rijglaarsjes of schoenen met gespen draagt, omdat er altijd eenige voorlijke knapen zijn, die al halve-laarzen hebben, en vroegtijdige juffertjes, die zich op schoenen met lange linten verheffen.
+}
+\xdef\ipsum@par@NL@D{%
+Hebje nog altijd dat strooien soortje zei hij, de punt van degene, die hij genomen had, met het ongeloovigste gezicht van de wereld afbijtende, en toen zijn vroeger onderwerp weer opnemende, daar hij nog niet genoeg van had Jongens, ik vind dat het zoo mal staat als iemand niet rooken kan.
+}
+\xdef\ipsum@par@NL@E{%
+Spreek mij niet van groote-menschen-jammeren Zij halen niet bij deze. Geen koopman die op springen staat ziet met meer angst den dag tegemoet waarop hij zal worden omvergegooid, 11 dan een blijde jongen of vroolijk meisje den dag, waarop men scheiden zal van den dubbelen tand Wij zijn aan de physieke rampen.
+}
+\xdef\ipsum@par@NL@F{%
+Meergemelde natuuronderzoeker heeft even de Dreef verlaten, om in de verrukking van deze vreemdelingen te deelen, maar gaat nu door een allerliefst laantje, waarin de ochtendzon allergeestigst door t hoog geboomte speelt, op de logementen af.
+}
+\xdef\ipsum@par@NL@G{%
+Malle dingen Anders een goed fatsoen.Ik hou niet van die ronde boorden. Boerhave en de nederige inwoner van het malle, kleine stadje waren er mooi mee hij verbeeldde t niet gezien te hebben. Kanje nog al niet rooken, Hildebrand Ik vloog naar den portecigares en bood hem dien aan.
+}
+
+%====SENTENCES
+%==[LAT]
+\xdef\ipsum@sentence@LAT@A{quam sollicitudin a hendrerit eget pretium ut}
+\xdef\ipsum@sentence@LAT@B{orci aliquam erat elit pharetra nec aliquet}
+\xdef\ipsum@sentence@LAT@C{porta sapien curabitur sit amet libero eget}
+\xdef\ipsum@sentence@LAT@D{auctor at ultrices eu sagittis ut purus}
+\xdef\ipsum@sentence@LAT@E{erat volutpat curabitur ullamcorper est in mauris}
+\xdef\ipsum@sentence@LAT@F{arcu turpis ac sem aliquam aliquet dapibus}
+\xdef\ipsum@sentence@LAT@G{neque ac ipsum nunc fermentum massa at}
+\xdef\ipsum@sentence@LAT@H{sed massa nunc euismod mauris luctus adipiscing}
+\xdef\ipsum@sentence@LAT@I{nulla velit vel lectus cras dapibus mauris}
+%==[FR]
+\xdef\ipsum@sentence@FR@A{Sa réponse fut parfaite, et surtout longue comme un mandement ; elle laissait}
+\xdef\ipsum@sentence@FR@B{Elle est pourtant bien jolie, cette main ! quel charme ! quelle noblesse}
+\xdef\ipsum@sentence@FR@C{Bientôt, il ne fut plus question dans Verrières que de voir qui l’emporterait}
+\xdef\ipsum@sentence@FR@D{Le soleil est fort chaud dans ces montagnes ; lorsqu’il brille d’aplomb}
+\xdef\ipsum@sentence@FR@E{Esclaves du temps de la domination espagnole, ils conservent encore ce}
+\xdef\ipsum@sentence@FR@F{Tout occupés à suivre exactement la marque noire tracée sur la pièce}
+\xdef\ipsum@sentence@FR@G{Le lendemain, dès cinq heures, avant que Mme de Rênal fût visible}
+\xdef\ipsum@sentence@FR@H{Des flots de fumée de tabac, s’élançant de la bouche de tous}
+\xdef\ipsum@sentence@FR@I{Mme de Rênal, se promenant avec M Valenod et le sous-préfet}
+%==[EN]
+\xdef\ipsum@sentence@EN@A{I saw also piles of Bibles, which were to be distributed in the church}
+\xdef\ipsum@sentence@EN@B{I saw an object moving for several moments at the bows, but it turned out}
+\xdef\ipsum@sentence@EN@C{I returned by the boulevards on the starboard side, avoiding contact with}
+\xdef\ipsum@sentence@EN@D{Everything was finished by evening; not a trace of mud was visible on the}
+\xdef\ipsum@sentence@EN@E{A black mire that British mud which is so rarely absent from the pavement}
+\xdef\ipsum@sentence@EN@F{What were we against the husband, the master? Nothing}
+\xdef\ipsum@sentence@EN@G{I, following the general example, staked my dollar, and fate allotted me}
+\xdef\ipsum@sentence@EN@H{Numerous vessels, brigs and schooners, were awaiting the tide; steamers}
+\xdef\ipsum@sentence@EN@I{Beside the Great Eastern, these three-mast ships looked like barges; their}
+%==[DE]
+\xdef\ipsum@sentence@DE@A{ersten Stockwerk blieb Hans Castorp plötzlich stehen festgebannt}
+\xdef\ipsum@sentence@DE@B{erdem sei sie kDEschsüchtig wie übrigens die meisten}
+\xdef\ipsum@sentence@DE@C{siehst die Baumgrenze fast überall sie markiert sich ja auffallend}
+\xdef\ipsum@sentence@DE@D{Verlobter war bei ihr englischer Marineoffizier aber er benahm}
+\xdef\ipsum@sentence@DE@E{Joachim hatte das Deckenlicht eingeschaltet und in seiner zitternden}
+\xdef\ipsum@sentence@DE@F{Schwebend zwischen ihnen und dem Unbekannten fragte}
+\xdef\ipsum@sentence@DE@G{hielt an einer kleinen Station es war Davos Dorf wie Hans Castorp}
+\xdef\ipsum@sentence@DE@H{ungefähr fünfunddrei ig Jahre alt breitschultrig fett bedeutend}
+\xdef\ipsum@sentence@DE@I{spielt oder um jedes Präsens geflissentlich zu vermeiden}
+%==[ES]
+\xdef\ipsum@sentence@ES@A{Juanito Santa Cruz y Miquis llevaron un día una sartén}
+\xdef\ipsum@sentence@ES@B{sublime es el más discreto y las bocas más elocuentes aquellas}
+\xdef\ipsum@sentence@ES@C{innovador fue Senquá del cual puede decirse que representaba}
+\xdef\ipsum@sentence@ES@D{Fedro y Cicerón no se hubieran incomodado si estuvieran oyendo}
+\xdef\ipsum@sentence@ES@E{verle uníase el temor de que le sorbieran aquellos gabachos}
+\xdef\ipsum@sentence@ES@F{compensar las pérdidas de la quemazón urgía plantear}
+\xdef\ipsum@sentence@ES@G{Eulalia Muñoz era muy vanidosa y decía que no había}
+\xdef\ipsum@sentence@ES@H{auxiliar eficacísimo de Casarredonda en sus valiosas contratas}
+\xdef\ipsum@sentence@ES@I{Baldomero no lo decía así pero sus vagas ideas sobre el asunto}
+%==[IT]
+\xdef\ipsum@sentence@IT@A{quando tu sarai nel dolce mondo priegoti ch a la mente altrui}
+\xdef\ipsum@sentence@IT@B{Così andammo infino a la lumera parlando cose che l tacere}
+\xdef\ipsum@sentence@IT@C{Semiramìs di cui si legge che succedette a Nino e fu sua sposa}
+\xdef\ipsum@sentence@IT@D{Allor fu la paura un poco queta che nel lago del cor m era durata}
+\xdef\ipsum@sentence@IT@E{vizio di lussuria fu sì rotta che libito fé licito in sua legge}
+\xdef\ipsum@sentence@IT@F{altra è colei che s ancise amorosa e ruppe fede al cener}
+\xdef\ipsum@sentence@IT@G{Disse Beatrice loda di Dio vera ché non soccorri}
+\xdef\ipsum@sentence@IT@H{conoscer la prima radice del nostro amor tu hai cotanto affetto}
+\xdef\ipsum@sentence@IT@I{Tutti lo miran tutti onor li fanno quivi vid ïo Socrate e PITone}
+%==[PT]
+\xdef\ipsum@sentence@PT@A{espaço immenso Se amada estrella olhar piedoso envia}
+\xdef\ipsum@sentence@PT@B{Dorme dorme Vergontea de marfim Mas dize o espelho a imagem}
+\xdef\ipsum@sentence@PT@C{Está a porta aberta E vejo alumiada A parte descoberta}
+\xdef\ipsum@sentence@PT@D{ainda o pranto corria E o cabello me batia No rosto que me doía}
+\xdef\ipsum@sentence@PT@E{quando abraço e beijo O travesseiro e assim Acórdo}
+\xdef\ipsum@sentence@PT@F{Girar talvez Em quanto a minha sombra meus amores}
+\xdef\ipsum@sentence@PT@G{tempo simplesmente A flôr que vai nascendo e mais valia Seres}
+\xdef\ipsum@sentence@PT@H{olhos só elles valem Duas estrellas bem vês Pois vozes}
+\xdef\ipsum@sentence@PT@I{Enfeitiçaes que a formosura crêde Não vem da face avelludada}
+%==[NL]
+\xdef\ipsum@sentence@NL@A{Hertebaan vertoonen zich hier en daar een paar jonge dames}
+\xdef\ipsum@sentence@NL@B{zijner majesteit onmiddellijke 15 tegenwoordigheid}
+\xdef\ipsum@sentence@NL@C{morgen tweemaal op t bord zijt geschreven eens omdat}
+\xdef\ipsum@sentence@NL@D{grooten schreeuw gaaft gij uwe vreugde over het laatste artikel}
+\xdef\ipsum@sentence@NL@E{halsboord had 23 het door de warmte het was zeer warm weder}
+\xdef\ipsum@sentence@NL@F{konden hoe zouden zij zich op den grappenmaker wreken}
+\xdef\ipsum@sentence@NL@G{gewoonlijk hoogrood als hij binnen moet komen om aan oom en tante}
+\xdef\ipsum@sentence@NL@H{species rangschikt en men tevens achtslaat op de vreemde vogelen}
+\xdef\ipsum@sentence@NL@I{Waagdet gij nog eens een oude anecdote die u veel genoegen verschaft}
+
+%====COMMANDS
+\NewDocumentCommand\ipsum{ D<>{} O{1} }{%
+ \useKVdefault[ipsumdummy]%
+ \setKV[ipsumdummy]{#1}%
+ %RANGE
+ \IfSubStr{#2}{-}%
+ {%
+ \StrCut{#2}{-}{\ipsumrangegeb}{\ipsumrangeend}%
+ \xintifboolexpr{\ipsumrangegeb < 1}{\xdef\ipsumrangegeb{1}}{}%
+ \IfEq{\ipsumtype}{par}%
+ {%
+ \xintifboolexpr{\ipsumrangeend > 7}{\xdef\ipsumrangeend{7}}{}%
+ }{}%
+ \IfEq{\ipsumtype}{sent}%
+ {%
+ \xintifboolexpr{\ipsumrangeend > 9}{\xdef\ipsumrangeend{9}}{}%
+ }{}%
+ \IfEq{\ipsumtype}{enum}%
+ {%
+ \xintifboolexpr{\ipsumrangeend > 9}{\xdef\ipsumrangeend{9}}{}%
+ }{}%
+ \IfEq{\ipsumtype}{item}%
+ {%
+ \xintifboolexpr{\ipsumrangeend > 9}{\xdef\ipsumrangeend{9}}{}%
+ }{}%
+ \xdef\ipsumrange{}%
+ \xintFor* ##1 in {\xintSeq{\ipsumrangegeb}{\ipsumrangeend}}\do{\xdef\ipsumrange{\ipsumrange##1}}%
+ }%
+ {%
+ \xintifboolexpr{#2 < 1 'or' #2 > 8}{\xdef\ipsumrange{1}}{\xdef\ipsumrange{#2}}%
+ }%
+ %TYPE PAR
+ \IfEq{\ipsumtype}{par}%
+ {%
+ \IfEq{\ipsumlg}{FR}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\ipsum@par@FR@A}{}%
+ \IfSubStr{\ipsumrange}{2}{\ipsum@par@FR@B}{}%
+ \IfSubStr{\ipsumrange}{3}{\ipsum@par@FR@C}{}%
+ \IfSubStr{\ipsumrange}{4}{\ipsum@par@FR@D}{}%
+ \IfSubStr{\ipsumrange}{5}{\ipsum@par@FR@E}{}%
+ \IfSubStr{\ipsumrange}{6}{\ipsum@par@FR@F}{}%
+ \IfSubStr{\ipsumrange}{7}{\ipsum@par@FR@G}{}%
+ }%
+ {}%
+ \IfEq{\ipsumlg}{EN}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\ipsum@par@EN@A}{}%
+ \IfSubStr{\ipsumrange}{2}{\ipsum@par@EN@B}{}%
+ \IfSubStr{\ipsumrange}{3}{\ipsum@par@EN@C}{}%
+ \IfSubStr{\ipsumrange}{4}{\ipsum@par@EN@D}{}%
+ \IfSubStr{\ipsumrange}{5}{\ipsum@par@EN@E}{}%
+ \IfSubStr{\ipsumrange}{6}{\ipsum@par@EN@F}{}%
+ \IfSubStr{\ipsumrange}{7}{\ipsum@par@EN@G}{}%
+ }%
+ {}%
+ \IfEq{\ipsumlg}{DE}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\ipsum@par@DE@A}{}%
+ \IfSubStr{\ipsumrange}{2}{\ipsum@par@DE@B}{}%
+ \IfSubStr{\ipsumrange}{3}{\ipsum@par@DE@C}{}%
+ \IfSubStr{\ipsumrange}{4}{\ipsum@par@DE@D}{}%
+ \IfSubStr{\ipsumrange}{5}{\ipsum@par@DE@E}{}%
+ \IfSubStr{\ipsumrange}{6}{\ipsum@par@DE@F}{}%
+ \IfSubStr{\ipsumrange}{7}{\ipsum@par@DE@G}{}%
+ }%
+ {}%
+ \IfEq{\ipsumlg}{IT}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\ipsum@par@IT@A}{}%
+ \IfSubStr{\ipsumrange}{2}{\ipsum@par@IT@B}{}%
+ \IfSubStr{\ipsumrange}{3}{\ipsum@par@IT@C}{}%
+ \IfSubStr{\ipsumrange}{4}{\ipsum@par@IT@D}{}%
+ \IfSubStr{\ipsumrange}{5}{\ipsum@par@IT@E}{}%
+ \IfSubStr{\ipsumrange}{6}{\ipsum@par@IT@F}{}%
+ \IfSubStr{\ipsumrange}{7}{\ipsum@par@IT@G}{}%
+ }%
+ {}%
+ \IfEq{\ipsumlg}{LAT}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\ipsum@par@LAT@A}{}%
+ \IfSubStr{\ipsumrange}{2}{\ipsum@par@LAT@B}{}%
+ \IfSubStr{\ipsumrange}{3}{\ipsum@par@LAT@C}{}%
+ \IfSubStr{\ipsumrange}{4}{\ipsum@par@LAT@D}{}%
+ \IfSubStr{\ipsumrange}{5}{\ipsum@par@LAT@E}{}%
+ \IfSubStr{\ipsumrange}{6}{\ipsum@par@LAT@F}{}%
+ \IfSubStr{\ipsumrange}{7}{\ipsum@par@LAT@G}{}%
+ }%
+ {}%
+ \IfEq{\ipsumlg}{ES}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\ipsum@par@ES@A}{}%
+ \IfSubStr{\ipsumrange}{2}{\ipsum@par@ES@B}{}%
+ \IfSubStr{\ipsumrange}{3}{\ipsum@par@ES@C}{}%
+ \IfSubStr{\ipsumrange}{4}{\ipsum@par@ES@D}{}%
+ \IfSubStr{\ipsumrange}{5}{\ipsum@par@ES@E}{}%
+ \IfSubStr{\ipsumrange}{6}{\ipsum@par@ES@F}{}%
+ \IfSubStr{\ipsumrange}{7}{\ipsum@par@ES@G}{}%
+ }%
+ {}%
+ \IfEq{\ipsumlg}{PT}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\ipsum@par@PT@A}{}%
+ \IfSubStr{\ipsumrange}{2}{\ipsum@par@PT@B}{}%
+ \IfSubStr{\ipsumrange}{3}{\ipsum@par@PT@C}{}%
+ \IfSubStr{\ipsumrange}{4}{\ipsum@par@PT@D}{}%
+ \IfSubStr{\ipsumrange}{5}{\ipsum@par@PT@E}{}%
+ \IfSubStr{\ipsumrange}{6}{\ipsum@par@PT@F}{}%
+ \IfSubStr{\ipsumrange}{7}{\ipsum@par@PT@G}{}%
+ }%
+ {}%
+ \IfEq{\ipsumlg}{NL}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\ipsum@par@NL@A}{}%
+ \IfSubStr{\ipsumrange}{2}{\ipsum@par@NL@B}{}%
+ \IfSubStr{\ipsumrange}{3}{\ipsum@par@NL@C}{}%
+ \IfSubStr{\ipsumrange}{4}{\ipsum@par@NL@D}{}%
+ \IfSubStr{\ipsumrange}{5}{\ipsum@par@NL@E}{}%
+ \IfSubStr{\ipsumrange}{6}{\ipsum@par@NL@F}{}%
+ \IfSubStr{\ipsumrange}{7}{\ipsum@par@NL@G}{}%
+ }%
+ {}%
+ }%
+ {}
+ %TYPE PAR
+ \IfEq{\ipsumtype}{sent}%
+ {%
+ \IfEq{\ipsumlg}{FR}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\ipsum@sentence@FR@A}{}\par%
+ \IfSubStr{\ipsumrange}{2}{\ipsum@sentence@FR@B}{}\par%
+ \IfSubStr{\ipsumrange}{3}{\ipsum@sentence@FR@C}{}\par%
+ \IfSubStr{\ipsumrange}{4}{\ipsum@sentence@FR@D}{}\par%
+ \IfSubStr{\ipsumrange}{5}{\ipsum@sentence@FR@E}{}\par%
+ \IfSubStr{\ipsumrange}{6}{\ipsum@sentence@FR@F}{}\par%
+ \IfSubStr{\ipsumrange}{7}{\ipsum@sentence@FR@G}{}\par%
+ \IfSubStr{\ipsumrange}{8}{\ipsum@sentence@FR@H}{}\par%
+ \IfSubStr{\ipsumrange}{9}{\ipsum@sentence@FR@I}{}\par%
+ }%
+ {}%
+ \IfEq{\ipsumlg}{EN}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\ipsum@sentence@EN@A}{}\par%
+ \IfSubStr{\ipsumrange}{2}{\ipsum@sentence@EN@B}{}\par%
+ \IfSubStr{\ipsumrange}{3}{\ipsum@sentence@EN@C}{}\par%
+ \IfSubStr{\ipsumrange}{4}{\ipsum@sentence@EN@D}{}\par%
+ \IfSubStr{\ipsumrange}{5}{\ipsum@sentence@EN@E}{}\par%
+ \IfSubStr{\ipsumrange}{6}{\ipsum@sentence@EN@F}{}\par%
+ \IfSubStr{\ipsumrange}{7}{\ipsum@sentence@EN@G}{}\par%
+ \IfSubStr{\ipsumrange}{8}{\ipsum@sentence@EN@H}{}\par%
+ \IfSubStr{\ipsumrange}{9}{\ipsum@sentence@EN@I}{}\par%
+ }%
+ {}%
+ \IfEq{\ipsumlg}{DE}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\ipsum@sentence@DE@A}{}\par%
+ \IfSubStr{\ipsumrange}{2}{\ipsum@sentence@DE@B}{}\par%
+ \IfSubStr{\ipsumrange}{3}{\ipsum@sentence@DE@C}{}\par%
+ \IfSubStr{\ipsumrange}{4}{\ipsum@sentence@DE@D}{}\par%
+ \IfSubStr{\ipsumrange}{5}{\ipsum@sentence@DE@E}{}\par%
+ \IfSubStr{\ipsumrange}{6}{\ipsum@sentence@DE@F}{}\par%
+ \IfSubStr{\ipsumrange}{7}{\ipsum@sentence@DE@G}{}\par%
+ \IfSubStr{\ipsumrange}{8}{\ipsum@sentence@DE@H}{}\par%
+ \IfSubStr{\ipsumrange}{9}{\ipsum@sentence@DE@I}{}\par%
+ }%
+ {}%
+ \IfEq{\ipsumlg}{IT}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\ipsum@sentence@IT@A}{}\par%
+ \IfSubStr{\ipsumrange}{2}{\ipsum@sentence@IT@B}{}\par%
+ \IfSubStr{\ipsumrange}{3}{\ipsum@sentence@IT@C}{}\par%
+ \IfSubStr{\ipsumrange}{4}{\ipsum@sentence@IT@D}{}\par%
+ \IfSubStr{\ipsumrange}{5}{\ipsum@sentence@IT@E}{}\par%
+ \IfSubStr{\ipsumrange}{6}{\ipsum@sentence@IT@F}{}\par%
+ \IfSubStr{\ipsumrange}{7}{\ipsum@sentence@IT@G}{}\par%
+ \IfSubStr{\ipsumrange}{8}{\ipsum@sentence@IT@H}{}\par%
+ \IfSubStr{\ipsumrange}{9}{\ipsum@sentence@IT@I}{}\par%
+ }%
+ {}%
+ \IfEq{\ipsumlg}{LAT}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\ipsum@sentence@LAT@A}{}\par%
+ \IfSubStr{\ipsumrange}{2}{\ipsum@sentence@LAT@B}{}\par%
+ \IfSubStr{\ipsumrange}{3}{\ipsum@sentence@LAT@C}{}\par%
+ \IfSubStr{\ipsumrange}{4}{\ipsum@sentence@LAT@D}{}\par%
+ \IfSubStr{\ipsumrange}{5}{\ipsum@sentence@LAT@E}{}\par%
+ \IfSubStr{\ipsumrange}{6}{\ipsum@sentence@LAT@F}{}\par%
+ \IfSubStr{\ipsumrange}{7}{\ipsum@sentence@LAT@G}{}\par%
+ \IfSubStr{\ipsumrange}{8}{\ipsum@sentence@LAT@H}{}\par%
+ \IfSubStr{\ipsumrange}{9}{\ipsum@sentence@LAT@I}{}\par%
+ }%
+ {}%
+ \IfEq{\ipsumlg}{ES}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\ipsum@sentence@ES@A}{}\par%
+ \IfSubStr{\ipsumrange}{2}{\ipsum@sentence@ES@B}{}\par%
+ \IfSubStr{\ipsumrange}{3}{\ipsum@sentence@ES@C}{}\par%
+ \IfSubStr{\ipsumrange}{4}{\ipsum@sentence@ES@D}{}\par%
+ \IfSubStr{\ipsumrange}{5}{\ipsum@sentence@ES@E}{}\par%
+ \IfSubStr{\ipsumrange}{6}{\ipsum@sentence@ES@F}{}\par%
+ \IfSubStr{\ipsumrange}{7}{\ipsum@sentence@ES@G}{}\par%
+ \IfSubStr{\ipsumrange}{8}{\ipsum@sentence@ES@H}{}\par%
+ \IfSubStr{\ipsumrange}{9}{\ipsum@sentence@ES@I}{}\par%
+ }%
+ {}%
+ \IfEq{\ipsumlg}{PT}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\ipsum@sentence@PT@A}{}\par%
+ \IfSubStr{\ipsumrange}{2}{\ipsum@sentence@PT@B}{}\par%
+ \IfSubStr{\ipsumrange}{3}{\ipsum@sentence@PT@C}{}\par%
+ \IfSubStr{\ipsumrange}{4}{\ipsum@sentence@PT@D}{}\par%
+ \IfSubStr{\ipsumrange}{5}{\ipsum@sentence@PT@E}{}\par%
+ \IfSubStr{\ipsumrange}{6}{\ipsum@sentence@PT@F}{}\par%
+ \IfSubStr{\ipsumrange}{7}{\ipsum@sentence@PT@G}{}\par%
+ \IfSubStr{\ipsumrange}{8}{\ipsum@sentence@PT@H}{}\par%
+ \IfSubStr{\ipsumrange}{9}{\ipsum@sentence@PT@I}{}\par%
+ }%
+ {}%
+ \IfEq{\ipsumlg}{NL}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\ipsum@sentence@NL@A}{}\par%
+ \IfSubStr{\ipsumrange}{2}{\ipsum@sentence@NL@B}{}\par%
+ \IfSubStr{\ipsumrange}{3}{\ipsum@sentence@NL@C}{}\par%
+ \IfSubStr{\ipsumrange}{4}{\ipsum@sentence@NL@D}{}\par%
+ \IfSubStr{\ipsumrange}{5}{\ipsum@sentence@NL@E}{}\par%
+ \IfSubStr{\ipsumrange}{6}{\ipsum@sentence@NL@F}{}\par%
+ \IfSubStr{\ipsumrange}{7}{\ipsum@sentence@NL@G}{}\par%
+ \IfSubStr{\ipsumrange}{8}{\ipsum@sentence@NL@H}{}\par%
+ \IfSubStr{\ipsumrange}{9}{\ipsum@sentence@NL@I}{}\par%
+ }%
+ {}%
+ }%
+ {}%
+ \IfEq{\ipsumtype}{enum}%
+ {%
+ \begin{enumerate}
+ \IfEq{\ipsumlg}{FR}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\item \ipsum@sentence@FR@A}{}
+ \IfSubStr{\ipsumrange}{2}{\item \ipsum@sentence@FR@B}{}
+ \IfSubStr{\ipsumrange}{3}{\item \ipsum@sentence@FR@C}{}
+ \IfSubStr{\ipsumrange}{4}{\item \ipsum@sentence@FR@D}{}
+ \IfSubStr{\ipsumrange}{5}{\item \ipsum@sentence@FR@E}{}
+ \IfSubStr{\ipsumrange}{6}{\item \ipsum@sentence@FR@F}{}
+ \IfSubStr{\ipsumrange}{7}{\item \ipsum@sentence@FR@G}{}
+ \IfSubStr{\ipsumrange}{8}{\item \ipsum@sentence@FR@H}{}
+ \IfSubStr{\ipsumrange}{9}{\item \ipsum@sentence@FR@I}{}
+ }%
+ {}%
+ \IfEq{\ipsumlg}{EN}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\item \ipsum@sentence@EN@A}{}
+ \IfSubStr{\ipsumrange}{2}{\item \ipsum@sentence@EN@B}{}
+ \IfSubStr{\ipsumrange}{3}{\item \ipsum@sentence@EN@C}{}
+ \IfSubStr{\ipsumrange}{4}{\item \ipsum@sentence@EN@D}{}
+ \IfSubStr{\ipsumrange}{5}{\item \ipsum@sentence@EN@E}{}
+ \IfSubStr{\ipsumrange}{6}{\item \ipsum@sentence@EN@F}{}
+ \IfSubStr{\ipsumrange}{7}{\item \ipsum@sentence@EN@G}{}
+ \IfSubStr{\ipsumrange}{8}{\item \ipsum@sentence@EN@H}{}
+ \IfSubStr{\ipsumrange}{9}{\item \ipsum@sentence@EN@I}{}
+ }%
+ {}%
+ \IfEq{\ipsumlg}{DE}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\item \ipsum@sentence@DE@A}{}
+ \IfSubStr{\ipsumrange}{2}{\item \ipsum@sentence@DE@B}{}
+ \IfSubStr{\ipsumrange}{3}{\item \ipsum@sentence@DE@C}{}
+ \IfSubStr{\ipsumrange}{4}{\item \ipsum@sentence@DE@D}{}
+ \IfSubStr{\ipsumrange}{5}{\item \ipsum@sentence@DE@E}{}
+ \IfSubStr{\ipsumrange}{6}{\item \ipsum@sentence@DE@F}{}
+ \IfSubStr{\ipsumrange}{7}{\item \ipsum@sentence@DE@G}{}
+ \IfSubStr{\ipsumrange}{8}{\item \ipsum@sentence@DE@H}{}
+ \IfSubStr{\ipsumrange}{9}{\item \ipsum@sentence@DE@I}{}
+ }%
+ {}%
+ \IfEq{\ipsumlg}{IT}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\item \ipsum@sentence@IT@A}{}
+ \IfSubStr{\ipsumrange}{2}{\item \ipsum@sentence@IT@B}{}
+ \IfSubStr{\ipsumrange}{3}{\item \ipsum@sentence@IT@C}{}
+ \IfSubStr{\ipsumrange}{4}{\item \ipsum@sentence@IT@D}{}
+ \IfSubStr{\ipsumrange}{5}{\item \ipsum@sentence@IT@E}{}
+ \IfSubStr{\ipsumrange}{6}{\item \ipsum@sentence@IT@F}{}
+ \IfSubStr{\ipsumrange}{7}{\item \ipsum@sentence@IT@G}{}
+ \IfSubStr{\ipsumrange}{8}{\item \ipsum@sentence@IT@H}{}
+ \IfSubStr{\ipsumrange}{9}{\item \ipsum@sentence@IT@I}{}
+ }%
+ {}%
+ \IfEq{\ipsumlg}{LAT}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\item \ipsum@sentence@LAT@A}{}
+ \IfSubStr{\ipsumrange}{2}{\item \ipsum@sentence@LAT@B}{}
+ \IfSubStr{\ipsumrange}{3}{\item \ipsum@sentence@LAT@C}{}
+ \IfSubStr{\ipsumrange}{4}{\item \ipsum@sentence@LAT@D}{}
+ \IfSubStr{\ipsumrange}{5}{\item \ipsum@sentence@LAT@E}{}
+ \IfSubStr{\ipsumrange}{6}{\item \ipsum@sentence@LAT@F}{}
+ \IfSubStr{\ipsumrange}{7}{\item \ipsum@sentence@LAT@G}{}
+ \IfSubStr{\ipsumrange}{8}{\item \ipsum@sentence@LAT@H}{}
+ \IfSubStr{\ipsumrange}{9}{\item \ipsum@sentence@LAT@I}{}
+ }%
+ {}%
+ \IfEq{\ipsumlg}{ES}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\item \ipsum@sentence@ES@A}{}
+ \IfSubStr{\ipsumrange}{2}{\item \ipsum@sentence@ES@B}{}
+ \IfSubStr{\ipsumrange}{3}{\item \ipsum@sentence@ES@C}{}
+ \IfSubStr{\ipsumrange}{4}{\item \ipsum@sentence@ES@D}{}
+ \IfSubStr{\ipsumrange}{5}{\item \ipsum@sentence@ES@E}{}
+ \IfSubStr{\ipsumrange}{6}{\item \ipsum@sentence@ES@F}{}
+ \IfSubStr{\ipsumrange}{7}{\item \ipsum@sentence@ES@G}{}
+ \IfSubStr{\ipsumrange}{8}{\item \ipsum@sentence@ES@H}{}
+ \IfSubStr{\ipsumrange}{9}{\item \ipsum@sentence@ES@I}{}
+ }%
+ {}%
+ \IfEq{\ipsumlg}{PT}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\item \ipsum@sentence@PT@A}{}
+ \IfSubStr{\ipsumrange}{2}{\item \ipsum@sentence@PT@B}{}
+ \IfSubStr{\ipsumrange}{3}{\item \ipsum@sentence@PT@C}{}
+ \IfSubStr{\ipsumrange}{4}{\item \ipsum@sentence@PT@D}{}
+ \IfSubStr{\ipsumrange}{5}{\item \ipsum@sentence@PT@E}{}
+ \IfSubStr{\ipsumrange}{6}{\item \ipsum@sentence@PT@F}{}
+ \IfSubStr{\ipsumrange}{7}{\item \ipsum@sentence@PT@G}{}
+ \IfSubStr{\ipsumrange}{8}{\item \ipsum@sentence@PT@H}{}
+ \IfSubStr{\ipsumrange}{9}{\item \ipsum@sentence@PT@I}{}
+ }%
+ {}%
+ \IfEq{\ipsumlg}{NL}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\item \ipsum@sentence@NL@A}{}
+ \IfSubStr{\ipsumrange}{2}{\item \ipsum@sentence@NL@B}{}
+ \IfSubStr{\ipsumrange}{3}{\item \ipsum@sentence@NL@C}{}
+ \IfSubStr{\ipsumrange}{4}{\item \ipsum@sentence@NL@D}{}
+ \IfSubStr{\ipsumrange}{5}{\item \ipsum@sentence@NL@E}{}
+ \IfSubStr{\ipsumrange}{6}{\item \ipsum@sentence@NL@F}{}
+ \IfSubStr{\ipsumrange}{7}{\item \ipsum@sentence@NL@G}{}
+ \IfSubStr{\ipsumrange}{8}{\item \ipsum@sentence@NL@H}{}
+ \IfSubStr{\ipsumrange}{9}{\item \ipsum@sentence@NL@I}{}
+ }%
+ {}%
+ \end{enumerate}
+ }%
+ {}%
+ \IfEq{\ipsumtype}{item}%
+ {%
+ \begin{itemize}
+ \IfEq{\ipsumlg}{FR}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\item \ipsum@sentence@FR@A}{}
+ \IfSubStr{\ipsumrange}{2}{\item \ipsum@sentence@FR@B}{}
+ \IfSubStr{\ipsumrange}{3}{\item \ipsum@sentence@FR@C}{}
+ \IfSubStr{\ipsumrange}{4}{\item \ipsum@sentence@FR@D}{}
+ \IfSubStr{\ipsumrange}{5}{\item \ipsum@sentence@FR@E}{}
+ \IfSubStr{\ipsumrange}{6}{\item \ipsum@sentence@FR@F}{}
+ \IfSubStr{\ipsumrange}{7}{\item \ipsum@sentence@FR@G}{}
+ \IfSubStr{\ipsumrange}{8}{\item \ipsum@sentence@FR@H}{}
+ \IfSubStr{\ipsumrange}{9}{\item \ipsum@sentence@FR@I}{}
+ }%
+ {}%
+ \IfEq{\ipsumlg}{EN}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\item \ipsum@sentence@EN@A}{}
+ \IfSubStr{\ipsumrange}{2}{\item \ipsum@sentence@EN@B}{}
+ \IfSubStr{\ipsumrange}{3}{\item \ipsum@sentence@EN@C}{}
+ \IfSubStr{\ipsumrange}{4}{\item \ipsum@sentence@EN@D}{}
+ \IfSubStr{\ipsumrange}{5}{\item \ipsum@sentence@EN@E}{}
+ \IfSubStr{\ipsumrange}{6}{\item \ipsum@sentence@EN@F}{}
+ \IfSubStr{\ipsumrange}{7}{\item \ipsum@sentence@EN@G}{}
+ \IfSubStr{\ipsumrange}{8}{\item \ipsum@sentence@EN@H}{}
+ \IfSubStr{\ipsumrange}{9}{\item \ipsum@sentence@EN@I}{}
+ }%
+ {}%
+ \IfEq{\ipsumlg}{DE}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\item \ipsum@sentence@DE@A}{}
+ \IfSubStr{\ipsumrange}{2}{\item \ipsum@sentence@DE@B}{}
+ \IfSubStr{\ipsumrange}{3}{\item \ipsum@sentence@DE@C}{}
+ \IfSubStr{\ipsumrange}{4}{\item \ipsum@sentence@DE@D}{}
+ \IfSubStr{\ipsumrange}{5}{\item \ipsum@sentence@DE@E}{}
+ \IfSubStr{\ipsumrange}{6}{\item \ipsum@sentence@DE@F}{}
+ \IfSubStr{\ipsumrange}{7}{\item \ipsum@sentence@DE@G}{}
+ \IfSubStr{\ipsumrange}{8}{\item \ipsum@sentence@DE@H}{}
+ \IfSubStr{\ipsumrange}{9}{\item \ipsum@sentence@DE@I}{}
+ }%
+ {}%
+ \IfEq{\ipsumlg}{IT}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\item \ipsum@sentence@IT@A}{}
+ \IfSubStr{\ipsumrange}{2}{\item \ipsum@sentence@IT@B}{}
+ \IfSubStr{\ipsumrange}{3}{\item \ipsum@sentence@IT@C}{}
+ \IfSubStr{\ipsumrange}{4}{\item \ipsum@sentence@IT@D}{}
+ \IfSubStr{\ipsumrange}{5}{\item \ipsum@sentence@IT@E}{}
+ \IfSubStr{\ipsumrange}{6}{\item \ipsum@sentence@IT@F}{}
+ \IfSubStr{\ipsumrange}{7}{\item \ipsum@sentence@IT@G}{}
+ \IfSubStr{\ipsumrange}{8}{\item \ipsum@sentence@IT@H}{}
+ \IfSubStr{\ipsumrange}{9}{\item \ipsum@sentence@IT@I}{}
+ }%
+ {}%
+ \IfEq{\ipsumlg}{LAT}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\item \ipsum@sentence@LAT@A}{}
+ \IfSubStr{\ipsumrange}{2}{\item \ipsum@sentence@LAT@B}{}
+ \IfSubStr{\ipsumrange}{3}{\item \ipsum@sentence@LAT@C}{}
+ \IfSubStr{\ipsumrange}{4}{\item \ipsum@sentence@LAT@D}{}
+ \IfSubStr{\ipsumrange}{5}{\item \ipsum@sentence@LAT@E}{}
+ \IfSubStr{\ipsumrange}{6}{\item \ipsum@sentence@LAT@F}{}
+ \IfSubStr{\ipsumrange}{7}{\item \ipsum@sentence@LAT@G}{}
+ \IfSubStr{\ipsumrange}{8}{\item \ipsum@sentence@LAT@H}{}
+ \IfSubStr{\ipsumrange}{9}{\item \ipsum@sentence@LAT@I}{}
+ }%
+ {}%
+ \IfEq{\ipsumlg}{ES}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\item \ipsum@sentence@ES@A}{}
+ \IfSubStr{\ipsumrange}{2}{\item \ipsum@sentence@ES@B}{}
+ \IfSubStr{\ipsumrange}{3}{\item \ipsum@sentence@ES@C}{}
+ \IfSubStr{\ipsumrange}{4}{\item \ipsum@sentence@ES@D}{}
+ \IfSubStr{\ipsumrange}{5}{\item \ipsum@sentence@ES@E}{}
+ \IfSubStr{\ipsumrange}{6}{\item \ipsum@sentence@ES@F}{}
+ \IfSubStr{\ipsumrange}{7}{\item \ipsum@sentence@ES@G}{}
+ \IfSubStr{\ipsumrange}{8}{\item \ipsum@sentence@ES@H}{}
+ \IfSubStr{\ipsumrange}{9}{\item \ipsum@sentence@ES@I}{}
+ }%
+ {}%
+ \IfEq{\ipsumlg}{PT}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\item \ipsum@sentence@PT@A}{}
+ \IfSubStr{\ipsumrange}{2}{\item \ipsum@sentence@PT@B}{}
+ \IfSubStr{\ipsumrange}{3}{\item \ipsum@sentence@PT@C}{}
+ \IfSubStr{\ipsumrange}{4}{\item \ipsum@sentence@PT@D}{}
+ \IfSubStr{\ipsumrange}{5}{\item \ipsum@sentence@PT@E}{}
+ \IfSubStr{\ipsumrange}{6}{\item \ipsum@sentence@PT@F}{}
+ \IfSubStr{\ipsumrange}{7}{\item \ipsum@sentence@PT@G}{}
+ \IfSubStr{\ipsumrange}{8}{\item \ipsum@sentence@PT@H}{}
+ \IfSubStr{\ipsumrange}{9}{\item \ipsum@sentence@PT@I}{}
+ }%
+ {}%
+ \IfEq{\ipsumlg}{NL}%
+ {%
+ \IfSubStr{\ipsumrange}{1}{\item \ipsum@sentence@NL@A}{}
+ \IfSubStr{\ipsumrange}{2}{\item \ipsum@sentence@NL@B}{}
+ \IfSubStr{\ipsumrange}{3}{\item \ipsum@sentence@NL@C}{}
+ \IfSubStr{\ipsumrange}{4}{\item \ipsum@sentence@NL@D}{}
+ \IfSubStr{\ipsumrange}{5}{\item \ipsum@sentence@NL@E}{}
+ \IfSubStr{\ipsumrange}{6}{\item \ipsum@sentence@NL@F}{}
+ \IfSubStr{\ipsumrange}{7}{\item \ipsum@sentence@NL@G}{}
+ \IfSubStr{\ipsumrange}{8}{\item \ipsum@sentence@NL@H}{}
+ \IfSubStr{\ipsumrange}{9}{\item \ipsum@sentence@NL@I}{}
+ }%
+ {}%
+ \end{itemize}
+ }%
+ {}%
+}
+
+\endinput \ No newline at end of file
diff --git a/support/latexmk/CHANGES b/support/latexmk/CHANGES
index f43cb57bb7..09e5cd9b2e 100644
--- a/support/latexmk/CHANGES
+++ b/support/latexmk/CHANGES
@@ -857,5 +857,19 @@ From v. 4.79 to 4.80
Various bug fixes and corrections, improvements in error and warning
messages, and corrections to documentation.
-
+From v. 4.80 to 4.81
+ Fix various problems when filenames contain non-ASCII characters,
+ especially when MSYS is used.
+ Fix problems with analyzing wrapped lines in log files, especially with
+ lualatex.
+ With options like -dvi that set the kind of output file, turn off
+ settings corresponding to incompatible options.
+ Improved warning and error messages.
+ Fix problem when using the $use_make_for_missing_files, with the search
+ over possible extensions for a missing file.
+ Add .run.xml to the list of generated extensions in @generated_exts.
+ Correct the behavior after errors. Previously force_mode didn't work as
+ documented, terminating processing too early, while in
+ preview_continuous_mode, incorrect extra runs were sometimes made.
+ Other bug fixes.
diff --git a/support/latexmk/INSTALL b/support/latexmk/INSTALL
index fc4b4a0f62..359686d527 100644
--- a/support/latexmk/INSTALL
+++ b/support/latexmk/INSTALL
@@ -1,6 +1,6 @@
INSTALLING latexmk
==================
- (Version 4.80, 4 Apr. 2023)
+ (Version 4.81, 6 Nov. 2023)
John Collins
Physics Department
diff --git a/support/latexmk/README b/support/latexmk/README
index 87b742eb53..72848ce8f3 100644
--- a/support/latexmk/README
+++ b/support/latexmk/README
@@ -1,4 +1,4 @@
-Latexmk, version 4.80, 4 Apr 2023
+Latexmk, version 4.81, 6 Nov 2023
---------------------------------
Latexmk completely automates the process of generating a LaTeX
diff --git a/support/latexmk/example_rcfiles/README-latexmk-rcfiles b/support/latexmk/example_rcfiles/README-latexmk-rcfiles
index 19690cf168..1517b35ed5 100644
--- a/support/latexmk/example_rcfiles/README-latexmk-rcfiles
+++ b/support/latexmk/example_rcfiles/README-latexmk-rcfiles
@@ -26,7 +26,7 @@ NOTES:
But it is preferable to leave the quotes in, since they provide
safety against special characters in filenames. The double quotes
- appear not to cause problems in all situations that I have tried.
+ appear not to cause problems in all the situations that I have tried.
5. Note that the files for exceltex and pythontex illustrate an answer
to an issue that arises in the following generic situation:
diff --git a/support/latexmk/example_rcfiles/pdflatex_latexmkrc b/support/latexmk/example_rcfiles/pdflatex_latexmkrc
new file mode 100644
index 0000000000..38c7e6670d
--- /dev/null
+++ b/support/latexmk/example_rcfiles/pdflatex_latexmkrc
@@ -0,0 +1,6 @@
+# This shows how to configure latexmk to use pdflatex
+
+$pdf_mode = 1;
+$postscript_mode = $dvi_mode = 0;
+
+
diff --git a/support/latexmk/example_rcfiles/pythontex-latexmkrc b/support/latexmk/example_rcfiles/pythontex-latexmkrc
index 825706a630..458c5a4070 100644
--- a/support/latexmk/example_rcfiles/pythontex-latexmkrc
+++ b/support/latexmk/example_rcfiles/pythontex-latexmkrc
@@ -15,6 +15,13 @@ $clean_ext .= " pythontex-files-%R/* pythontex-files-%R";
push @generated_exts, 'pytxcode';
$pythontex = 'pythontex %O %S';
+
+# Specify a rule for running the pythontex program.
+# Because of the unusual structure of input and output files, I've used
+# an internal hash variable %extra_rule_spec of latexmk to specify the
+# rule. Currently the only documentation is in the latexmk source code.
+# Probably the following line is stable against future changes in latexmk,
+# but that isn't guaranteed.
$extra_rule_spec{'pythontex'} = [ 'internal', '', 'mypythontex', "%Y%R.pytxcode", "%Ypythontex-files-%R/%R.pytxmcr", "%R", 1 ];
sub mypythontex {
diff --git a/support/latexmk/example_rcfiles/schultz-texshop-latexmkrc b/support/latexmk/example_rcfiles/schulz-texshop-latexmkrc
index 6f43e982ec..6f43e982ec 100644
--- a/support/latexmk/example_rcfiles/schultz-texshop-latexmkrc
+++ b/support/latexmk/example_rcfiles/schulz-texshop-latexmkrc
diff --git a/support/latexmk/example_rcfiles/xr_latexmkrc b/support/latexmk/example_rcfiles/xr_latexmkrc
index 24647ae6e8..bd86085230 100644
--- a/support/latexmk/example_rcfiles/xr_latexmkrc
+++ b/support/latexmk/example_rcfiles/xr_latexmkrc
@@ -27,10 +27,6 @@
# or extra enhancements to latexmk.
# 5. The code uses subroutines copy and fileparse that are loaded by
# latexmk from the Perl packages File::Copy and File::Basename.
-# 6. It also uses some not-yet-documented features of latexmk: an array
-# variable @file_not_found and subroutines popd, pushd, and
-# rdb_add_generated.
-
#--------------------
# Configurable choices for compilation of external documents
@@ -72,14 +68,13 @@ sub makeexternaldocument {
# aux_dir rather than the one the cus dep is assumed by latexmk
# to produce, which is in the same directory as the .tex source
# file for this custom dependency.)
- # Use not-yet-documented latexmk subroutine rdb_add_generated
- # to do this:
+ # Use the latexmk subroutine rdb_add_generated to do this.
# 2. A copy of the .aux file must be in same directory as .tex file
# to satisfy latexmk's definition of a custom dependency.
rdb_add_generated( "$sub_doc_output/$base_name.aux" );
copy "$sub_doc_output/$base_name.aux", ".";
}
- popd;
+ popd();
return $return;
}
}
diff --git a/support/latexmk/latexmk.1 b/support/latexmk/latexmk.1
index b71b559977..0b57ebea1b 100644
--- a/support/latexmk/latexmk.1
+++ b/support/latexmk/latexmk.1
@@ -1,4 +1,4 @@
-.TH LATEXMK 1 "4 April 2023" ""
+.TH LATEXMK 1 "6 November 2023" ""
.SH NAME
latexmk \- generate LaTeX document
.SH SYNOPSIS
@@ -2733,6 +2733,36 @@ database of information on source files. You will not normally need
to change this.
.TP
+.B @file_not_found
+This an array of Perl regular expressions that are patterns to find
+messages in the .log file from a run of *latex that indicate that a file
+was looked for and not found. To see the current default set, you should
+look at the definition of \fI@file_not_found\fR in the latexmk.pl file.
+
+In the regular expression, the string for the name of the missing file
+should be enclosed in parentheses. That carries the implication that after
+latexmk gets a succesful match to the pattern, the variable $1 is set to
+the filename, which is then picked up by latexmk.
+
+If you happen to encounter a package that gives a missing file message of a
+different form than one that matches one of the built-in patterns, you can
+add another pattern to the array. An example would be
+
+ push @file_not_found, '^No file\\\\s+(.+)\\\\s*$';
+
+The regular expression itself is
+
+ ^Missing file\\s+(.+)\\s*$
+
+But the corresponding string specification in the push statement has to
+have the backslashes doubled.
+
+This regular expression matches a line that starts with 'No file', then has
+one or more white space characters, then any number of characters forming
+the filename, then possible white space, and finally the end of the line.
+(See documentation on Perl regular expressions for details.)
+
+.TP
.B $fls_uses_out_dir [0]
This variable determines whether or not the .fls file should be in the
output directory instead of the natural directory, which is the aux
@@ -3995,9 +4025,49 @@ dollar signs.
.B $$Pdest
This gives the name of the main output file if any. Note the double
dollar signs.
+
+.TP
+.B pushd( path ), popd()
+These subroutines are used when it is needed to temporarily change the
+working directory, as in
+
+ pushd( 'some_directory' );
+ ... Processing done with 'some_directory' as the working directory
+ popd()
+
+They perform exactly the same function as the commands of the same names in
+operating system command shells like bash on Unix, and cmd.exe on the
+Windows.
+
+.TP
+.B rdb_add_generated( file, ... )
+This subroutine is to be used in the context of a rule, that is, from
+within a subroutine that is carrying out processing of a rule. Such is the
+case for the subroutine implementing a custom dependency, or the subroutine
+invoked by using the "internal" keyword in the command specification like
+that in the variable \fI$latex\fR.
+
+Its arguments are a sequence of filenames which are generated during the
+running of the rule. The names might arise from an analysis of the results
+of the run, e.g., in a log file, or from knowledge of properties of the
+specific rule. Calling \fIrdb_add_generated\fR with these filenames
+ensures that these files are flagged as generated by the rule in
+\fIlatexmk\fR's internal data structures. Basically, no action is taken if
+the files have already been flagged as generated.
+
+A main purpose of using this subroutine is for the situation when a
+generated file is also the source file for some rule, so that \fIlatexmk\fR
+can correctly link the dependency information in its network of rules.
+
+\fINote: Unlike some other subroutines in this section, there is no
+argument for a rule for \fRrdb_add_generated\fI. Instead, the subroutine is
+to be invoked during the processing of a rule when \fRlatexmk\fI has set up
+an appropriate context (i.e., appropriate variables). In contrast,
+subroutines with a rule argument can be used also outside a rule context.\fR
+
.TP
.B rdb_ensure_file( $rule, file )
-This a subroutine that ensures that the given file is among the source
+This subroutine ensures that the given file is among the source
files for the specified rule. It is typically used when, during the
processing of a rule, it is known that a particular extra file is
among the dependencies that \fIlatexmk\fR should know, but its default
@@ -4010,17 +4080,34 @@ For examples of its use, see some of the files in the directory
cases that use this subroutine are \fIbib2gls-latexmkrc\fR,
\fIexceltex_latexmkrc\fR and \fItexinfo-latexmkrc\fR. These
illustrate typical cases where \fIlatexmk\fR's normal processing fails
-to detect certain extra source files.
+to detect certain extra source files.
+
+\fINote that \fRrdb_ensure_file\fI only has one filename argument, unlike
+other subroutines in this section. If you want to apply its action to
+multiple files, you will need one call to \fRrdb_ensure_file\fI for each
+file.\fR
+
.TP
.B rdb_remove_files( $rule, file, ... )
This subroutine removes one or more files from the dependency list for
the given rule.
+
+.TP
+.B rdb_remove_generated( file, ... )
+This subroutine is to be used in the context of a rule, that is, from
+within a subroutine that is carrying out processing of a rule. It performs
+the opposite action to \fIrdb_add_generated\fR. Its effect is to ensure
+that the given filenames are not listed in \fIlatexmk\fR's internal data
+structures as being generated by the rule.
+
.TP
.B rdb_list_source( $rule )
This subroutine returns the list of source files (i.e., the dependency
list) for the given rule.
+
.TP
.B rdb_set_source( $rule, file, ... )
+
.TP
.B rdb_set_source( $rule, @files )
This subroutine sets the dependency list for the given rule to be the
@@ -4028,6 +4115,7 @@ specified files. Files that are already in the list have unchanged
information. Files that were not in the list are added to it. Files
in the previous dependency list that are not in the newly specified
list of files are removed from the dependency list.
+
.TP
.B Run_subst( command_spec )
This subroutine runs the command specified by \fIcommand_spec\fR. The
@@ -4296,12 +4384,12 @@ e-mail addresses are not written in their standard form to avoid being
harvested too easily.)
.SH AUTHOR
Current version, by John Collins
-(Version 4.80).
+(Version 4.81).
Report bugs etc to his e-mail (jcc8 at psu.edu).
Released version can be obtained from CTAN:
<http://www.ctan.org/pkg/latexmk/>, and from the
-author's website <http://www.personal.psu.edu/jcc8/latexmk/>.
+author's website <https://www.cantab.net/users/johncollins/latexmk/>.
.br
Modifications and enhancements by Evan McLean (Version 2.0)
.br
diff --git a/support/latexmk/latexmk.pdf b/support/latexmk/latexmk.pdf
index a746f4cfda..4c2ed70964 100644
--- a/support/latexmk/latexmk.pdf
+++ b/support/latexmk/latexmk.pdf
Binary files differ
diff --git a/support/latexmk/latexmk.pl b/support/latexmk/latexmk.pl
index 434da3529c..9583f45a3f 100755
--- a/support/latexmk/latexmk.pl
+++ b/support/latexmk/latexmk.pl
@@ -42,8 +42,8 @@ use warnings;
$my_name = 'latexmk';
$My_name = 'Latexmk';
-$version_num = '4.80';
-$version_details = "$My_name, John Collins, 4 Apr. 2023. Version $version_num";
+$version_num = '4.81';
+$version_details = "$My_name, John Collins, 6 Nov. 2023. Version $version_num";
use Config;
use File::Basename;
@@ -82,7 +82,7 @@ use Cwd "chdir"; # Ensure $ENV{PWD} tracks cwd.
use Digest::MD5;
# **WARNING**: Don't import time; that overrides core function time(), and messes up
-#
+# somethings
use Time::HiRes;
#################################################
@@ -312,6 +312,7 @@ sub fprint8 {
# v. pdflatexmk, etc):
(our $invoked_name) = fileparseA($0);
+# Save name, since I override it if I don't recognize it
our $invoked_kind = $invoked_name;
print "$My_name: Invoked as '$invoked_name'\n"
if ($invoked_name ne 'latexmk');
@@ -360,6 +361,11 @@ else {
# It is the parameter max_print_line in the TeX program. (tex.web)
$log_wrap = 79;
+# Expected biggest construct in log file in bytes.
+# Use to limit number of (potentially) wrapped lines to combine into single line.
+$max_log_construct = 600;
+
+
#########################################################################
## Default parsing and file-handling settings
@@ -372,8 +378,8 @@ $log_wrap = 79;
## push @file_not_found, '^No data file found `([^\\\']*)\\\'';
## will give match to line starting "No data file found `filename'"
@file_not_found = (
- '^No file\\s*(.*)\\.$',
- '^No file\\s*(.+)\s*$',
+ '^No file\\s+(.*)\\.$',
+ '^No file\\s+(.+)\s*$',
'^\\! LaTeX Error: File `([^\\\']*)\\\' not found\\.',
'^\\! I can\\\'t find file `([^\\\']*)\\\'\\.',
'.*?:\\d*: LaTeX Error: File `([^\\\']*)\\\' not found\\.',
@@ -559,7 +565,7 @@ $input_extensions{xelatex} = $input_extensions{pdflatex};
# and because of the possibility of extra bibtex/biber rules with
# non-standard basename.
@generated_exts = ( 'aux', 'bcf', 'fls', 'idx', 'ind', 'lof', 'lot',
- 'out', 'toc',
+ 'out', 'run.xml', 'toc',
'blg', 'ilg', 'log',
'xdv'
);
@@ -1459,7 +1465,7 @@ our $times_are_clock = ($^O eq "MSWin32" );
# Data for 1 run and global (ending in '0'):
-our ( $processing_time1, $processing_time0, @timings1, @timings0);
+our ( $clock1, $processing_time1, $processing_time0, @timings1, @timings0);
&init_timing_all;
@@ -1913,8 +1919,21 @@ elsif ($HOME ne '') {
%rc_files_read2 = (); # Map **abs** filename to 1; used to check duplicate reads.
# Options that are to be obeyed before rc files are read:
+# Also under MSWin32 and msys, CL arguments sometimes get quotes in them.
+# (Specific example: TeXLive 2023 with msys's perl and arguments containing
+# both non-ASCII character, when latexmk.exe invoked from cmd.exe. In some
+# other situations (powershell and msys's terminal+bash), it seems that both
+# space and non-ASCII character are needed to trigger a problem.)
foreach $_ ( @ARGV )
{
+ if ( ($^O eq "MSWin32") || ($^O eq 'msys') ) {
+ # "arg" -> arg.
+ # -..="arg" -> -..=arg.
+ # In both cases, only do this if there are no other ". Otherwise I
+ # my run afoul of " that are intended to be there.
+ s/^\"([^\"]+)\"$/$1/;
+ s/^(-[^\"=]+=)\"([^\"]+)\"$/$1$2/;
+ }
if (/^-{1,2}norc$/ ) {
$auto_rc_use = 0;
}
@@ -2020,8 +2039,18 @@ while (defined($_ = $ARGV[0])) {
elsif (/^-diagnostics/) { $diagnostics = 1; }
elsif (/^-dir-report$/) { $aux_out_dir_report = 1; }
elsif (/^-dir-report-$/) { $aux_out_dir_report = 0; }
- elsif (/^-dvi$/) { $dvi_mode = 1; }
- elsif (/^-dvilua$/) { $dvi_mode = 2; }
+ elsif (/^-dvi$/) { $dvi_mode = 1;
+ if ( ($pdf_mode != 2) && ($pdf_mode != 3) ) {
+ # if pdf_mode is not via dvi or pdf, turn it off
+ $pdf_mode = 0;
+ }
+ }
+ elsif (/^-dvilua$/) { $dvi_mode = 2;
+ if ( ($pdf_mode != 2) && ($pdf_mode != 3) ) {
+ # if pdf_mode is not via dvi or pdf, turn it off
+ $pdf_mode = 0;
+ }
+ }
elsif (/^-dvi-$/) { $dvi_mode = 0; }
elsif ( /^-dvilualatex=(.*)$/ ) {
$dvilualatex = $1;
@@ -2101,7 +2130,10 @@ while (defined($_ = $ARGV[0])) {
my $format = $1;
if ($format eq 'dvi' ) {
$dvi_mode = 1;
- $pdf_mode = $postscript_mode = 0;
+ if ( ($pdf_mode != 2) && ($pdf_mode != 3) ) {
+ # if pdf_mode is not via dvi or pdf, turn it off
+ $pdf_mode = 0;
+ }
}
elsif ($format eq 'pdf' ) {
$pdf_mode = 1;
@@ -2117,12 +2149,12 @@ while (defined($_ = $ARGV[0])) {
$preview_mode = 0;
}
elsif (/^-p-$/) { $printout_mode = 0; }
- elsif (/^-pdf$/) { $pdf_mode = 1; }
+ elsif (/^-pdf$/) { $pdf_mode = 1; $dvi_mode = $postscript_mode = 0; }
elsif (/^-pdf-$/) { $pdf_mode = 0; }
elsif (/^-pdfdvi$/){ $pdf_mode = 3; }
- elsif (/^-pdflua$/){ $pdf_mode = 4; }
+ elsif (/^-pdflua$/){ $pdf_mode = 4; $dvi_mode = $postscript_mode = 0; }
elsif (/^-pdfps$/) { $pdf_mode = 2; }
- elsif (/^-pdfxe$/) { $pdf_mode = 5; }
+ elsif (/^-pdfxe$/) { $pdf_mode = 5; $dvi_mode = $postscript_mode = 0; }
elsif (/^-pdflatex$/) {
$pdflatex = "pdflatex %O %S";
$pdf_mode = 1;
@@ -2150,7 +2182,12 @@ while (defined($_ = $ARGV[0])) {
&exit_help("$My_name: unknown print type '$value' in option '$_'");
}
}
- elsif (/^-ps$/) { $postscript_mode = 1; }
+ elsif (/^-ps$/) { $postscript_mode = 1;
+ if ( ($pdf_mode != 2) && ($pdf_mode != 3) ) {
+ # if pdf_mode is not via dvi or pdf, turn it off
+ $pdf_mode = 0;
+ }
+ }
elsif (/^-ps-$/) { $postscript_mode = 0; }
elsif (/^-pv$/) { $preview_mode = 1;
$preview_continuous_mode = 0; # to avoid conflicts
@@ -2391,7 +2428,10 @@ else {
push( @file_list, $file) unless ( exists $excl{$file} );
}
if ( !@file_list ) {
- &exit_help( "No file name specified, and I couldn't find any");
+ &exit_help(
+ "No file name(s) specified on command line, and no files match the\n".
+ "patterns in the default list."
+ );
}
}
@@ -2715,10 +2755,17 @@ foreach $filename ( @file_list )
$failure_msg = ''; # Indicate reason for failure
if ( $do_cd ) {
- ($filename, $path) = fileparse( $filename );
- print "$My_name: Changing directory to '$path'\n"
- if !$silent;
- pushd( dirname_no_tail( $path ) );
+ # Use my fileparse routine rather than the built-in one, otherwise
+ # under msys, a directory separator \ won't be recognized by fileparse.
+ # My routines fix that. At this point, $filename ought to have had its
+ # \s changed to /s. But I won't leave boobytrapped code.
+ # I use fileparseB rather than fileparseA, because fileparseA changes
+ # path './' to '', but fileparseB keeps the fileparse behavior there.
+ # I have to supply an explicit pattern of '' to keep extension in $filename.
+ ($filename, $path) = fileparseB( $filename, '' );
+ print "$My_name: Changing directory to '$path'\n"
+ if !$silent;
+ pushd( dirname_no_tail( $path ) );
}
else {
$path = '';
@@ -2853,7 +2900,7 @@ foreach $filename ( @file_list )
&init_timing1;
if ($compiling_cmd) { Run_subst( $compiling_cmd ); }
- $failure = &rdb_make;
+ $failure = rdb_make();
if ( ( $failure <= 0 ) || $force_mode ) {
rdb_for_some( [keys %one_time], \&rdb_run1 );
}
@@ -2896,7 +2943,7 @@ continue {
push @failed_primaries, $filename;
}
&ifcd_popd;
- if ($show_time) { &show_timing1; };
+ if ($show_time && ! $preview_continuous_mode) { &show_timing1; };
print "\n";
}
close($deps_handle) if ( $deps_handle );
@@ -2981,6 +3028,7 @@ sub init_timing1 {
# Initialize timing for one run.
@timings1 = ();
$processing_time1 = processing_time();
+ $clock1 = Time::HiRes::time();
}
############################
@@ -2997,8 +3045,17 @@ sub init_timing_all {
sub show_timing1 {
# Show timing for one run.
my $processing_time = processing_time() - $processing_time1;
+ my $invoked_time = 0;
+ for (@timings1) {
+ if (/: time = (.*)\s$/) {
+ $invoked_time += $1;
+ }}
print @timings1, "Processing time = ",
- sprintf('%.2f', $processing_time), "\n";
+ sprintf('%.2f', $processing_time),
+ ", of which invoked processes = $invoked_time, other = ",
+ sprintf( '%.2f', $processing_time-$invoked_time ), ".\n";
+ print "Elapsed clock time = ",
+ sprintf( '%.2f', Time::HiRes::time()-$clock1 ), ".\n";
print "Number of rules run = ", 1+$#timings1, "\n";
}
@@ -4194,7 +4251,7 @@ CHANGE:
if ($compiling_cmd) {
Run_subst( $compiling_cmd );
}
- $failure = &rdb_make;
+ $failure = rdb_make();
if ( $MSWin_fudge_break && ($^O eq "MSWin32") ) {
$SIG{BREAK} = $SIG{INT} = 'DEFAULT';
@@ -4381,7 +4438,16 @@ sub process_rc_file {
my ($rc_file, $repeat_reaction) = @_;
my $abs_rc = abs_path($rc_file);
my $ret_code = 0;
- if ( exists $rc_files_read2{$abs_rc} ) {
+ if ( (!-e $rc_file) || ( ! defined $abs_rc ) ) {
+ warn "$My_name: The rc-file '$rc_file' does not exist\n";
+ return 1;
+ }
+ elsif ( -d $rc_file ) {
+ warn "$My_name: The supposed rc-file '$rc_file' is a directory; but it\n",
+ " should be a normal text file\n";
+ return 1;
+ }
+ elsif ( exists $rc_files_read2{$abs_rc} ) {
if ( $repeat_reaction ) {
warn
"$My_name: A user -r option asked me to process an rc file an extra time.\n",
@@ -4407,16 +4473,7 @@ sub process_rc_file {
# current versions of Perl (Nov. 2022), so "do latexmkrc;" for
# latexmkrc in cwd fails.
# So I'll read the rc file and eval its contents.
- if ( !-e $rc_file ) {
- warn "$My_name: The rc-file '$rc_file' does not exist\n";
- return 1;
- }
- elsif ( -d $rc_file ) {
- warn "$My_name: The supposed rc-file '$rc_file' is a directory; but it\n",
- " should be a normal text file\n";
- return 1;
- }
- elsif ( open( my $RCH, "<", $rc_file ) ) {
+ if ( open( my $RCH, "<", $rc_file ) ) {
my $code = '';
# Read all contents of file into $code:
{ local $/ = undef; $code = <$RCH>;}
@@ -5188,7 +5245,7 @@ sub set_names {
#**************************************************
-sub correct_aux_out_files {
+sub correct_locations {
# Deal with situations after a *latex run where files are in different
# directories than expected (specifically aux v. output directory).
# Do minimal fix ups to allow latexmk to analyze dependencies with log
@@ -5279,7 +5336,7 @@ sub correct_aux_out_files {
warn "$My_name: fls file doesn't appear to have been made.\n";
}
}
-} # END correct_aux_out_files
+} # END correct_locations
#-----------------
@@ -6197,28 +6254,68 @@ sub get_log_file {
# ref to array to receive lines,
# ref to hash to receive diagnostic etc informaion )
# 3rd argument is optional
- # Lines are unwrapped and converted to CS_system.
+ # Lines are unwrapped and converted to the CS_system coding system (so
+ # that filenames are suitable for use in file opening calls and on
+ # command line to invoked programs).
+ #
+ # **Complication**: When writing to the .log file, *latex converts
+ # lines longer than a given length (by default, 79) to a sequence
+ # of lines with at most the maximum length.
+ # This subroutine converts such sequences of lines to the original
+ # unwrapped form.
+ # **However**,
+ # 1. The algorithm for line wrapping differs between all of pdflatex,
+ # xelatex, and lualatex. See below for details.
+ # 2. It is possible to write an unwrapped line L1 of a relevant
+ # length followed by a shorter line L2, such that it is impossible
+ # to distingish it from a wrapped line whose contents were those
+ # of L1 concatenated with L2.
+ # So when it is determined that a line is potentially wrapped,
+ # several possibilities for the unwrapped lines are added to the
+ # output array of lines (referenced by the second argument), so that
+ # subsequent scanning of the lines in the subroutine parse_log picks
+ # up the possible diagnostic messages independently of complications
+ # in identifying wrapped lines versus unwrapped lines.
my ($file, $PAlines, $PHinfo) = @_;
-
# Where lines are wrapped at. We'll sometimes override.
local $log_wrap = $log_wrap;
+ # Lines held for wrapping:
+ my @held_lines = ();
+ # Routine for setting wrapped lines; setup by assignment to keep visibility
+ # in the enclosing subroutine, and to access its my-variables:
+ my $Pwrap_sub =
+ sub {
+ for ( my $i=0; $i <= $#held_lines; $i++ ) {
+ my $line = '';
+ for ( my $j=$i; $j <= $#held_lines; $j++ ) {
+ last if ($j-$i > 1 + ($max_log_construct /$log_wrap) );
+ $line .= $held_lines[$j];
+ push @$PAlines, $line;
+ }
+ }
+ @held_lines = ();
+ };
+
+
my $engine = '';
my $tex_distribution = '';
- my ($line_num, $cont, $max_len) = ( 0, 0, 0 );
+ my ($line_num, $max_len) = ( 0, 0 );
my $lua_mode = 0; # Whether to use luatex-specific wrapping method.
- my $byte_wrapping = 1; # *latex does byte wrapping. Modify if we find
- # log file is generated by a tex program that
- # wrapping by Unicode code points.
-
+ my $byte_wrapping = 1; # Assume by default that the wrapping occurs at
+ # a certain number of bytes. Modify this
+ # variable if we find that the log file was
+ # generated by a tex program that does wrapping
+ # at a certain number of Unicode code points.
+ # The details for the different programs (underlying the *latex programs):
# File encoding: pdftex: UTF-8 but with wrapping at $log_wrap BYTES.
# (So individual wrapped lines can be malformed
# UTF-8, but we get valid UTF-8 after unwrapping.)
# luatex: UTF-8 but with wrapping at APPROXIMATELY
# $log_wrap bytes. Rest as pdftex
# xetex: UTF-8 with wrapping at $log_wrap codepoints.
- # So we read file as bytes
+ # So we read file as bytes. Then
# first line gives which program was used and hence whether to wrap
# according to byte or codepoint count.
# wrapping is always performed on the encoded byte strings, but the
@@ -6262,17 +6359,46 @@ sub get_log_file {
}
if ($len > $max_len) { $max_len = $len }
- # Is this line continuation of previous line?
- if ($cont) { $$PAlines[$#$PAlines] .= $_; }
- else { push @$PAlines, $_ }
-
# Is this line wrapped? I.e., is next line to be appended to it?
- # Allow for fact that luatex doesn't reliably wrap at std place, e.g., 79.
- $cont = ($len == $log_wrap)
+ # 2 cases:
+ # pdflatex and xelatex wrap at exactly length $log_wrap
+ # (default 79), and normally append empty line when line
+ # is exactly of the maximimum length (so we shouldn't have a
+ # problem of distinguishing a wrapped line from a line of
+ # length exactly $log_wrap).
+ # lualatex: Wrap at a variable position dependent in a complicated
+ # way on contents. With default settings, wrapping occurs
+ # between 77 and 80 bytes, according to my tests. It preserves
+ # UTF-8 coding, and doesn't split multi-byte UTF-8 coding of
+ # a code point between lines, unlike pdflatex. But details
+ # of exactly where a line is wrapped is not clear.
+ # It is not possible in all cases to distinguish whether
+ # a pair of lines arise from wrapping of a longer line
+ # or from actual writing of a pair of lines.
+ # Determine whether line is potentially wrapped:
+ my $cont = ($len == $log_wrap)
|| ( $lua_mode && ($len >= $log_wrap-2) && ($len <= $log_wrap+1) );
- if ($cont && $diagnostics ) {
- print "====Continuing line $line_num of length $len\n$_\n";
+ if ($cont) {
+ # Save lines that may be continued onto @held_lines
+ print "====Continuing line $line_num of length $len\n$_\n"
+ if $diagnostics;
+ push @held_lines, $_;
+ }
+ elsif (@held_lines) {
+ # No more continuation lines after this:
+ push @held_lines, $_;
+ # Put possibilities for lines before wrapping onto the main
+ # array and then clear @held_lines
+ &$Pwrap_sub();
}
+ else {
+ push @$PAlines, $_;
+ }
+ }
+ if (@held_lines) {
+ # Get here if the last line of the file is of a length that
+ # it may be a wrapped.
+ &$Pwrap_sub();
}
close($fh);
foreach (@$PAlines) { $_ = utf8_to_mine($_); }
@@ -6330,7 +6456,7 @@ sub parse_fls {
# is produced by MS-Windows program (e.g., in MiKTeX) with CRLF line ends,
# but is read by Unix Perl (which treats LF as line end, and preserves CRLF
# in read-in lines):
- # And convert '\'
+ # And convert '\' to '/'
s/\r?\n$//;
s[\\][/]g;
$line_no++;
@@ -6340,10 +6466,17 @@ sub parse_fls {
}
else {
# Deal with MS-Win issues when system CP isn't UTF-8
- if ( ($^O eq 'MSWin32') && /PWD/ && ! is_valid_utf8($_) ) {
- # TeXLive on MSWin produces PWD in CS_system not UTF-8.
- # ???? Later get tex_distribution before analyzing fls file, so do better test.
- print "PWD line not in UTF-8. This is normal for TeXLive. I will handle it.\n";
+ # Situation is that the fls file should be in UTF-8 and
+ # needs to be converted to system CP to fit with latexmk's
+ # convention (determined by file-system calls).
+ # However, under Windows' TeXLive 2021 (and maybe earlier) the
+ # PWD uses the system CP while the rest of the file is UTF-8.
+ # In TeXLive 2022 and 2023, the whole file, including the PWD
+ # line is UTF-8.
+ # So give special treatment to PWD line under Windows.
+ # Also to guard against any other problems, check for non-UTF-8 lines.
+ if ( ($^O eq 'MSWin32') && /PWD/ && ! is_valid_utf8($_) ) { print
+ "PWD line not in UTF-8. This is normal for older TeXLives (2021 and earlier).\n". "I will handle it.\n";
# Assume in CS_system, no change needed.
}
elsif ( ! is_valid_utf8($_) ) {
@@ -6548,8 +6681,12 @@ sub normalize_filename {
sub normalize_filename_abs {
# Convert filename to be either
# absolute path in canonical form
- # or relative to cwd.
- return normalize_filename( abs_path($_[0]) );
+ # or relative to cwd, if possible.
+ # abs_path returns undef if it doesn't know how to get an absolute path.
+ # Just work with the original path in that case.
+ my $abs = abs_path($_[0]);
+ if (! defined $abs) { $abs = $_[0]; }
+ return normalize_filename( $abs );
}
#-----------------------------
@@ -6770,7 +6907,7 @@ sub parse_bcf {
return 2;
}
- show_array( "$My_name: Bibliography file(s) form .bcf file:", @$Pbib_files )
+ show_array( "$My_name: Bibliography file(s) from .bcf file:", @$Pbib_files )
unless $silent;
if (@not_found_bib) {
show_array(
@@ -8175,6 +8312,10 @@ DEP:
" I'll try making it with allowed extensions \n";
foreach my $try_ext ( keys %$Pinput_extensions ) {
my $new_dest = "$file.$try_ext";
+ if (-e $new_dest) {
+ # A file that exists cannot have been the missing file.
+ next;
+ }
&Run_subst( "$make $quote$new_dest$quote" );
if ( -e $new_dest ) {
print "SUCCESS in making '$new_dest'\n",
@@ -8462,31 +8603,27 @@ sub rdb_make {
# no error in the run, the source-file-state is **not** updated
# after the rule is run. Then on a subsequent pass through
# rdb_make's main loop, when the rule is tested for a rerun, any
- # change in source file contents is cause for running the rule
- # again.
- # 8. But after a run giving an error, the state of the generated
- # files (i.e., non-user files) is updated to the current state.
- # This is because the error (under normal circumstances) must be
- # corrected by user action: e.g., correcting a source file, and
- # possibly deleting some corrupted auxiliary file. Files (e.g.,
- # .aux by *latex) generated by the rule just run may well have
- # changed, so updating their state to the current state prevents
- # another run before a user change. If a file was generated by
- # another rule, it won't have changed its state, so updating its
- # state won't matter. But a non-generated file is a
- # user-created file, and a rerun is entailed if its contents
- # changed compared with the start of the run; it's the
- # start-of-run contents that were used in the error run.
- # 9. Note: an error may be caused by a problem with a file
- # generated by another rule, e.g., a bbl file created by bibtex
- # and read by *latex, but with no error reported by bibtex. To
- # correct the error a source file (possibly more than once
- # removed must be changed). That triggers a rerun of the
- # producing rule, and after that the resulting change causes a
- # rerun of the original rule that had the error. E.g.,
- # correcting a .bib file causes bibtex to run, producing a
- # corrected .bbl file, after which *latex is caused to be run.
- # 10. With circular dependencies, there is a choice of which order
+ # change in source file contents since the start of the previous
+ # run is cause for running the rule again.
+ # 8. When there is an error, and force_mode is off, processing of
+ # all further rules is terminated. A problem is then caused for
+ # a later invocation of latexmk (or, in -pvc mode, the next
+ # scanning of source-file status): It may be that a generated
+ # file from a run of some rule changed compared with its status
+ # before the run. Because of the termination of processing
+ # there was no rerun of the rule. New runs should only be made
+ # after a change in the user-written files, which give the
+ # possibility of correcting the error. But on a subsequent
+ # invocation of latexmk it could appear that some rule(s) is/are
+ # out-of-date because of the changed generated files, which
+ # would result in unneeded extra runs, which will tend to
+ # pollute the screen output with misleading downstream
+ # consequences of the original error.
+ # To avoid this problem, after an error-generating round of
+ # compilations, the cached state of generated files is updated
+ # to their state after the compilations. Then only user-caused
+ # file changes will be cause for new runs.
+ # 9. With circular dependencies, there is a choice of which order
# to examine the rules. Generally, primary rules are more
# time-consuming than most others, so the choice of the order of
# examination of rules to check out-of-dateness is to try to
@@ -8495,7 +8632,7 @@ sub rdb_make {
# graphics. These are normally outside a dependency loop, so
# those are left to last. Even if they are inside a dependency
# loop, they need the primary rule to have been run first.
- # 11. After rdb_make is run, all non-user source files are updated
+ # 10. After rdb_make is run, all non-user source files are updated
# to their current state. Rules are considered up-to-date
# here. On a subsequent call to rdb_make, subsequent changes are
# relevant to what is to be done. Note: the states of user
@@ -8625,7 +8762,7 @@ sub rdb_make {
}
if ( ($runs > 0) && ! $too_many_passes ) {
$retry_msg = 0;
- if ( $force_mode || (! $failure) || $switched_primary_output ) {
+ if ( $force_mode || (! $failure) ) {
next PASS;
}
# Get here on failure, without being in force_mode
@@ -8673,7 +8810,31 @@ sub rdb_make {
# but do not change primaries.
# Problem is that %current_primaries gets altered
&rdb_set_rule_net;
- } #End PASS
+ } #End PASS
+
+ if ($failure ) {
+ # Update state of generated source files, but not non-generated,
+ # i.e., user source files. Without that, when there was a termination of
+ # processing because of an error, it could be some generated files changed
+ # without reruns of the relevant rule(s) being triggered; that's because
+ # with an error and with force_mode off, the reruns are blocked.
+ # But that situation would cause reruns either when latexmk is reinvoked
+ # or at the next examination of file state (in -pvc mode). But those runs
+ # (almost certainly) won't improve the error situation in the absence of
+ # a change in user files, since the error is ultimately due to a problem
+ # with a user file.
+ # By updating the state of generated source files, reruns are not
+ # triggered until a user file is changed.
+ # Also turn $$Pout_of_date off for the rules. It may have been set
+ # at some point to trigger a rerun, but that information is now
+ # out-of-date, given that an error occurred.
+ rdb_for_some( [&rdb_accessible()],
+ sub{
+ &rdb_update_gen_files;
+ $$Pout_of_date = 0;
+ }
+ );
+ }
rdb_for_some( [@unusual_one_time], \&rdb_make1 );
@@ -8839,7 +9000,7 @@ sub rdb_make1 {
# Is this needed? Yes; rdb_make1 is called on a sequence of rules and
# if one gives an error, then it provides source files directly or
# indirectly to later rules, which should not be run.
- if ($failure & ! $force_mode) {return;}
+ if ($failure && ! $force_mode) {return;}
# Rule may have been created since last run. Just in case we didn't,
# define $pass{$rule} elsewhere, do it here:
@@ -8922,6 +9083,7 @@ sub rdb_make1 {
warn_running( "Run number $pass{$rule} of rule '$rule'" );
$return = &rdb_run1;
}
+
if ($$Pchanged) {
$newrule_nofile = 1;
$return = 0;
@@ -8972,15 +9134,6 @@ sub rdb_make1 {
if ( !$$Plast_message ) {
$$Plast_message = "Run of rule '$rule' gave a non-zero error code";
}
- # Update state of generated source files, but not non-generated,
- # i.e., user source files. Thus any change in the rule's own
- # generated source files during the run will not cause a
- # rerun. Files generated by another rule should not have been
- # changed during the run, so updating their saved state in this
- # rule is a NOP. But any change in user files since the **start**
- # of the run is a cause for a rerun, so their saved state must not
- # be updated.
- rdb_update_gen_files();
}
foreach ( keys %$PHsource_rules ) {
$$PHsource_rules{$_} = $pass{$_};
@@ -9074,7 +9227,7 @@ sub rdb_run1 {
#
$$Pout_of_date = $$Pout_of_date_user = 0;
if ($latex_like) {
- &correct_aux_out_files;
+ &correct_locations;
run_hooks( 'after_xlatex' );
$return = analyze_latex_run( $return );
run_hooks( 'after_xlatex_analysis' );
@@ -9490,7 +9643,6 @@ sub rdb_rerun_needed {
#
# ???!!!!
# Check all uses!!!!!!!!!!!!!
-
our ($rule, %pass);
local our $PHchanges = shift;
@@ -9628,9 +9780,7 @@ sub rdb_rerun_needed {
}
$$Pno_history = 0; # See comments in definition of %rule_db.
if ($rerun_needed) {
- $$Pout_of_date = 1;
push @{$$PHchanges{rules_to_apply}}, $rule;
- if (@{$$PHchanges{changed_user}}) {$$Pout_of_date_user = 1;}
}
return $rerun_needed;
} #END rdb_rerun_needed
@@ -10500,37 +10650,6 @@ sub Parray {
#************************************************************
-sub analyze_string {
- # Show information about string: utf8 flag or not, length(s!), byte content
- my ($m,$s) = @_;
-
- print "=== $m ";
- my $length = length($s);
- if (utf8::is_utf8($s)) {
- my $encoded = encode( $CS_system, $s, Encode::FB_WARN | Encode::LEAVE_SRC );
- my $len_chars = 0;
- my $len_bytes = 0;
- { no bytes; $len_chars = length($s); }
- { use bytes; $len_bytes = length($s); }
- print "'$encoded':\n",
- "utf8, len = $length; chars = $len_chars; bytes = $len_bytes\n";
- }
- else {
- print "'$s':\n",
- "NOT utf8, len = $length\n";
- }
-
- print join ' ', to_hex($s), "\n";
-}
-
-#----------------------------
-
-sub to_hex {
- return map { sprintf('%4X', $_) } unpack( 'U*', shift );
-}
-
-#==================
-
sub glob_list1 {
# Glob a collection of filenames.
# But no sorting or elimination of duplicates
@@ -10691,24 +10810,30 @@ sub get_checksum_md5 {
# We won't use checksum for directory
return 0;
}
- else {
- open( $input, '<:bytes', $source )
- or return 0;
- my ($base, $path, $ext) = fileparseA( $source );
- $ext =~ s/^\.//;
- if ( exists $hash_calc_ignore_pattern{$ext} ) {
- $ignore_pattern = $hash_calc_ignore_pattern{$ext};
- }
+ open( $input, '<:bytes', $source )
+ or return 0;
+ my ($base, $path, $ext) = fileparseA( $source );
+ $ext =~ s/^\.//;
+ if ( exists $hash_calc_ignore_pattern{$ext} ) {
+ $ignore_pattern = $hash_calc_ignore_pattern{$ext};
}
- if ( defined $ignore_pattern ) {
- while (<$input>) {
- if ( ! /$ignore_pattern/ ){
- $md5->add($_);
+ eval {
+ # Trap any errors that occur during reading, even though the file
+ # was successfully opened.
+ # Such errors have been known to occur under OneDrive on macOS.
+ if ( defined $ignore_pattern ) {
+ while (<$input>) {
+ if ( ! /$ignore_pattern/ ){
+ $md5->add($_);
+ }
}
}
- }
- else {
- $md5->addfile($input);
+ else {
+ $md5->addfile($input);
+ }
+ };
+ if ($@) {
+ warn "$My_name: Attempt to get md5 of '$source' failed. Error=\n$@";
}
close $input;
return $md5->hexdigest();
@@ -11184,7 +11309,12 @@ sub ext_no_period {
sub fileparseA {
# Like fileparse but replace $path for current dir ('./' or '.\') by ''
# Also default second argument to get normal extension.
+ # With msys, change all \ to / in given name since with msys, fileparse
+ # doesn't recognize \ as directory separator.
my $given = $_[0];
+ if ( $^O eq 'msys' ) {
+ $given =~ s[\\][/]g;
+ }
my $pattern = '\.[^\.]*';
if ($#_ > 0 ) { $pattern = $_[1]; }
my ($base_name, $path, $ext) = fileparse( $given, $pattern );
@@ -11198,7 +11328,12 @@ sub fileparseA {
sub fileparseB {
# Like fileparse but with default second argument for normal extension
+ # With msys, change all \ to / in given name since with msys, fileparse
+ # doesn't recognize \ as directory separator.
my $given = $_[0];
+ if ( $^O eq 'msys' ) {
+ $given =~ s[\\][/]g;
+ }
my $pattern = '\.[^\.]*';
if ($#_ > 0 ) { $pattern = $_[1]; }
my ($base_name, $path, $ext) = fileparse( $given, $pattern );
@@ -11551,7 +11686,11 @@ sub cache_good_cwd {
}
# Normalized
if ($normalize_names) {
- $cwd = abs_path($cwd);
+ my $abs = abs_path($cwd);
+ # It's conceivable that abs_path doesn't know how to convert to an
+ # absolute path of a standard normalization. Then it returns undef.
+ # In that case, it's probably good not to try normalizing $cwd.
+ if (defined $abs) { $cwd = $abs; }
}
$cache{cwd} = $cwd;
} # END cache_good_cwd
diff --git a/support/latexmk/latexmk.txt b/support/latexmk/latexmk.txt
index 31bcadb0a5..720022a634 100644
--- a/support/latexmk/latexmk.txt
+++ b/support/latexmk/latexmk.txt
@@ -61,7 +61,7 @@ DESCRIPTION
- 4 April 2023 1
+ 6 November 2023 1
@@ -127,7 +127,7 @@ LATEXMK OPTIONS AND ARGUMENTS ON COMMAND LINE
- 4 April 2023 2
+ 6 November 2023 2
@@ -193,7 +193,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 3
+ 6 November 2023 3
@@ -259,7 +259,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 4
+ 6 November 2023 4
@@ -325,7 +325,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 5
+ 6 November 2023 5
@@ -391,7 +391,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 6
+ 6 November 2023 6
@@ -457,7 +457,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 7
+ 6 November 2023 7
@@ -523,7 +523,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 8
+ 6 November 2023 8
@@ -589,7 +589,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 9
+ 6 November 2023 9
@@ -655,7 +655,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 10
+ 6 November 2023 10
@@ -721,7 +721,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 11
+ 6 November 2023 11
@@ -787,7 +787,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 12
+ 6 November 2023 12
@@ -853,7 +853,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 13
+ 6 November 2023 13
@@ -919,7 +919,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 14
+ 6 November 2023 14
@@ -985,7 +985,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 15
+ 6 November 2023 15
@@ -1051,7 +1051,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 16
+ 6 November 2023 16
@@ -1117,7 +1117,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 17
+ 6 November 2023 17
@@ -1183,7 +1183,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 18
+ 6 November 2023 18
@@ -1249,7 +1249,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 19
+ 6 November 2023 19
@@ -1315,7 +1315,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 20
+ 6 November 2023 20
@@ -1381,7 +1381,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 21
+ 6 November 2023 21
@@ -1447,7 +1447,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 22
+ 6 November 2023 22
@@ -1513,7 +1513,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 23
+ 6 November 2023 23
@@ -1579,7 +1579,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 24
+ 6 November 2023 24
@@ -1645,7 +1645,7 @@ EXAMPLES
- 4 April 2023 25
+ 6 November 2023 25
@@ -1711,7 +1711,7 @@ DEALING WITH ERRORS, PROBLEMS, ETC
- 4 April 2023 26
+ 6 November 2023 26
@@ -1777,7 +1777,7 @@ AUXILIARY AND OUTPUT DIRECTORIES
- 4 April 2023 27
+ 6 November 2023 27
@@ -1843,7 +1843,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 28
+ 6 November 2023 28
@@ -1909,7 +1909,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 29
+ 6 November 2023 29
@@ -1975,7 +1975,7 @@ ALLOWING FOR CHANGE OF OUTPUT FILE TYPE
- 4 April 2023 30
+ 6 November 2023 30
@@ -2041,7 +2041,7 @@ CONFIGURATION/INITIALIZATION (RC) FILES
- 4 April 2023 31
+ 6 November 2023 31
@@ -2107,7 +2107,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 32
+ 6 November 2023 32
@@ -2173,7 +2173,7 @@ FORMAT OF COMMAND SPECIFICATIONS
- 4 April 2023 33
+ 6 November 2023 33
@@ -2239,7 +2239,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 34
+ 6 November 2023 34
@@ -2305,7 +2305,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 35
+ 6 November 2023 35
@@ -2371,7 +2371,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 36
+ 6 November 2023 36
@@ -2437,7 +2437,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 37
+ 6 November 2023 37
@@ -2503,7 +2503,7 @@ LIST OF CONFIGURATION VARIABLES USABLE IN INITIALIZATION FILES
- 4 April 2023 38
+ 6 November 2023 38
@@ -2569,7 +2569,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 39
+ 6 November 2023 39
@@ -2635,7 +2635,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 40
+ 6 November 2023 40
@@ -2701,7 +2701,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 41
+ 6 November 2023 41
@@ -2767,7 +2767,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 42
+ 6 November 2023 42
@@ -2833,7 +2833,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 43
+ 6 November 2023 43
@@ -2899,7 +2899,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 44
+ 6 November 2023 44
@@ -2965,7 +2965,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 45
+ 6 November 2023 45
@@ -3031,7 +3031,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 46
+ 6 November 2023 46
@@ -3097,7 +3097,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 47
+ 6 November 2023 47
@@ -3163,7 +3163,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 48
+ 6 November 2023 48
@@ -3229,7 +3229,7 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
- 4 April 2023 49
+ 6 November 2023 49
@@ -3271,6 +3271,51 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
need to change this.
+ @file_not_found
+ This an array of Perl regular expressions that are patterns to
+ find messages in the .log file from a run of *latex that indi-
+ cate that a file was looked for and not found. To see the cur-
+ rent default set, you should look at the definition of
+ @file_not_found in the latexmk.pl file.
+
+ In the regular expression, the string for the name of the miss-
+ ing file should be enclosed in parentheses. That carries the
+ implication that after latexmk gets a succesful match to the
+ pattern, the variable $1 is set to the filename, which is then
+ picked up by latexmk.
+
+ If you happen to encounter a package that gives a missing file
+ message of a different form than one that matches one of the
+ built-in patterns, you can add another pattern to the array. An
+ example would be
+
+ push @file_not_found, '^No file\\s+(.+)\\s*$';
+
+ The regular expression itself is
+
+
+
+ 6 November 2023 50
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
+ ^Missing file\s+(.+)\s*$
+
+ But the corresponding string specification in the push statement
+ has to have the backslashes doubled.
+
+ This regular expression matches a line that starts with 'No
+ file', then has one or more white space characters, then any
+ number of characters forming the filename, then possible white
+ space, and finally the end of the line. (See documentation on
+ Perl regular expressions for details.)
+
+
$fls_uses_out_dir [0]
This variable determines whether or not the .fls file should be
in the output directory instead of the natural directory, which
@@ -3291,19 +3336,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
of the .fls file to be generated.
-
-
-
-
- 4 April 2023 50
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
$force_mode [0]
If nonzero, continue processing past minor latex errors includ-
ing unrecognized cross references. Equivalent to specifying the
@@ -3325,8 +3357,20 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
After initialization of latexmk and the processing of its com-
mand line, the items in clean_ext are appended to @gener-
- ated_exts. So these two variables have the same meaning (con-
- trary to older versions of latexmk).
+ ated_exts. So these two variables have the same meaning
+
+
+
+ 6 November 2023 51
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
+ (contrary to older versions of latexmk).
The items in @generated_exts are normally extensions of files,
whose base name is the same as the main tex file. But it is
@@ -3359,17 +3403,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
If nonzero, process files regardless of timestamps, and is then
equivalent to the -g option.
-
-
- 4 April 2023 51
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
%hash_calc_ignore_pattern
!!!This variable is for experts only!!!
@@ -3391,6 +3424,18 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
This creates a rule for files with extension .eps about lines to
ignore. The left-hand side is a Perl idiom for setting an item
+
+
+
+ 6 November 2023 52
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
in a hash. Note that the file extension is specified without a
period. The value, on the right-hand side, is a string contain-
ing a regular expression. (See documentation on Perl for how
@@ -3424,18 +3469,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
This specifies the jobname, i.e., the basename that is used for
generated files (.aux, .log, .dvi, .ps, .pdf, etc). If this
-
-
-
- 4 April 2023 52
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
variable is a null string, then the basename is the basename of
the main tex file. (At present, the string in $jobname should
not contain spaces.)
@@ -3458,6 +3491,17 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
latexmk -pdf *.tex
+
+
+ 6 November 2023 53
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
both files will be compiled. The .aux, .log, and .pdf files
will have basenames test1-MSWin32 ante test2-MSWin32 on a MS-
Windows system, test1-darwin and test2-darwin on an OS-X system,
@@ -3490,18 +3534,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
$kpsewhich_show [0]
Whether to show diagnostics about invocations of kpsewhich: the
-
-
-
- 4 April 2023 53
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
command line use to invoke it and the results. These diagnos-
tics are shown if $kpsewhich_show is non-zero or if diagnostics
mode is on. (But in the second case, lots of other diagnostics
@@ -3524,6 +3556,18 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
To do a coordinated setting of all of $dvilualatex, $latex,
$pdflatex, $lualatex, and $xelatex, see the section "Advanced
+
+
+
+ 6 November 2023 54
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
Configuration".
@@ -3555,22 +3599,10 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
add the extension 'asdf to latex_input_extensions. (Naturally
with such an extension, you should have made an appropriate cus-
- tom dependency for latexmk, and should also have done the
-
-
-
- 4 April 2023 54
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
- appropriate programming in the LaTeX source file to enable the
- file to be read. The standard extensions are handled by LaTeX
- and its graphics/graphicx packages.)
+ tom dependency for latexmk, and should also have done the appro-
+ priate programming in the LaTeX source file to enable the file
+ to be read. The standard extensions are handled by LaTeX and
+ its graphics/graphicx packages.)
$latex_silent_switch ["-interaction=batchmode"]
Switch(es) for the LaTeX processing program when silent mode is
@@ -3590,6 +3622,18 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
Under MS-Windows (unlike UNIX/Linux), there is no standard pro-
gram for printing files. But there are ways you can do it. For
example, if you have gsview installed, you could use it with the
+
+
+
+ 6 November 2023 55
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
option "/p":
$lpr = '"c:/Program Files/Ghostgum/gsview/gsview32.exe" /p';
@@ -3622,18 +3666,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
$lualatex ["lualatex %O %S"]
Specifies the command line for the LaTeX processing program that
-
-
-
- 4 April 2023 55
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
is to be used when the lualatex program is called for (e.g., by
the option -lualatex.
@@ -3656,6 +3688,18 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
fault extensions are 'tex', 'pdf', 'jpg, and 'png'.
See details of the %latex_input_extensions for other information
+
+
+
+ 6 November 2023 56
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
that equally applies to %lualatex_input_extensions.
$lualatex_silent_switch ["-interaction=batchmode"]
@@ -3688,18 +3732,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
bail out, rather than rerunning *latex again to resolve cross-
references, etc. The default value covers all normal cases.
-
-
-
- 4 April 2023 56
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
(Note that the "etc" covers a lot of cases where one run of *la-
tex generates files to be read in on a later run.)
@@ -3721,10 +3753,22 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
stitution from "/" to "\", by default.
However there are also programs on MS-Windows for which a back
- slash "\" is interpreted differently than as a directory separa-
- tor; for these the directory separator should be "/". Programs
- with this behavior include all the *latex programs in the
- TeXLive implementation (but not the MiKTeX implementation).
+ slash "\" is interpreted differently than as a directory
+
+
+
+ 6 November 2023 57
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
+ separator; for these the directory separator should be "/".
+ Programs with this behavior include all the *latex programs in
+ the TeXLive implementation (but not the MiKTeX implementation).
Hence if you use TeXLive on MS-Windows, then $MSWin_back_slash
should be set to zero.
@@ -3755,17 +3799,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
- 4 April 2023 57
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
$pdf_mode [0]
If zero, do NOT generate a pdf version of the document. If
equal to 1, generate a pdf version of the document using pdfla-
@@ -3788,6 +3821,17 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
Specifies the command line for the LaTeX processing program in a
version that makes a pdf file instead of a dvi file.
+
+
+ 6 November 2023 58
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
An example use of this variable is to add certain options to the
command line for the program, e.g.,
@@ -3820,18 +3864,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
See details of the %latex_input_extensions for other information
that equally applies to %pdflatex_input_extensions.
-
-
-
- 4 April 2023 58
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
$pdflatex_silent_switch ["-interaction=batchmode"]
Switch(es) for the pdflatex program (specified in the variable
$pdflatex) when silent mode is on.
@@ -3854,6 +3886,18 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
preview, which is quite satisfactory.
WARNING: Problem under MS-Windows: if acroread is used as the
+
+
+
+ 6 November 2023 59
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
pdf previewer, and it is actually viewing a pdf file, the pdf
file cannot be updated. Thus makes acroread a bad choice of
previewer if you use latexmk's previous-continuous mode (option
@@ -3887,17 +3931,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
Note that acroread under MS-Windows (but not UNIX) locks the pdf
file, so the default value is then 3.
-
-
- 4 April 2023 59
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
Arranging to use a command to get a previewer explicitly updated
requires three variables to be set. For example:
@@ -3918,6 +3951,19 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
variable $pdf_update_method. The default value is the one ap-
propriate for gv on a UNIX system.
+
+
+
+
+ 6 November 2023 60
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
$pid_position[1 under UNIX, -1 under MS-Windows]
The variable $pid_position is used to specify which word in
lines of the output from $pscmd corresponds to the process ID.
@@ -3953,17 +3999,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
- 4 April 2023 60
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
$preview_continuous_mode [0]
If nonzero, run a previewer to view the document, and continue
running latexmk to keep .dvi up-to-date. Equivalent to the -pvc
@@ -3982,6 +4017,19 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
mended not to be set from an RC file, otherwise you could waste
lots of paper.
+
+
+
+
+ 6 November 2023 61
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
$print_type = ["auto"]
Type of file to printout: possibilities are "auto", "dvi",
"none", "pdf", or "ps". See the option -print= for the meaning
@@ -4018,18 +4066,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
Note that gv could be used with the -watch option updates its
display whenever the postscript file changes, whereas ghostview
-
-
-
- 4 April 2023 61
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
does not. However, different versions of gv have slightly dif-
ferent ways of writing this option. You can configure this
variable appropriately.
@@ -4049,6 +4085,17 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
in yourself, whenever it is needed.
+
+
+ 6 November 2023 62
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
$ps_previewer_landscape ["start gv -swap %O %S", but start %O %S under
MS-Windows]
The command to invoke a ps-previewer in landscape mode.
@@ -4085,17 +4132,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
The period of inactivity, in minutes, after which pvc mode times
out. This is used if $pvc_timeout is nonzero.
-
-
- 4 April 2023 62
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
$pvc_view_file_via_temporary [1]
The same as $always_view_file_via_temporary, except that it only
applies in preview-continuous mode (-pvc option).
@@ -4115,6 +4151,17 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
correctly treated by the operating system in passing arguments
to programs.)
+
+
+ 6 November 2023 63
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
$rc_report [1]
After initialization, whether to give a list of the RC files
read.
@@ -4150,18 +4197,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
[Comment to technically savvy readers: *latex doesn't actually
need the modified search path. But, surprisingly, dvipdf and
-
-
-
- 4 April 2023 63
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
dvips do, because sometimes graphics files get generated in the
output or aux directories.]
@@ -4181,6 +4216,18 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
Note: On MS Windows, this is clock time. On other OSs it is the
CPU time used (by latexmk and the child processes it invokes).
+
+
+
+ 6 November 2023 64
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
The OS-dependence is because of a limitation of Windows. If you
wish to force the use of clock instead of CPU time, you can set
@@ -4217,17 +4264,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
A value of exactly 0 gives no delay, and typically results in
100% CPU usage, which may not be desirable.
-
-
- 4 April 2023 64
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
$texfile_search [""]
This is an obsolete variable, replaced by the @default_files
variable.
@@ -4245,10 +4281,22 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
while running.
The default under MSWindows (including cygwin), is to set $tm-
- pdir to the value of the first of whichever of the system envi-
- ronment variables TMPDIR or TEMP exists, otherwise to the cur-
- rent directory. Under other operating systems (expected to be
- UNIX/Linux, including OS-X), the default is the value of the
+ pdir to the value of the first of whichever of the system
+
+
+
+ 6 November 2023 65
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
+ environment variables TMPDIR or TEMP exists, otherwise to the
+ current directory. Under other operating systems (expected to
+ be UNIX/Linux, including OS-X), the default is the value of the
system environment variable TMPDIR if it exists, otherwise
"/tmp".
@@ -4282,18 +4330,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
When the variable is non-zero, latexmk at the end of its run
will return a non-zero status code to the operating system if
-
-
-
- 4 April 2023 65
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
any of the files processed gives a warning about problems with
citations or references (i.e., undefined citations or references
or multiply defined references). This is after latexmk has com-
@@ -4312,6 +4348,18 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
ings as errors that require the overall build process to be
aborted. Of course, since multiple runs of *latex are generally
needed to resolve references and citations, what matters is not
+
+
+
+ 6 November 2023 66
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
the warnings on the first run, but the warnings on the last run;
latexmk takes this into account appropriately.
@@ -4348,18 +4396,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
Note about xelatex: latexmk uses xelatex to make an .xdv rather
than .pdf file, with the .pdf file being created in a separate
-
-
-
- 4 April 2023 66
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
step. This is enforced by the use of the -no-pdf option. If %O
is part of the command for invoking xelatex, then latexmk will
insert the -no-pdf option automatically, otherwise you must pro-
@@ -4378,6 +4414,18 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
not been found, and the file is given without an extension.
This typically happens when LaTeX commands of the form \in-
put{file} or \includegraphics{figure}, when the relevant source
+
+
+
+ 6 November 2023 67
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
file does not exist.
In this situation, latexmk searches for custom dependencies to
@@ -4415,17 +4463,6 @@ CUSTOM DEPENDENCIES
A better method is to use the subroutines that allow convenient manipu-
lations of the custom dependency list. These are
-
-
- 4 April 2023 67
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
add_cus_dep( fromextension, toextension, must, subroutine )
remove_cus_dep( fromextension, toextension )
show_cus_dep()
@@ -4443,6 +4480,18 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
must: If non-zero, the file from which we are converting must exist,
if it doesn't exist latexmk will give an error message and exit
unless the -f option is specified. If must is zero and the file
+
+
+
+ 6 November 2023 68
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
we are converting from doesn't exist, then no action is taken.
Generally, the appropriate value of must is zero.
@@ -4480,18 +4529,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
rule is invoked, with an argument that is the base name of the files in
question. Simple cases just involve a subroutine invoking an external
program; this can be done by following the templates below, even by
-
-
-
- 4 April 2023 68
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
those without knowledge of the Perl programming language. Of course,
experts could do something much more elaborate.
@@ -4509,6 +4546,18 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
Note for advanced usage: The operating system's environment variable
TEXINPUTS can be used to specify a search path for finding files by la-
tex etc. Correspondingly, when a missing file is reported, latexmk
+
+
+
+ 6 November 2023 69
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
looks in the directories specified in TEXINPUTS as well as in the cur-
rent directory, to find a source file from which an instance of a cus-
tom dependency can be used to make the missing file.
@@ -4546,18 +4595,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
of the form of a variable name, $_[0] in this case, is to be substi-
tuted by its value.
-
-
-
- 4 April 2023 69
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
If the return value of the subroutine is non-zero, then latexmk will
assume an error occurred during the execution of the subroutine. In
the above example, no explicit return value is given, and instead the
@@ -4575,6 +4612,18 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
}
Note 1: In the command lines given in the system commands in the above
+
+
+
+ 6 November 2023 70
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
examples, double quotes have been inserted around the file names (im-
plemented by '\"' in the Perl language). They immunize the running of
the program against special characters in filenames. Very often these
@@ -4613,17 +4662,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
remove_cus_dep( 'fig', 'eps' );
-
-
- 4 April 2023 70
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
If you have complicated sets of custom dependencies, you may want to
get a listing of the custom dependencies. This is done by using the
line
@@ -4639,13 +4677,25 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
file. This method has been available since very old versions of la-
texmk, and many examples can be found, e.g., on the web.
- However in later versions of latexmk the internal structure of the im-
- plementation of its "rules" for the steps of processing, including cus-
- tom dependencies, became much more powerful. The function implementing
- a custom dependency is executed within a special context where a number
- of extra variables and subroutines are defined. Publicly documented
- ones, intended to be long-term stable, are listed below, under the
- heading "Variables and subroutines for processing a rule".
+ However in later versions of latexmk the internal structure of the
+
+
+
+ 6 November 2023 71
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
+ implementation of its "rules" for the steps of processing, including
+ custom dependencies, became much more powerful. The function imple-
+ menting a custom dependency is executed within a special context where
+ a number of extra variables and subroutines are defined. Publicly doc-
+ umented ones, intended to be long-term stable, are listed below, under
+ the heading "Variables and subroutines for processing a rule".
Examples of their use is given in the following examples, concerning
multiple index files and glossaries.
@@ -4678,18 +4728,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
function to simplify the definitions to use a single function:
add_cus_dep( 'ndx', 'nnd', 0, 'dx2nd' );
-
-
-
- 4 April 2023 71
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
add_cus_dep( 'adx', 'and', 0, 'dx2nd' );
sub dx2nd {
return Run_subst( "makeindex -o %D %S" );
@@ -4706,6 +4744,18 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
push @generated_exts, 'ndx', 'nnd', 'adx', 'and';
This last example uses the command specification in $makeindex, and so
+
+
+
+ 6 November 2023 72
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
any customization you have made for the standard index also applies to
your extra indexes.
@@ -4744,18 +4794,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
}
This method still works, and is almost equivalent to the code given
-
-
-
- 4 April 2023 72
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
earlier that used the add_cus_dep subroutine. However, the old method
doesn't delete any previous custom-dependency for the same conversion.
So the new method is preferable.
@@ -4771,8 +4809,20 @@ Advanced configuration: Some extra resources and advanced tricks
See also the section DEALING WITH ERRORS, PROBLEMS, ETC. See also the
examples in the directory example_rcfiles in the latexmk distributions.
- Even if none of the examples apply to your case, they may give you use-
- ful ideas
+ Even if none of the examples apply to your case, they may give you
+
+
+
+ 6 November 2023 73
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
+ useful ideas
Utility subroutines
@@ -4809,20 +4859,8 @@ Advanced configuration: Some extra resources and advanced tricks
nal" -- see the section FORMAT OF COMMAND SPECIFICATIONS.
When you use a subroutine for processing a rule, all the possibilities
- of Perl programming are available, of course. In addition, some of
-
-
-
- 4 April 2023 73
-
-
-
-
-
-LATEXMK(1) General Commands Manual LATEXMK(1)
-
-
- latexmk's internal variables and subroutines are available. The ones
+ of Perl programming are available, of course. In addition, some of la-
+ texmk's internal variables and subroutines are available. The ones
listed below are intended to be available to (advanced) users, and
their specifications will generally have stability under upgrades. Gen-
erally, the variables should be treated as read-only: Changing their
@@ -4837,17 +4875,87 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
This gives the name of the primary source file. Note the double
dollar signs.
+
+
+
+
+ 6 November 2023 74
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
$$Pdest
This gives the name of the main output file if any. Note the
double dollar signs.
+
+ pushd( path ), popd()
+ These subroutines are used when it is needed to temporarily
+ change the working directory, as in
+
+ pushd( 'some_directory' );
+ ... Processing done with 'some_directory' as the working
+ directory
+ popd()
+
+ They perform exactly the same function as the commands of the
+ same names in operating system command shells like bash on Unix,
+ and cmd.exe on the Windows.
+
+
+ rdb_add_generated( file, ... )
+ This subroutine is to be used in the context of a rule, that is,
+ from within a subroutine that is carrying out processing of a
+ rule. Such is the case for the subroutine implementing a custom
+ dependency, or the subroutine invoked by using the "internal"
+ keyword in the command specification like that in the variable
+ $latex.
+
+ Its arguments are a sequence of filenames which are generated
+ during the running of the rule. The names might arise from an
+ analysis of the results of the run, e.g., in a log file, or from
+ knowledge of properties of the specific rule. Calling
+ rdb_add_generated with these filenames ensures that these files
+ are flagged as generated by the rule in latexmk's internal data
+ structures. Basically, no action is taken if the files have al-
+ ready been flagged as generated.
+
+ A main purpose of using this subroutine is for the situation
+ when a generated file is also the source file for some rule, so
+ that latexmk can correctly link the dependency information in
+ its network of rules.
+
+ Note: Unlike some other subroutines in this section, there is no
+ argument for a rule for rdb_add_generated. Instead, the subrou-
+ tine is to be invoked during the processing of a rule when la-
+ texmk has set up an appropriate context (i.e., appropriate vari-
+ ables). In contrast, subroutines with a rule argument can be
+ used also outside a rule context.
+
+
rdb_ensure_file( $rule, file )
- This a subroutine that ensures that the given file is among the
- source files for the specified rule. It is typically used when,
- during the processing of a rule, it is known that a particular
- extra file is among the dependencies that latexmk should know,
- but its default methods don't find the dependency. Almost always
- the first argument is the name of the rule currently being pro-
+ This subroutine ensures that the given file is among the source
+ files for the specified rule. It is typically used when, during
+ the processing of a rule, it is known that a particular extra
+ file is among the dependencies that latexmk should know, but its
+
+
+
+ 6 November 2023 75
+
+
+
+
+
+LATEXMK(1) General Commands Manual LATEXMK(1)
+
+
+ default methods don't find the dependency. Almost always the
+ first argument is the name of the rule currently being pro-
cessed, so it is then appropriate to specify it by $rule.
For examples of its use, see some of the files in the directory
@@ -4857,16 +4965,34 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
where latexmk's normal processing fails to detect certain extra
source files.
+ Note that rdb_ensure_file only has one filename argument, unlike
+ other subroutines in this section. If you want to apply its ac-
+ tion to multiple files, you will need one call to rdb_en-
+ sure_file for each file.
+
+
rdb_remove_files( $rule, file, ... )
- This subroutine removes one or more files from the dependency
+ This subroutine removes one or more files from the dependency
list for the given rule.
+
+ rdb_remove_generated( file, ... )
+ This subroutine is to be used in the context of a rule, that is,
+ from within a subroutine that is carrying out processing of a
+ rule. It performs the opposite action to rdb_add_generated.
+ Its effect is to ensure that the given filenames are not listed
+ in latexmk's internal data structures as being generated by the
+ rule.
+
+
rdb_list_source( $rule )
This subroutine returns the list of source files (i.e., the de-
pendency list) for the given rule.
+
rdb_set_source( $rule, file, ... )
+
rdb_set_source( $rule, @files )
This subroutine sets the dependency list for the given rule to
be the specified files. Files that are already in the list have
@@ -4876,10 +5002,16 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
dency list.
+ Run_subst( command_spec )
+ This subroutine runs the command specified by command_spec. The
+ specification is a string in the format listed in the section
+ "Format of Command Specifications". An important action of the
+ Run_subst is to make substitutions of placeholders, e.g., %S and
+ %D for source and destination files; these get substituted
- 4 April 2023 74
+ 6 November 2023 76
@@ -4888,14 +5020,8 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
LATEXMK(1) General Commands Manual LATEXMK(1)
- Run_subst( command_spec )
- This subroutine runs the command specified by command_spec. The
- specification is a string in the format listed in the section
- "Format of Command Specifications". An important action of the
- Run_subst is to make substitutions of placeholders, e.g., %S and
- %D for source and destination files; these get substituted be-
- fore the command is run. In addition, the command after substi-
- tution is printed to the screen unless latexmk is running in
+ before the command is run. In addition, the command after sub-
+ stitution is printed to the screen unless latexmk is running in
silent mode.
@@ -4942,10 +5068,16 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
Note that when '%O' appears after the added option, as here, options
provided on the command line to latexmk can override the supplied one.
+ A more general command line can be set up by using the placeholder '%C'
+ in CMD_SPEC. The '%C' is substituted by the basic name of the command,
+ i.e., whichever of 'latex', 'pdflatex', etc is appropriate. (More than
+ one occurrence of '%C' is allowed.) For example to use the develop-
+ ment/pre-release versions of latex, etc, which have names, 'latex-dev',
+ 'pdflatex-dev', etc, you could use
- 4 April 2023 75
+ 6 November 2023 77
@@ -4954,13 +5086,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
LATEXMK(1) General Commands Manual LATEXMK(1)
- A more general command line can be set up by using the placeholder '%C'
- in CMD_SPEC. The '%C' is substituted by the basic name of the command,
- i.e., whichever of 'latex', 'pdflatex', etc is appropriate. (More than
- one occurrence of '%C' is allowed.) For example to use the develop-
- ment/pre-release versions of latex, etc, which have names, 'latex-dev',
- 'pdflatex-dev', etc, you could use
-
set_tex_cmds( '%C-dev %O %S' );
This results in $latex = 'latex-dev %O %S', etc. (The pre-release pro-
@@ -5008,25 +5133,25 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
suitable Makefile is like
.PHONY : FORCE_MAKE
+ all : try.pdf
+ %.pdf : %.tex FORCE_MAKE
+ latexmk -pdf -dvi- -ps- $<
+ (Note: the last line must be introduced by a tab for the Makefile to
+ function correctly!) Naturally, if making try.pdf from its associated
+ LaTeX file try.tex were the only task to be performed, a direct use of
- 4 April 2023 76
+ 6 November 2023 78
-LATEXMK(1) General Commands Manual LATEXMK(1)
+LATEXMK(1) General Commands Manual LATEXMK(1)
- all : try.pdf
- %.pdf : %.tex FORCE_MAKE
- latexmk -pdf -dvi- -ps- $<
- (Note: the last line must be introduced by a tab for the Makefile to
- function correctly!) Naturally, if making try.pdf from its associated
- LaTeX file try.tex were the only task to be performed, a direct use of
latexmk without a Makefile would normally be better. The benefit of
using a Makefile for a LaTeX document would be in a larger project,
where lines such as the above would be only be a small part of a larger
@@ -5074,10 +5199,17 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
dles automatic dependency tracking of C source files.
After each run of latexmk, dependency information is put in a file in
+ the .deps subdirectory. The Makefile causes these dependency files to
+ be read by make, which now has the full dependency information for each
+ target .pdf file. To make things less trivial it is specificed that
+ two files document1.pdf and document2.pdf are the targets. The depen-
+ dency files are .deps/document1.pdfP and .deps/document2.pdfP.
+
+ There is now no need for the phony prerequisite for the rule to make
- 4 April 2023 77
+ 6 November 2023 79
@@ -5086,13 +5218,6 @@ LATEXMK(1) General Commands Manual LATEXMK(1)
LATEXMK(1) General Commands Manual LATEXMK(1)
- the .deps subdirectory. The Makefile causes these dependency files to
- be read by make, which now has the full dependency information for each
- target .pdf file. To make things less trivial it is specificed that
- two files document1.pdf and document2.pdf are the targets. The depen-
- dency files are .deps/document1.pdfP and .deps/document2.pdfP.
-
- There is now no need for the phony prerequisite for the rule to make
.pdf files from .tex files. But I have added a rule to make .pdf files
from .fig files produced by the xfig program; these are commonly used
for graphics insertions in LaTeX documents. Latexmk is arranged to
@@ -5140,24 +5265,23 @@ NON_ASCII CHARACTERS IN FILENAMES, RC FILES, ETC
names on Windows, even though there were no corresponding problems on
macOS and Linux. These problems are corrected in the present version.
+ DETAILS TO BE FILLED IN
- 4 April 2023 78
-
+SEE ALSO
+ latex(1), bibtex(1), lualatex(1), pdflatex(1), xelatex(1).
-LATEXMK(1) General Commands Manual LATEXMK(1)
+ 6 November 2023 80
- DETAILS TO BE FILLED IN
-SEE ALSO
- latex(1), bibtex(1), lualatex(1), pdflatex(1), xelatex(1).
+LATEXMK(1) General Commands Manual LATEXMK(1)
BUGS (SELECTED)
@@ -5186,12 +5310,12 @@ THANKS TO
dard form to avoid being harvested too easily.)
AUTHOR
- Current version, by John Collins (Version 4.80). Report bugs etc to
+ Current version, by John Collins (Version 4.81). Report bugs etc to
his e-mail (jcc8 at psu.edu).
Released version can be obtained from CTAN:
<http://www.ctan.org/pkg/latexmk/>, and from the author's website
- <http://www.personal.psu.edu/jcc8/latexmk/>.
+ <https://www.cantab.net/users/johncollins/latexmk/>.
Modifications and enhancements by Evan McLean (Version 2.0)
Original script called "go" by David J. Musliner (RCS Version 3.2)
@@ -5209,6 +5333,14 @@ AUTHOR
- 4 April 2023 79
+
+
+
+
+
+
+
+
+ 6 November 2023 81
diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
index 5c50be51f6..d4c3f95a4f 100644
--- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
@@ -49,6 +49,7 @@ $mirrors = {
},
'Korea' => {
'http://ftp.ktug.org/tex-archive/' => 1,
+ 'https://ftp.kaist.ac.kr/pub/tex-archive/' => 1,
'https://kr.mirrors.cicku.me/ctan/' => 1,
'https://lab.uklee.pe.kr/tex-archive/' => 1,
'https://mirror.kakao.com/CTAN/' => 1,
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index 81b712c9b5..2793da89d6 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
@@ -26,7 +26,7 @@ depend container_split_src_files/1
depend frozen/0
depend minrelease/2016
depend release/2023
-depend revision/68742
+depend revision/68744
name 00texlive.image
category TLCore
@@ -4800,7 +4800,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd
name 00texlive.installer
category TLCore
-revision 68742
+revision 68744
shortdesc TeX Live standalone installer package
longdesc This package defines the files to go into the installer
longdesc archives (install-tl-unx.tar.gz, install-tl.zip) built by the
@@ -316586,7 +316586,7 @@ docfiles size=376
name texlive-scripts
category TLCore
-revision 68742
+revision 68744
shortdesc TeX Live infrastructure programs
longdesc Includes install-tl, tl-portable, rungs, etc.; not needed for
longdesc tlmgr to run but still ours. Not included in tlcritical.
@@ -316594,10 +316594,10 @@ depend texlive-scripts.ARCH
depend texlive.infra
execute addMap mathpple.map
postaction shortcut type=menu name="TeX Live command-line" cmd=TEXDIR/tlpkg/installer/tl-cmd.bat
-containersize 114240
-containerchecksum be46ed48111cc31cea864f5dce36fadc0a40b03a44b585a9dea444a0a3ab7ab228107a64b340bd6744162cc4de3126b6b7411d3febbd5323065a4edba83e01b7
-doccontainersize 428596
-doccontainerchecksum bd302f4b543682a6e222fbc4425e6007a95bf57f5499469d7654db52797fa0529fa6f84961e9851428ad9002d1582d0c222005b407626f1a1edc0a1eeb4c3d7a
+containersize 114252
+containerchecksum 9daf7a2b4995282a640a0834900bbbd4df4127fbc0ca8470c0d02f7b8120d877de3f90ffb101593b6b5cf876de74c94c9837b3f245b496bc475cd2e5a833c781
+doccontainersize 428680
+doccontainerchecksum 04a1f0696e048113a2486bfc1e27213eb23c7c24f3d521eaf3ad4c965669b376bc3c37e8f505bac0cff03ed44ccc9967ceaebdfe398b4a1350c3270ff29e28fb
docfiles size=550
doc.html
texmf-dist/doc/man/man1/fmtutil-sys.1
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index e97dcb13c9..0bd3af6df8 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-dc9101746a683fe15decaf6787a5b93c texlive.tlpdb
+8f5ac2897708c751f143bad146cd8d60 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index ec96b504f0..3ec2b25968 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-d1c11d8dd9103eade5e7d9b2362a32da1423e6755bc5c2889a1a53f4f441eef376e45b32698080b6c67236d17aa378c297ee4b44c2baa479302c770382e1b2c8 texlive.tlpdb
+aa326226a8d963ee5a6988b33f8e9b50406d64021857283b29aa27c1516eae162fca0d057a8fcb9d4d67312ac6204225d57799f18a0cb37c86013c0a502124fc texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index a05a4c8adf..c9aeeff2f9 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
@@ -1,11 +1,11 @@
-----BEGIN PGP SIGNATURE-----
-iQEzBAEBCgAdFiEE2PL4YFeoV+QqiBBqTOGHfhlDjHAFAmVINywACgkQTOGHfhlD
-jHAK1wf/ekhFn7k5yTRuiuPheCFbMeVS2OI5p8dLyb2meJmTfNeE0qIi2lQNxLYy
-LoVziYbJRPdC5YUmtAoFaqBqDzDqaPos8dwX1xEqaREh18FpzQxAK9sYS3LuLppl
-7tTIGWA50YhKREeHefgarrR9BawORkovxEqtM+OhDJgvWI+fTDXSHnAb0bqyxSrg
-jOoxHK7H4244p2jYzNgfQY+SpzqER5Sh6XrXFilOQoYZNWrh2gMpkh33rEirQPYV
-YsapUCM+3YG38WIymTo54zj9bQAe5dEBNSoiSLiHKtwiHGFozn1tpcWnTiXxORcr
-wKuITOFwNA9TuBQabOKpE0mYZ1IJcA==
-=9RsX
+iQEzBAEBCgAdFiEE2PL4YFeoV+QqiBBqTOGHfhlDjHAFAmVJiF0ACgkQTOGHfhlD
+jHBSLQf/WsGlLHiyR058mXOy2zVn2haUyZ+LyPFy5w6zUFUX1xQfaKP8uyBrFphp
+ie+B/mZMht69lnrY6gj6Iotowsc2yp8Rz4Bjb9DtoZcMFVnrsHUEJo6rFCNxzFbP
+z1SQbnW4Jr/dtqzKDAWHPRBkQjL82+5ZKsvxQwwNq1bDSuUneNsR7oY/Cdb453/a
+t2vTmrTBr/6hEDQDID5PPrm7TuLl/sUYKEwWrlxowjtzLpGzovc9Ic82Rb+HO2Sw
+xtKVZe8MvWDkz0bWgb2IA8E1ko3fi06IYhGexaZIcio8wBbT4ubTy+Gmut3xSY+f
+2etdUWbEtVGf22ujlcnNZukAQ54qJw==
+=/0Fa
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index 1bc69bd1f8..d192450fc9 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
Binary files differ
diff --git a/timestamp b/timestamp
index 0c786cb98e..e231de6743 100644
--- a/timestamp
+++ b/timestamp
@@ -2,4 +2,4 @@
# The source CTAN of this site's material:
dante.ctan.org
# The year-month-day-hour-minute of this site's material:
-2023-11-07-02-02
+2023-11-08-02-02