summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-03-02 03:03:38 +0000
committerNorbert Preining <norbert@preining.info>2022-03-02 03:03:38 +0000
commit1769d3d8842ef66919943128931e647de9756adb (patch)
tree46df94f2204cba9384cccf5ab6ca8cbbcd49bcad
parent3e9a44ea155766214d8657ed79db2206592b6e8e (diff)
CTAN sync 202203020303
-rw-r--r--FILES.byname701
-rw-r--r--FILES.byname.gzbin2432869 -> 2432939 bytes
-rw-r--r--FILES.last07days760
-rw-r--r--info/install-latex-guide-zh-cn/appendix/updateinfo.tex6
-rw-r--r--info/install-latex-guide-zh-cn/appendix/wsladdition.tex2
-rw-r--r--info/install-latex-guide-zh-cn/chapter/editor.tex57
-rw-r--r--info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdfbin748161 -> 754326 bytes
-rw-r--r--language/korean/kotex-oblivoir/README11
-rw-r--r--language/korean/kotex-oblivoir/doc/ChangeLog (renamed from language/korean/kotex-oblivoir/ChangeLog)17
-rw-r--r--language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.pdfbin247256 -> 256845 bytes
-rw-r--r--language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.tex161
-rw-r--r--language/korean/kotex-oblivoir/tex/memhangul-common/fapapersize.sty63
-rw-r--r--language/korean/kotex-oblivoir/tex/memhangul-common/memhangul-common.sty197
-rw-r--r--language/korean/kotex-oblivoir/tex/memhangul-common/oblivoir-misc.sty122
-rw-r--r--language/korean/kotex-oblivoir/tex/oblivoir-utf.cls2
-rw-r--r--language/korean/kotex-oblivoir/tex/oblivoir-xl.cls2
-rw-r--r--language/korean/kotex-oblivoir/tex/oblivoir.cls4
-rw-r--r--language/korean/kotex-oblivoir/tex/xoblivoir.cls2
-rw-r--r--macros/generic/markdown/VERSION2
-rw-r--r--macros/generic/markdown/markdown.dtx6
-rw-r--r--macros/generic/markdown/markdown.html2
-rw-r--r--macros/generic/markdown/markdown.pdfbin761101 -> 760842 bytes
-rw-r--r--macros/latex/contrib/bfh-ci/README.md6
-rw-r--r--macros/latex/contrib/bfh-ci/doc/DEMO-BFHBeamer-Sidebar.pdfbin50515 -> 50693 bytes
-rw-r--r--macros/latex/contrib/bfh-ci/doc/DEMO-BFHBeamer.pdfbin40747 -> 40706 bytes
-rw-r--r--macros/latex/contrib/bfh-ci/doc/DEMO-BFHFactsheet.pdfbin50171 -> 50238 bytes
-rw-r--r--macros/latex/contrib/bfh-ci/doc/DEMO-BFHLetter.pdfbin13660 -> 13621 bytes
-rw-r--r--macros/latex/contrib/bfh-ci/doc/DEMO-BFHProjektProposal.pdfbin54484 -> 54484 bytes
-rw-r--r--macros/latex/contrib/bfh-ci/doc/DEMO-BFHPub.pdfbin92294 -> 92276 bytes
-rw-r--r--macros/latex/contrib/bfh-ci/doc/DEMO-BFHSciPoster.pdfbin46617 -> 46617 bytes
-rw-r--r--macros/latex/contrib/bfh-ci/doc/DEMO-BFHThesis.pdfbin41461 -> 41456 bytes
-rw-r--r--macros/latex/contrib/bfh-ci/tex/beamercolorthemeBFH.sty4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/beamerfontthemeBFH.sty4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/beamerinnerthemeBFH.sty4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/beamerouterthemeBFH-sidebar.sty4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/beamerouterthemeBFH.sty4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/beamerthemeBFH.sty4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfh-a0paper.clo4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfh-a1paper.clo4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfh-a2paper.clo4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfh-a3paper.clo4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfh-a4paper.clo4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfh-a5paper.clo4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfh-a6paper.clo6
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfh-beamerarticle.cfg4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfh-factsheet.cfg4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfh-layout-boxes.cfg4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfh-layout-listings.cfg4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfh-layout-rules.cfg4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfh-layout-tabular.cfg4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfh-layout-terminal.cfg13
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfh-projectproposal.cfg4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfhbeamer.cls6
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfhcolors.sty4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfhfonts.sty4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfhlayout.sty4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfhletter.sty4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfhlettersize9.5pt.clo2
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfhmodule.sty4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfhpub.cls4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfhsciposter.cls4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfhthesis.cls4
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfhtranslations-english.trsl2
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfhtranslations-french.trsl2
-rw-r--r--macros/latex/contrib/bfh-ci/tex/bfhtranslations-german.trsl2
-rw-r--r--macros/latex/contrib/create-theorem/create-theorem-doc.pdfbin111285 -> 112139 bytes
-rw-r--r--macros/latex/contrib/create-theorem/create-theorem-doc.tex19
-rw-r--r--macros/latex/contrib/create-theorem/create-theorem.sty39
-rw-r--r--macros/latex/contrib/crefthe/crefthe-doc.pdfbin115616 -> 116473 bytes
-rw-r--r--macros/latex/contrib/crefthe/crefthe-doc.tex5
-rw-r--r--macros/latex/contrib/crefthe/crefthe.sty35
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx14
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin578235 -> 578236 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.tex6
-rw-r--r--macros/latex/contrib/mattens/README16
-rw-r--r--macros/latex/contrib/mattens/mattens.dtx342
-rw-r--r--macros/latex/contrib/mattens/mattens.ins14
-rw-r--r--macros/latex/contrib/mattens/mattens.pdfbin541450 -> 481295 bytes
-rw-r--r--macros/latex/contrib/mattens/mattens_sample.pdfbin194705 -> 233282 bytes
-rw-r--r--macros/latex/contrib/tabularray/README.txt (renamed from macros/latex/contrib/tabularray/README)2
-rw-r--r--macros/latex/contrib/tabularray/tabularray-2021.sty3152
-rw-r--r--macros/latex/contrib/tabularray/tabularray.pdfbin760910 -> 874353 bytes
-rw-r--r--macros/latex/contrib/tabularray/tabularray.sty909
-rw-r--r--macros/latex/contrib/tabularray/tabularray.tex482
-rw-r--r--support/TeX4ht/source/ChangeLog9
-rw-r--r--systems/doc/pdftex/manual/ChangeLog43
-rw-r--r--systems/doc/pdftex/manual/Makefile7
-rw-r--r--systems/doc/pdftex/manual/pdftex-a.pdfbin948745 -> 1002639 bytes
-rw-r--r--systems/doc/pdftex/manual/pdftex-syntax.txt23
-rw-r--r--systems/doc/pdftex/manual/pdftex-t.tex1601
-rw-r--r--systems/win32/miktex/tm/packages/next/pr.ini8
-rw-r--r--systems/win32/miktex/tm/packages/pr.ini8
-rw-r--r--timestamp2
-rw-r--r--usergrps/usergrps/bg.html24
-rw-r--r--usergrps/usergrps/br.html24
-rw-r--r--usergrps/usergrps/cn.html24
-rw-r--r--usergrps/usergrps/cz.html24
-rw-r--r--usergrps/usergrps/de.html24
-rw-r--r--usergrps/usergrps/dk.html24
-rw-r--r--usergrps/usergrps/ee.html24
-rw-r--r--usergrps/usergrps/es.html24
-rw-r--r--usergrps/usergrps/esc.html24
-rw-r--r--usergrps/usergrps/fr.html24
-rw-r--r--usergrps/usergrps/gr.html24
-rw-r--r--usergrps/usergrps/hu.html24
-rw-r--r--usergrps/usergrps/ie.html24
-rw-r--r--usergrps/usergrps/index.html9
-rw-r--r--usergrps/usergrps/is.html24
-rw-r--r--usergrps/usergrps/it.html24
-rw-r--r--usergrps/usergrps/kh.html24
-rw-r--r--usergrps/usergrps/kr.html24
-rw-r--r--usergrps/usergrps/labels.pdfbin9814 -> 9813 bytes
-rw-r--r--usergrps/usergrps/lt.html24
-rw-r--r--usergrps/usergrps/lugs.html9
-rw-r--r--usergrps/usergrps/lugs.pdfbin48900 -> 48898 bytes
-rw-r--r--usergrps/usergrps/mx.html24
-rw-r--r--usergrps/usergrps/nl.html24
-rw-r--r--usergrps/usergrps/no.html24
-rw-r--r--usergrps/usergrps/pl.html24
-rw-r--r--usergrps/usergrps/pt.html24
-rw-r--r--usergrps/usergrps/us.html24
-rw-r--r--usergrps/usergrps/uy.html24
-rw-r--r--usergrps/usergrps/vn.html24
-rw-r--r--usergrps/usergrps/za.html24
124 files changed, 6559 insertions, 3107 deletions
diff --git a/FILES.byname b/FILES.byname
index aa40578dd5..7d7b65e15b 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -5212,7 +5212,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
-2022/02/28 | 249056 | FILES.last07days
+2022/03/01 | 242273 | 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
@@ -182596,24 +182596,24 @@
2020/01/02 | 19176 | info/impatient/xmptext.tex
2020/01/06 | 30539045 | info/impatient.zip
1997/10/22 | 46895 | info/installing_psnfss_on_emtex.pdf
-2021/07/13 | 4452 | info/install-latex-guide-zh-cn/appendix/mirror.tex
-2020/11/14 | 2463 | info/install-latex-guide-zh-cn/appendix/offline.tex
-2021/12/01 | 5037 | info/install-latex-guide-zh-cn/appendix/updateinfo.tex
-2020/11/14 | 3610 | info/install-latex-guide-zh-cn/appendix/wsladdition.tex
-2021/12/01 | 23144 | info/install-latex-guide-zh-cn/chapter/editor.tex
+2021/07/14 | 4452 | info/install-latex-guide-zh-cn/appendix/mirror.tex
+2020/07/16 | 2463 | info/install-latex-guide-zh-cn/appendix/offline.tex
+2022/03/01 | 5142 | info/install-latex-guide-zh-cn/appendix/updateinfo.tex
+2022/03/01 | 3612 | info/install-latex-guide-zh-cn/appendix/wsladdition.tex
+2022/03/01 | 25306 | info/install-latex-guide-zh-cn/chapter/editor.tex
2021/07/04 | 5339 | info/install-latex-guide-zh-cn/chapter/macos.tex
2021/10/28 | 3833 | info/install-latex-guide-zh-cn/chapter/overleaf.tex
-2021/06/01 | 2526 | info/install-latex-guide-zh-cn/chapter/preface.tex
-2021/09/03 | 14839 | info/install-latex-guide-zh-cn/chapter/ubuntu.tex
+2021/05/07 | 2526 | info/install-latex-guide-zh-cn/chapter/preface.tex
+2021/09/05 | 14839 | info/install-latex-guide-zh-cn/chapter/ubuntu.tex
2021/07/31 | 20834 | info/install-latex-guide-zh-cn/chapter/windows.tex
-2021/09/03 | 12115 | info/install-latex-guide-zh-cn/chapter/wsl.tex
-2021/12/01 | 748161 | info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf
-2020/11/14 | 3201 | info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.tex
-2020/11/14 | 19039 | info/install-latex-guide-zh-cn/LICENSE
-2020/11/14 | 491 | info/install-latex-guide-zh-cn/make.bat
-2020/11/14 | 596 | info/install-latex-guide-zh-cn/makefile
-2021/05/08 | 2680 | info/install-latex-guide-zh-cn/README.md
-2021/11/30 | 788004 | info/install-latex-guide-zh-cn.zip
+2021/09/05 | 12115 | info/install-latex-guide-zh-cn/chapter/wsl.tex
+2022/03/01 | 754326 | info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf
+2021/10/14 | 3201 | info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.tex
+2020/07/16 | 19039 | info/install-latex-guide-zh-cn/LICENSE
+2020/07/16 | 491 | info/install-latex-guide-zh-cn/make.bat
+2020/07/16 | 596 | info/install-latex-guide-zh-cn/makefile
+2020/07/17 | 2680 | info/install-latex-guide-zh-cn/README.md
+2022/03/01 | 794929 | info/install-latex-guide-zh-cn.zip
2008/06/13 | 116805 | info/intro-scientific/earth-moon.pdf
2009/02/19 | 226 | info/intro-scientific/Makefile
2009/02/18 | 1350 | info/intro-scientific/README
@@ -185628,7 +185628,7 @@
2021/09/21 | 514924 | install/macros/generic/expkv.tds.zip
2022/02/04 | 232668 | install/macros/generic/iftex.tds.zip
2012/09/20 | 321508 | install/macros/generic/langcode.tds.zip
-2022/02/28 | 1120328 | install/macros/generic/markdown.tds.zip
+2022/03/01 | 1119978 | install/macros/generic/markdown.tds.zip
2014/06/11 | 428488 | install/macros/generic/mathdots.tds.zip
2014/01/02 | 496633 | install/macros/generic/minifp.tds.zip
2012/09/20 | 369585 | install/macros/generic/plainpkg.tds.zip
@@ -196130,47 +196130,48 @@
2006/02/16 | 1140207 | language/korean/HLaTeX.zip
1992/09/26 | 2175 | language/korean/internet-korea
1992/09/26 | 22240 | language/korean/korea.net.map.ps
-2021/09/22 | 22316 | language/korean/kotex-oblivoir/ChangeLog
-2021/03/16 | 80946 | language/korean/kotex-oblivoir/doc/obchaptertoc-doc.pdf
-2021/03/16 | 6771 | language/korean/kotex-oblivoir/doc/obchaptertoc-doc.tex
-2021/03/16 | 247256 | language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.pdf
-2021/03/16 | 97138 | language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.tex
-2021/03/16 | 50588 | language/korean/kotex-oblivoir/doc/oblivoir-test.tex
-2021/03/16 | 95320 | language/korean/kotex-oblivoir/doc/ob-mathleading-doc.pdf
-2021/03/16 | 6890 | language/korean/kotex-oblivoir/doc/ob-mathleading-doc.tex
-2021/09/22 | 1360 | language/korean/kotex-oblivoir/README
-2021/03/16 | 2688 | language/korean/kotex-oblivoir/tex/memhangul-common/10_5.sty
-2021/03/16 | 4275 | language/korean/kotex-oblivoir/tex/memhangul-common/fapapersize.sty
-2021/03/16 | 43441 | language/korean/kotex-oblivoir/tex/memhangul-common/memhangul-common.sty
-2021/03/16 | 692 | language/korean/kotex-oblivoir/tex/memhangul-common/memhangul-patch.sty
-2021/03/16 | 2205 | language/korean/kotex-oblivoir/tex/memhangul-common/memucs-enumerate.sty
-2021/03/16 | 19828 | language/korean/kotex-oblivoir/tex/memhangul-common/memucs-setspace.sty
-2021/03/16 | 6178 | language/korean/kotex-oblivoir/tex/memhangul-common/obchaptertoc.sty
-2021/03/16 | 2882 | language/korean/kotex-oblivoir/tex/memhangul-common/ob-koreanappendix.sty
-2021/03/16 | 2776 | language/korean/kotex-oblivoir/tex/memhangul-common/ob-nokoreanappendix.sty
-2021/03/16 | 3857 | language/korean/kotex-oblivoir/tex/memhangul-common/ob-toclof.sty
-2021/03/16 | 3276 | language/korean/kotex-oblivoir/tex/memhangul-ucs/hfontsel.sty
-2021/03/16 | 237 | language/korean/kotex-oblivoir/tex/memhangul-ucs/hfontspec.nanum
-2021/03/16 | 21306 | language/korean/kotex-oblivoir/tex/memhangul-ucs/memhangul-ucs.sty
-2021/03/16 | 3927 | language/korean/kotex-oblivoir/tex/memhangul-ucs/memucs-gremph.sty
-2021/03/16 | 4512 | language/korean/kotex-oblivoir/tex/memhangul-ucs/memucs-interword.sty
-2021/03/16 | 842 | language/korean/kotex-oblivoir/tex/memhangul-ucs/nanumfontsel.sty
+2022/02/28 | 22203 | language/korean/kotex-oblivoir/doc/ChangeLog
+2020/09/03 | 80946 | language/korean/kotex-oblivoir/doc/obchaptertoc-doc.pdf
+2020/09/03 | 6771 | language/korean/kotex-oblivoir/doc/obchaptertoc-doc.tex
+2022/02/28 | 256845 | language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.pdf
+2022/02/28 | 100219 | language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.tex
+2021/03/03 | 50588 | language/korean/kotex-oblivoir/doc/oblivoir-test.tex
+2021/03/03 | 95320 | language/korean/kotex-oblivoir/doc/ob-mathleading-doc.pdf
+2019/05/06 | 6890 | language/korean/kotex-oblivoir/doc/ob-mathleading-doc.tex
+2022/03/01 | 1421 | language/korean/kotex-oblivoir/README
+2020/03/14 | 2688 | language/korean/kotex-oblivoir/tex/memhangul-common/10_5.sty
+2022/02/28 | 5459 | language/korean/kotex-oblivoir/tex/memhangul-common/fapapersize.sty
+2021/03/03 | 43683 | language/korean/kotex-oblivoir/tex/memhangul-common/memhangul-common.sty
+2020/03/14 | 692 | language/korean/kotex-oblivoir/tex/memhangul-common/memhangul-patch.sty
+2020/03/14 | 2205 | language/korean/kotex-oblivoir/tex/memhangul-common/memucs-enumerate.sty
+2021/03/03 | 19828 | language/korean/kotex-oblivoir/tex/memhangul-common/memucs-setspace.sty
+2021/03/03 | 6178 | language/korean/kotex-oblivoir/tex/memhangul-common/obchaptertoc.sty
+2020/03/14 | 2882 | language/korean/kotex-oblivoir/tex/memhangul-common/ob-koreanappendix.sty
+2022/02/28 | 3564 | language/korean/kotex-oblivoir/tex/memhangul-common/oblivoir-misc.sty
+2020/03/14 | 2776 | language/korean/kotex-oblivoir/tex/memhangul-common/ob-nokoreanappendix.sty
+2020/03/14 | 3857 | language/korean/kotex-oblivoir/tex/memhangul-common/ob-toclof.sty
+2013/11/09 | 3276 | language/korean/kotex-oblivoir/tex/memhangul-ucs/hfontsel.sty
+2013/11/09 | 237 | language/korean/kotex-oblivoir/tex/memhangul-ucs/hfontspec.nanum
+2014/06/26 | 21306 | language/korean/kotex-oblivoir/tex/memhangul-ucs/memhangul-ucs.sty
+2014/06/26 | 3927 | language/korean/kotex-oblivoir/tex/memhangul-ucs/memucs-gremph.sty
+2013/11/09 | 4512 | language/korean/kotex-oblivoir/tex/memhangul-ucs/memucs-interword.sty
+2013/11/09 | 842 | language/korean/kotex-oblivoir/tex/memhangul-ucs/nanumfontsel.sty
2021/09/22 | 13140 | language/korean/kotex-oblivoir/tex/memhangul-x/memhangul-x.sty
-2021/03/16 | 5084 | language/korean/kotex-oblivoir/tex/memhangul-x/memucs-interword-x.sty
-2021/03/16 | 3474 | language/korean/kotex-oblivoir/tex/memhangul-x/ob-mathleading.sty
-2021/03/16 | 3355 | language/korean/kotex-oblivoir/tex/memhangul-x/ob-unfontsdefault.sty
-2021/03/16 | 2425 | language/korean/kotex-oblivoir/tex/memhangul-x/xetexko-var.sty
-2021/03/16 | 789 | language/korean/kotex-oblivoir/tex/memhangul-x/xob-amssymb.sty
-2021/03/16 | 1645 | language/korean/kotex-oblivoir/tex/memhangul-x/xob-dotemph.sty
-2021/03/16 | 17538 | language/korean/kotex-oblivoir/tex/memhangul-x/xob-font.sty
-2021/03/16 | 1962 | language/korean/kotex-oblivoir/tex/memhangul-x/xob-hyper.sty
-2021/03/16 | 4854 | language/korean/kotex-oblivoir/tex/memhangul-x/xob-lwarp.sty
-2021/03/16 | 2003 | language/korean/kotex-oblivoir/tex/memhangul-x/xob-paralist.sty
-2021/09/22 | 1599 | language/korean/kotex-oblivoir/tex/oblivoir.cls
-2021/09/22 | 19927 | language/korean/kotex-oblivoir/tex/oblivoir-utf.cls
-2021/09/22 | 16336 | language/korean/kotex-oblivoir/tex/oblivoir-xl.cls
-2021/09/22 | 720 | language/korean/kotex-oblivoir/tex/xoblivoir.cls
-2021/09/22 | 548215 | language/korean/kotex-oblivoir.zip
+2013/11/09 | 5084 | language/korean/kotex-oblivoir/tex/memhangul-x/memucs-interword-x.sty
+2019/05/06 | 3474 | language/korean/kotex-oblivoir/tex/memhangul-x/ob-mathleading.sty
+2021/03/03 | 3355 | language/korean/kotex-oblivoir/tex/memhangul-x/ob-unfontsdefault.sty
+2020/03/14 | 2425 | language/korean/kotex-oblivoir/tex/memhangul-x/xetexko-var.sty
+2013/11/09 | 789 | language/korean/kotex-oblivoir/tex/memhangul-x/xob-amssymb.sty
+2014/06/26 | 1645 | language/korean/kotex-oblivoir/tex/memhangul-x/xob-dotemph.sty
+2021/03/15 | 17538 | language/korean/kotex-oblivoir/tex/memhangul-x/xob-font.sty
+2013/11/09 | 1962 | language/korean/kotex-oblivoir/tex/memhangul-x/xob-hyper.sty
+2020/03/14 | 4854 | language/korean/kotex-oblivoir/tex/memhangul-x/xob-lwarp.sty
+2014/06/26 | 2003 | language/korean/kotex-oblivoir/tex/memhangul-x/xob-paralist.sty
+2022/02/28 | 1592 | language/korean/kotex-oblivoir/tex/oblivoir.cls
+2020/03/14 | 19922 | language/korean/kotex-oblivoir/tex/oblivoir-utf.cls
+2021/09/21 | 16331 | language/korean/kotex-oblivoir/tex/oblivoir-xl.cls
+2021/03/03 | 715 | language/korean/kotex-oblivoir/tex/xoblivoir.cls
+2022/03/01 | 560102 | language/korean/kotex-oblivoir.zip
2015/10/13 | 1846 | language/korean/kotex-plain/ChangeLog
2014/10/26 | 9436 | language/korean/kotex-plain/hangulcweb.tex
2014/10/26 | 1356 | language/korean/kotex-plain/kotexplain.tex
@@ -200044,22 +200045,22 @@
2016/06/15 | 170646 | macros/generic/luatex85/luatex85.pdf
2016/06/15 | 316 | macros/generic/luatex85/README.md
2016/06/15 | 173375 | macros/generic/luatex85.zip
-2022/02/28 | 4485 | macros/generic/markdown/docstrip.cfg
-2022/02/28 | 1491 | macros/generic/markdown/examples/context-mkii.tex
-2022/02/28 | 1682 | macros/generic/markdown/examples/context-mkiv.tex
-2022/02/28 | 3129 | macros/generic/markdown/examples/example.md
-2022/02/28 | 1639 | macros/generic/markdown/examples/latex.tex
-2022/02/28 | 75 | macros/generic/markdown/examples/scientists.csv
-2022/02/28 | 22371 | macros/generic/markdown/libraries/markdown-tinyyaml.lua
-2022/02/28 | 4530 | macros/generic/markdown/markdown.css
-2022/02/28 | 605587 | macros/generic/markdown/markdown.dtx
-2022/02/28 | 666305 | macros/generic/markdown/markdown.html
-2022/02/28 | 1333 | macros/generic/markdown/markdown.ins
-2022/02/28 | 761101 | macros/generic/markdown/markdown.pdf
-2022/02/28 | 140951 | macros/generic/markdown/markdown.png
-2022/02/28 | 16226 | macros/generic/markdown/README.md
-2022/02/28 | 31 | macros/generic/markdown/VERSION
-2022/02/28 | 1060738 | macros/generic/markdown.zip
+2022/03/01 | 4485 | macros/generic/markdown/docstrip.cfg
+2022/03/01 | 1491 | macros/generic/markdown/examples/context-mkii.tex
+2022/03/01 | 1682 | macros/generic/markdown/examples/context-mkiv.tex
+2022/03/01 | 3129 | macros/generic/markdown/examples/example.md
+2022/03/01 | 1639 | macros/generic/markdown/examples/latex.tex
+2022/03/01 | 75 | macros/generic/markdown/examples/scientists.csv
+2022/03/01 | 22371 | macros/generic/markdown/libraries/markdown-tinyyaml.lua
+2022/03/01 | 4530 | macros/generic/markdown/markdown.css
+2022/03/01 | 605680 | macros/generic/markdown/markdown.dtx
+2022/03/01 | 666305 | macros/generic/markdown/markdown.html
+2022/03/01 | 1333 | macros/generic/markdown/markdown.ins
+2022/03/01 | 760842 | macros/generic/markdown/markdown.pdf
+2022/03/01 | 140951 | macros/generic/markdown/markdown.png
+2022/03/01 | 16226 | macros/generic/markdown/README.md
+2022/03/01 | 31 | macros/generic/markdown/VERSION
+2022/03/01 | 1060382 | macros/generic/markdown.zip
2014/06/11 | 20744 | macros/generic/mathdots/mathdots.dtx
2014/06/11 | 1203 | macros/generic/mathdots/mathdots.ins
2014/06/11 | 258547 | macros/generic/mathdots/mathdots.pdf
@@ -204794,59 +204795,59 @@
2009/09/08 | 289117 | macros/latex/contrib/bez123/bez123.pdf
2009/09/08 | 2083 | macros/latex/contrib/bez123/README
2009/09/08 | 274921 | macros/latex/contrib/bez123.zip
-2022/02/22 | 40747 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHBeamer.pdf
-2022/02/22 | 50515 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHBeamer-Sidebar.pdf
-2022/02/22 | 50171 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHFactsheet.pdf
-2022/02/22 | 13660 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHLetter.pdf
-2022/02/22 | 54484 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHProjektProposal.pdf
-2022/02/22 | 92294 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHPub.pdf
-2022/02/22 | 46617 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHSciPoster.pdf
-2022/02/22 | 41461 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHThesis.pdf
-2022/02/22 | 2320 | macros/latex/contrib/bfh-ci/example/DEMO-BFHBeamer-Sidebar.tex
-2022/02/22 | 1881 | macros/latex/contrib/bfh-ci/example/DEMO-BFHBeamer.tex
-2022/02/22 | 4171 | macros/latex/contrib/bfh-ci/example/DEMO-BFHFactsheet.tex
-2022/02/22 | 1439 | macros/latex/contrib/bfh-ci/example/DEMO-BFHFromaddress.lco
-2022/02/22 | 1583 | macros/latex/contrib/bfh-ci/example/DEMO-BFHLetter.tex
-2022/02/22 | 2119 | macros/latex/contrib/bfh-ci/example/DEMO-BFHProjektProposal.tex
-2022/02/22 | 15076 | macros/latex/contrib/bfh-ci/example/DEMO-BFHPub.tex
-2022/02/22 | 7656 | macros/latex/contrib/bfh-ci/example/DEMO-BFHSciPoster.tex
-2022/02/22 | 1336 | macros/latex/contrib/bfh-ci/example/DEMO-BFHThesis.tex
-2022/02/22 | 4460 | macros/latex/contrib/bfh-ci/README.md
-2022/02/22 | 3859 | macros/latex/contrib/bfh-ci/tex/beamercolorthemeBFH.sty
-2022/02/22 | 3030 | macros/latex/contrib/bfh-ci/tex/beamerfontthemeBFH.sty
-2022/02/22 | 14867 | macros/latex/contrib/bfh-ci/tex/beamerinnerthemeBFH.sty
-2022/02/22 | 3091 | macros/latex/contrib/bfh-ci/tex/beamerouterthemeBFH-sidebar.sty
-2022/02/22 | 3215 | macros/latex/contrib/bfh-ci/tex/beamerouterthemeBFH.sty
-2022/02/22 | 2307 | macros/latex/contrib/bfh-ci/tex/beamerthemeBFH.sty
-2022/02/22 | 1842 | macros/latex/contrib/bfh-ci/tex/bfh-a0paper.clo
-2022/02/22 | 1789 | macros/latex/contrib/bfh-ci/tex/bfh-a1paper.clo
-2022/02/22 | 1792 | macros/latex/contrib/bfh-ci/tex/bfh-a2paper.clo
-2022/02/22 | 1794 | macros/latex/contrib/bfh-ci/tex/bfh-a3paper.clo
-2022/02/22 | 1463 | macros/latex/contrib/bfh-ci/tex/bfh-a4paper.clo
-2022/02/22 | 1464 | macros/latex/contrib/bfh-ci/tex/bfh-a5paper.clo
-2022/02/22 | 1518 | macros/latex/contrib/bfh-ci/tex/bfh-a6paper.clo
-2022/02/22 | 1508 | macros/latex/contrib/bfh-ci/tex/bfh-beamerarticle.cfg
-2022/02/22 | 3066 | macros/latex/contrib/bfh-ci/tex/bfhbeamer.cls
-2022/02/22 | 4190 | macros/latex/contrib/bfh-ci/tex/bfhcolors.sty
-2022/02/22 | 2788 | macros/latex/contrib/bfh-ci/tex/bfh-factsheet.cfg
-2022/02/22 | 2177 | macros/latex/contrib/bfh-ci/tex/bfhfonts.sty
-2022/02/22 | 4603 | macros/latex/contrib/bfh-ci/tex/bfh-layout-boxes.cfg
-2022/02/22 | 3788 | macros/latex/contrib/bfh-ci/tex/bfh-layout-listings.cfg
-2022/02/22 | 2560 | macros/latex/contrib/bfh-ci/tex/bfh-layout-rules.cfg
-2022/02/22 | 24676 | macros/latex/contrib/bfh-ci/tex/bfhlayout.sty
-2022/02/22 | 2122 | macros/latex/contrib/bfh-ci/tex/bfh-layout-tabular.cfg
-2022/02/22 | 4925 | macros/latex/contrib/bfh-ci/tex/bfh-layout-terminal.cfg
-2022/02/22 | 3901 | macros/latex/contrib/bfh-ci/tex/bfhlettersize9.5pt.clo
-2022/02/22 | 5800 | macros/latex/contrib/bfh-ci/tex/bfhletter.sty
-2022/02/22 | 2039 | macros/latex/contrib/bfh-ci/tex/bfhmodule.sty
-2022/02/22 | 8776 | macros/latex/contrib/bfh-ci/tex/bfh-projectproposal.cfg
-2022/02/22 | 3164 | macros/latex/contrib/bfh-ci/tex/bfhpub.cls
-2022/02/22 | 18492 | macros/latex/contrib/bfh-ci/tex/bfhsciposter.cls
-2022/02/22 | 6373 | macros/latex/contrib/bfh-ci/tex/bfhthesis.cls
-2022/02/22 | 3508 | macros/latex/contrib/bfh-ci/tex/bfhtranslations-english.trsl
-2022/02/22 | 3538 | macros/latex/contrib/bfh-ci/tex/bfhtranslations-french.trsl
-2022/02/22 | 3429 | macros/latex/contrib/bfh-ci/tex/bfhtranslations-german.trsl
-2022/02/22 | 439108 | macros/latex/contrib/bfh-ci.zip
+2022/03/01 | 40706 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHBeamer.pdf
+2022/03/01 | 50693 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHBeamer-Sidebar.pdf
+2022/03/01 | 50238 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHFactsheet.pdf
+2022/03/01 | 13621 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHLetter.pdf
+2022/03/01 | 54484 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHProjektProposal.pdf
+2022/03/01 | 92276 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHPub.pdf
+2022/03/01 | 46617 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHSciPoster.pdf
+2022/03/01 | 41456 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHThesis.pdf
+2022/03/01 | 2320 | macros/latex/contrib/bfh-ci/example/DEMO-BFHBeamer-Sidebar.tex
+2022/03/01 | 1881 | macros/latex/contrib/bfh-ci/example/DEMO-BFHBeamer.tex
+2022/03/01 | 4171 | macros/latex/contrib/bfh-ci/example/DEMO-BFHFactsheet.tex
+2022/03/01 | 1439 | macros/latex/contrib/bfh-ci/example/DEMO-BFHFromaddress.lco
+2022/03/01 | 1583 | macros/latex/contrib/bfh-ci/example/DEMO-BFHLetter.tex
+2022/03/01 | 2119 | macros/latex/contrib/bfh-ci/example/DEMO-BFHProjektProposal.tex
+2022/03/01 | 15076 | macros/latex/contrib/bfh-ci/example/DEMO-BFHPub.tex
+2022/03/01 | 7656 | macros/latex/contrib/bfh-ci/example/DEMO-BFHSciPoster.tex
+2022/03/01 | 1336 | macros/latex/contrib/bfh-ci/example/DEMO-BFHThesis.tex
+2022/03/01 | 4527 | macros/latex/contrib/bfh-ci/README.md
+2022/03/01 | 3859 | macros/latex/contrib/bfh-ci/tex/beamercolorthemeBFH.sty
+2022/03/01 | 3030 | macros/latex/contrib/bfh-ci/tex/beamerfontthemeBFH.sty
+2022/03/01 | 14867 | macros/latex/contrib/bfh-ci/tex/beamerinnerthemeBFH.sty
+2022/03/01 | 3091 | macros/latex/contrib/bfh-ci/tex/beamerouterthemeBFH-sidebar.sty
+2022/03/01 | 3215 | macros/latex/contrib/bfh-ci/tex/beamerouterthemeBFH.sty
+2022/03/01 | 2307 | macros/latex/contrib/bfh-ci/tex/beamerthemeBFH.sty
+2022/03/01 | 1842 | macros/latex/contrib/bfh-ci/tex/bfh-a0paper.clo
+2022/03/01 | 1789 | macros/latex/contrib/bfh-ci/tex/bfh-a1paper.clo
+2022/03/01 | 1792 | macros/latex/contrib/bfh-ci/tex/bfh-a2paper.clo
+2022/03/01 | 1794 | macros/latex/contrib/bfh-ci/tex/bfh-a3paper.clo
+2022/03/01 | 1463 | macros/latex/contrib/bfh-ci/tex/bfh-a4paper.clo
+2022/03/01 | 1464 | macros/latex/contrib/bfh-ci/tex/bfh-a5paper.clo
+2022/03/01 | 1518 | macros/latex/contrib/bfh-ci/tex/bfh-a6paper.clo
+2022/03/01 | 1508 | macros/latex/contrib/bfh-ci/tex/bfh-beamerarticle.cfg
+2022/03/01 | 3103 | macros/latex/contrib/bfh-ci/tex/bfhbeamer.cls
+2022/03/01 | 4190 | macros/latex/contrib/bfh-ci/tex/bfhcolors.sty
+2022/03/01 | 2788 | macros/latex/contrib/bfh-ci/tex/bfh-factsheet.cfg
+2022/03/01 | 2177 | macros/latex/contrib/bfh-ci/tex/bfhfonts.sty
+2022/03/01 | 4603 | macros/latex/contrib/bfh-ci/tex/bfh-layout-boxes.cfg
+2022/03/01 | 3788 | macros/latex/contrib/bfh-ci/tex/bfh-layout-listings.cfg
+2022/03/01 | 2560 | macros/latex/contrib/bfh-ci/tex/bfh-layout-rules.cfg
+2022/03/01 | 24676 | macros/latex/contrib/bfh-ci/tex/bfhlayout.sty
+2022/03/01 | 2122 | macros/latex/contrib/bfh-ci/tex/bfh-layout-tabular.cfg
+2022/03/01 | 5043 | macros/latex/contrib/bfh-ci/tex/bfh-layout-terminal.cfg
+2022/03/01 | 3901 | macros/latex/contrib/bfh-ci/tex/bfhlettersize9.5pt.clo
+2022/03/01 | 5800 | macros/latex/contrib/bfh-ci/tex/bfhletter.sty
+2022/03/01 | 2039 | macros/latex/contrib/bfh-ci/tex/bfhmodule.sty
+2022/03/01 | 8776 | macros/latex/contrib/bfh-ci/tex/bfh-projectproposal.cfg
+2022/03/01 | 3164 | macros/latex/contrib/bfh-ci/tex/bfhpub.cls
+2022/03/01 | 18492 | macros/latex/contrib/bfh-ci/tex/bfhsciposter.cls
+2022/03/01 | 6373 | macros/latex/contrib/bfh-ci/tex/bfhthesis.cls
+2022/03/01 | 3508 | macros/latex/contrib/bfh-ci/tex/bfhtranslations-english.trsl
+2022/03/01 | 3538 | macros/latex/contrib/bfh-ci/tex/bfhtranslations-french.trsl
+2022/03/01 | 3429 | macros/latex/contrib/bfh-ci/tex/bfhtranslations-german.trsl
+2022/03/01 | 439945 | macros/latex/contrib/bfh-ci.zip
1994/10/18 | 52584 | macros/latex/contrib/bg/bg.150gf
1994/10/18 | 27388 | macros/latex/contrib/bg/bg.150pk
1994/10/18 | 83540 | macros/latex/contrib/bg/bg.225gf
@@ -208815,18 +208816,18 @@
2013/04/03 | 3607 | macros/latex/contrib/crbox/crbox.sty
2013/04/03 | 914 | macros/latex/contrib/crbox/README
2013/04/04 | 30542 | macros/latex/contrib/crbox.zip
-2022/02/27 | 111285 | macros/latex/contrib/create-theorem/create-theorem-doc.pdf
-2022/02/27 | 18214 | macros/latex/contrib/create-theorem/create-theorem-doc.tex
-2022/02/27 | 66239 | macros/latex/contrib/create-theorem/create-theorem.sty
-2022/02/27 | 19106 | macros/latex/contrib/create-theorem/LICENSE
-2022/02/27 | 630 | macros/latex/contrib/create-theorem/README.md
-2022/02/27 | 129781 | macros/latex/contrib/create-theorem.zip
-2022/02/27 | 115616 | macros/latex/contrib/crefthe/crefthe-doc.pdf
-2022/02/27 | 10798 | macros/latex/contrib/crefthe/crefthe-doc.tex
-2022/02/27 | 10283 | macros/latex/contrib/crefthe/crefthe.sty
-2022/02/27 | 19106 | macros/latex/contrib/crefthe/LICENSE
-2022/02/27 | 2796 | macros/latex/contrib/crefthe/README.md
-2022/02/27 | 127687 | macros/latex/contrib/crefthe.zip
+2022/03/01 | 112139 | macros/latex/contrib/create-theorem/create-theorem-doc.pdf
+2022/03/01 | 18645 | macros/latex/contrib/create-theorem/create-theorem-doc.tex
+2022/03/01 | 66380 | macros/latex/contrib/create-theorem/create-theorem.sty
+2022/03/01 | 19106 | macros/latex/contrib/create-theorem/LICENSE
+2022/03/01 | 630 | macros/latex/contrib/create-theorem/README.md
+2022/03/01 | 130775 | macros/latex/contrib/create-theorem.zip
+2022/03/01 | 116473 | macros/latex/contrib/crefthe/crefthe-doc.pdf
+2022/03/01 | 10806 | macros/latex/contrib/crefthe/crefthe-doc.tex
+2022/03/01 | 10206 | macros/latex/contrib/crefthe/crefthe.sty
+2022/03/01 | 19106 | macros/latex/contrib/crefthe/LICENSE
+2022/03/01 | 2796 | macros/latex/contrib/crefthe/README.md
+2022/03/01 | 128576 | macros/latex/contrib/crefthe.zip
2020/06/05 | 67341 | macros/latex/contrib/crop/crop.dtx
2020/06/05 | 260 | macros/latex/contrib/crop/crop.ins
2020/06/05 | 327371 | macros/latex/contrib/crop/crop.pdf
@@ -210471,12 +210472,12 @@
2008/02/10 | 19110 | macros/latex/contrib/ean13isbn/License.txt
2021/01/24 | 422 | macros/latex/contrib/ean13isbn/README
2021/01/24 | 322624 | macros/latex/contrib/ean13isbn.zip
-2022/02/28 | 73774 | macros/latex/contrib/easybook/easybook.dtx
+2022/03/01 | 73665 | macros/latex/contrib/easybook/easybook.dtx
2022/01/02 | 2085 | macros/latex/contrib/easybook/easybook.ins
-2022/02/28 | 578235 | macros/latex/contrib/easybook/easybook.pdf
-2022/02/28 | 80734 | macros/latex/contrib/easybook/easybook.tex
+2022/03/01 | 578236 | macros/latex/contrib/easybook/easybook.pdf
+2022/03/01 | 80737 | macros/latex/contrib/easybook/easybook.tex
2022/02/11 | 787 | macros/latex/contrib/easybook/README.md
-2022/02/28 | 618818 | macros/latex/contrib/easybook.zip
+2022/03/01 | 618740 | macros/latex/contrib/easybook.zip
2009/06/17 | 82589 | macros/latex/contrib/easy/doc/docbib.pdf
2009/06/17 | 78378 | macros/latex/contrib/easy/doc/docbmat.pdf
2009/06/17 | 99132 | macros/latex/contrib/easy/doc/doceqn.pdf
@@ -218461,13 +218462,13 @@
2014/06/19 | 665271 | macros/latex/contrib/matlab-prettifier/matlab-prettifier.pdf
2014/06/19 | 677 | macros/latex/contrib/matlab-prettifier/README
2014/06/19 | 685412 | macros/latex/contrib/matlab-prettifier.zip
-2010/03/26 | 55542 | macros/latex/contrib/mattens/mattens.dtx
-2010/03/26 | 2879 | macros/latex/contrib/mattens/mattens.ins
-2010/03/26 | 541450 | macros/latex/contrib/mattens/mattens.pdf
-2009/09/27 | 194705 | macros/latex/contrib/mattens/mattens_sample.pdf
-2009/09/27 | 35130 | macros/latex/contrib/mattens/mattens_sample_src.zip
-2010/03/26 | 2888 | macros/latex/contrib/mattens/README
-2010/03/30 | 728281 | macros/latex/contrib/mattens.zip
+2022/03/01 | 48092 | macros/latex/contrib/mattens/mattens.dtx
+2022/03/01 | 2879 | macros/latex/contrib/mattens/mattens.ins
+2022/03/01 | 481295 | macros/latex/contrib/mattens/mattens.pdf
+2022/01/25 | 233282 | macros/latex/contrib/mattens/mattens_sample.pdf
+2022/03/01 | 301364 | macros/latex/contrib/mattens/mattens_sample.zip
+2022/03/01 | 3069 | macros/latex/contrib/mattens/README
+2022/03/01 | 1007129 | macros/latex/contrib/mattens.zip
2012/02/07 | 3991 | macros/latex/contrib/mattex/formatvars.m
2012/02/11 | 322843 | macros/latex/contrib/mattex/mattex_en.pdf
2012/02/11 | 20749 | macros/latex/contrib/mattex/mattex_en.tex
@@ -227055,12 +227056,12 @@
2009/05/20 | 159 | macros/latex/contrib/tabularew/tabularew.ins
2009/06/01 | 170381 | macros/latex/contrib/tabularew/tabularew.pdf
2009/06/01 | 150930 | macros/latex/contrib/tabularew.zip
-2021/06/10 | 267 | macros/latex/contrib/tabularray/README
-2021/06/05 | 158209 | macros/latex/contrib/tabularray/tabularray-2021.sty
-2021/12/01 | 760910 | macros/latex/contrib/tabularray/tabularray.pdf
-2021/12/01 | 231741 | macros/latex/contrib/tabularray/tabularray.sty
-2021/12/01 | 78220 | macros/latex/contrib/tabularray/tabularray.tex
-2021/12/01 | 714804 | macros/latex/contrib/tabularray.zip
+2022/03/01 | 284 | macros/latex/contrib/tabularray/README.txt
+2021/12/01 | 231741 | macros/latex/contrib/tabularray/tabularray-2021.sty
+2022/03/01 | 874353 | macros/latex/contrib/tabularray/tabularray.pdf
+2022/03/01 | 240697 | macros/latex/contrib/tabularray/tabularray.sty
+2022/03/01 | 88756 | macros/latex/contrib/tabularray/tabularray.tex
+2022/03/01 | 793321 | macros/latex/contrib/tabularray.zip
2005/10/21 | 169 | macros/latex/contrib/tabulary/README
2014/06/21 | 29652 | macros/latex/contrib/tabulary/tabulary.dtx
2003/11/26 | 156 | macros/latex/contrib/tabulary/tabulary.ins
@@ -275968,7 +275969,7 @@
2021/05/03 | 629 | support/TeX4ht/doc/README
2020/08/24 | 358454 | support/TeX4ht/doc/TeX4ht-doc.tex
2021/05/11 | 262 | support/TeX4ht/README
-2022/02/23 | 184070 | support/TeX4ht/source/ChangeLog
+2022/02/28 | 184426 | support/TeX4ht/source/ChangeLog
2021/05/03 | 1375 | support/TeX4ht/source/checklog.lua
2021/05/03 | 1189 | support/TeX4ht/source/common-code.tex
2021/05/03 | 2727 | support/TeX4ht/source/common-info.tex
@@ -277786,8 +277787,8 @@
2021/12/31 | 34337 | systems/doc/luatex/luatex-lua.tex
2022/02/25 | 71535 | systems/doc/luatex/luatex-math.tex
2021/12/31 | 49136 | systems/doc/luatex/luatex-modifications.tex
-2021/12/31 | 98089 | systems/doc/luatex/luatex-nodes.tex
-2022/02/25 | 1784731 | systems/doc/luatex/luatex.pdf
+2022/02/28 | 98187 | systems/doc/luatex/luatex-nodes.tex
+2022/02/28 | 1784850 | systems/doc/luatex/luatex.pdf
2020/03/14 | 5012 | systems/doc/luatex/luatex-preamble.tex
2019/10/13 | 1118 | systems/doc/luatex/luatex-registers.tex
2019/10/13 | 242 | systems/doc/luatex/luatex-statistics.tex
@@ -277795,7 +277796,7 @@
2021/12/31 | 3639 | systems/doc/luatex/luatex.tex
2021/03/18 | 98272 | systems/doc/luatex/luatex-tex.tex
2019/10/13 | 1313 | systems/doc/luatex/luatex-titlepage.tex
-2022/02/26 | 2064382 | systems/doc/luatex.zip
+2022/03/01 | 2064556 | systems/doc/luatex.zip
2015/04/30 | 66584 | systems/doc/metapost/CHANGES
2009/05/30 | 7430 | systems/doc/metapost/grdemo-doc.pdf
2009/05/30 | 3044 | systems/doc/metapost/grdemo.pdf
@@ -298223,7 +298224,7 @@
2020/10/03 | 318630 | systems/win32/miktex/tm/packages/filehook.tar.lzma
2012/12/04 | 924573 | systems/win32/miktex/tm/packages/fileinfo.tar.lzma
2011/09/21 | 281409 | systems/win32/miktex/tm/packages/filemod.tar.lzma
-2022/02/28 | 640179 | systems/win32/miktex/tm/packages/files.csv.lzma
+2022/03/01 | 640179 | systems/win32/miktex/tm/packages/files.csv.lzma
2001/05/14 | 5617 | systems/win32/miktex/tm/packages/finbib.tar.lzma
2015/10/20 | 44379 | systems/win32/miktex/tm/packages/findhyph.tar.lzma
2011/10/21 | 89323 | systems/win32/miktex/tm/packages/fink.tar.lzma
@@ -299766,9 +299767,9 @@
2018/01/12 | 157226 | systems/win32/miktex/tm/packages/miktex-zip-bin-x64.tar.lzma
2022/01/29 | 39717 | systems/win32/miktex/tm/packages/miktex-zlib-bin-2.9.tar.lzma
2022/01/29 | 43173 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma
-2022/02/28 | 267521 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
-2022/02/28 | 1426622 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2022/02/28 | 1318839 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2022/03/01 | 267548 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2022/03/01 | 1426499 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2022/03/01 | 1318285 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
2022/01/29 | 13505 | systems/win32/miktex/tm/packages/miktex-zzip-bin-2.9.tar.lzma
2022/01/29 | 14408 | systems/win32/miktex/tm/packages/miktex-zzip-bin-x64-2.9.tar.lzma
2016/07/15 | 35914 | systems/win32/miktex/tm/packages/mil3.tar.lzma
@@ -299992,191 +299993,191 @@
2018/04/09 | 400132 | systems/win32/miktex/tm/packages/newunicodechar.tar.lzma
2011/09/19 | 101312 | systems/win32/miktex/tm/packages/newvbtm.tar.lzma
2021/03/17 | 232249 | systems/win32/miktex/tm/packages/newverbs.tar.lzma
-2022/02/28 | 640366 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2022/02/28 | 51514 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
-2022/02/28 | 57318 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2022/02/28 | 1020252 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
-2022/02/28 | 1156085 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
-2022/02/28 | 28886 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
-2022/02/28 | 31569 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
-2022/02/28 | 30175 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
-2022/02/28 | 35233 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
-2022/02/28 | 56986 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
-2022/02/28 | 65100 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
-2022/02/28 | 86484 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
-2022/02/28 | 95315 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
-2022/02/28 | 68890 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
-2022/02/28 | 77077 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
-2022/02/28 | 27243 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
-2022/02/28 | 31335 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
-2022/02/28 | 332516 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
-2022/02/28 | 394185 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
-2022/02/28 | 32935 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
-2022/02/28 | 37089 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
-2022/02/28 | 51467 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
-2022/02/28 | 57348 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
-2022/02/28 | 256390 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
-2022/02/28 | 281707 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
-2022/02/28 | 180016 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
-2022/02/28 | 196184 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
-2022/02/28 | 92954 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
-2022/02/28 | 103058 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
-2022/02/28 | 21318 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
-2022/02/28 | 24168 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
-2022/02/28 | 479430 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
-2022/02/28 | 46089 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
-2022/02/28 | 52074 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
-2022/02/28 | 285909 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
-2022/02/28 | 326728 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
-2022/02/28 | 41316 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
-2022/02/28 | 45699 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
-2022/02/28 | 120467 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
-2022/02/28 | 135253 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
-2022/02/28 | 1306313 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
-2022/02/28 | 1454269 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
-2022/02/28 | 99712 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
-2022/02/28 | 113012 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2022/02/28 | 43642 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
-2022/02/28 | 48824 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
-2022/02/28 | 25106 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
-2022/02/28 | 28593 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
-2022/02/28 | 57043 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
-2022/02/28 | 63390 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
-2022/02/28 | 136112 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
-2022/02/28 | 155453 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
-2022/02/28 | 73595 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
-2022/02/28 | 78964 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
-2022/02/28 | 72003 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
-2022/02/28 | 81640 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
-2022/02/28 | 259092 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
-2022/02/28 | 296014 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
-2022/02/28 | 22163 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
-2022/02/28 | 25066 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
-2022/02/28 | 97022 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
-2022/02/28 | 112475 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
-2022/02/28 | 64526 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
-2022/02/28 | 73202 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
-2022/02/28 | 96598 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
-2022/02/28 | 115692 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
-2022/02/28 | 38479 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
-2022/02/28 | 43805 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
-2022/02/28 | 484788 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
-2022/02/28 | 566550 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
-2022/02/28 | 188210 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin.tar.lzma
-2022/02/28 | 229951 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
-2022/02/28 | 152069 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
-2022/02/28 | 168765 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
-2022/02/28 | 95463 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
-2022/02/28 | 109518 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
-2022/02/28 | 16505 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
-2022/02/28 | 18357 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
-2022/02/28 | 28418 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
-2022/02/28 | 30527 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
-2022/02/28 | 633940 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
-2022/02/28 | 682350 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
-2022/02/28 | 532219 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
-2022/02/28 | 599042 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
-2022/02/28 | 477758 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
-2022/02/28 | 527878 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
-2022/02/28 | 93956 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
-2022/02/28 | 103393 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
-2022/02/28 | 1753743 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
-2022/02/28 | 1983663 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
-2022/02/28 | 68006 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
-2022/02/28 | 74065 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
-2022/02/28 | 27629 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
-2022/02/28 | 32138 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
-2022/02/28 | 7759 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
-2022/02/28 | 8787 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
-2022/02/28 | 197456 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
-2022/02/28 | 216061 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
-2022/02/28 | 251333 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
-2022/02/28 | 286545 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
-2022/02/28 | 99248 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
-2022/02/28 | 104709 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2022/02/28 | 126758 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
-2022/02/28 | 139420 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
-2022/02/28 | 254981 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
-2022/02/28 | 286872 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
-2022/02/28 | 199569 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
-2022/02/28 | 181676 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
-2022/02/28 | 68622 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
-2022/02/28 | 76233 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
-2022/02/28 | 31410 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
-2022/02/28 | 35187 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
-2022/02/28 | 38577 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
-2022/02/28 | 43936 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
-2022/02/28 | 43371 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
-2022/02/28 | 48018 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
-2022/02/28 | 45942 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
-2022/02/28 | 52312 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
-2022/02/28 | 198682 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
-2022/02/28 | 213206 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
-2022/02/28 | 36063 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
-2022/02/28 | 41279 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
-2022/02/28 | 759643 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
-2022/02/28 | 825811 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
-2022/02/28 | 200074 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
-2022/02/28 | 202535 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
-2022/02/28 | 210199 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
-2022/02/28 | 244866 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
-2022/02/28 | 78982 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
-2022/02/28 | 88125 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2022/02/28 | 1180912 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
-2022/02/28 | 1322725 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
-2022/02/28 | 20191 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
-2022/02/28 | 23935 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
-2022/02/28 | 31566 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
-2022/02/28 | 37394 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
-2022/02/28 | 64721 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
-2022/02/28 | 73010 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
-2022/02/28 | 50823 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
-2022/02/28 | 58656 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
-2022/02/28 | 688942 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin.tar.lzma
-2022/02/28 | 762604 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
-2022/02/28 | 1355333 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
-2022/02/28 | 1499051 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2022/02/28 | 42747 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
-2022/02/28 | 52592 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
-2022/02/28 | 57474 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
-2022/02/28 | 63762 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
-2022/02/28 | 25458 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
-2022/02/28 | 27591 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2022/02/28 | 16571 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
-2022/02/28 | 18500 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
-2022/02/28 | 64473 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
-2022/02/28 | 71000 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
-2022/02/28 | 156730 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
-2022/02/28 | 172561 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
-2022/02/28 | 58687 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
-2022/02/28 | 67225 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
-2022/02/28 | 101443 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
-2022/02/28 | 109179 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
-2022/02/28 | 2696291 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
-2022/02/28 | 2816621 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
-2022/02/28 | 55411 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
-2022/02/28 | 62128 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
-2022/02/28 | 37182 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
-2022/02/28 | 41226 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
-2022/02/28 | 28699 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
-2022/02/28 | 34038 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
-2022/02/28 | 67651 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
-2022/02/28 | 73501 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
-2022/02/28 | 316652 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
-2022/02/28 | 351832 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
-2022/02/28 | 55763 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
-2022/02/28 | 57446 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
-2022/02/28 | 591471 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
-2022/02/28 | 629477 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
-2022/02/28 | 39719 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
-2022/02/28 | 43664 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
-2022/02/28 | 267681 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2022/02/28 | 1426998 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
-2022/02/28 | 1317958 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
-2022/02/28 | 13512 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
-2022/02/28 | 14412 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2022/03/01 | 640366 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2022/03/01 | 51514 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
+2022/03/01 | 57319 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2022/03/01 | 1020251 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
+2022/03/01 | 1156087 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2022/03/01 | 28886 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
+2022/03/01 | 31570 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2022/03/01 | 30177 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
+2022/03/01 | 35233 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2022/03/01 | 56986 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
+2022/03/01 | 65099 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2022/03/01 | 86484 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
+2022/03/01 | 95316 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2022/03/01 | 68889 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
+2022/03/01 | 77078 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2022/03/01 | 27243 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
+2022/03/01 | 31337 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2022/03/01 | 332517 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
+2022/03/01 | 394184 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2022/03/01 | 32937 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
+2022/03/01 | 37088 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2022/03/01 | 51466 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
+2022/03/01 | 57348 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2022/03/01 | 256392 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
+2022/03/01 | 281707 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2022/03/01 | 180014 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
+2022/03/01 | 196183 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2022/03/01 | 92955 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
+2022/03/01 | 103056 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2022/03/01 | 21319 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
+2022/03/01 | 24168 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2022/03/01 | 479425 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
+2022/03/01 | 46089 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
+2022/03/01 | 52075 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2022/03/01 | 285911 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
+2022/03/01 | 326729 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2022/03/01 | 41317 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
+2022/03/01 | 45701 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2022/03/01 | 120468 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
+2022/03/01 | 135255 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2022/03/01 | 1306312 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
+2022/03/01 | 1454268 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2022/03/01 | 99713 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
+2022/03/01 | 113013 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2022/03/01 | 43642 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
+2022/03/01 | 48825 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2022/03/01 | 25106 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
+2022/03/01 | 28595 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2022/03/01 | 57044 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
+2022/03/01 | 63390 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2022/03/01 | 136111 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
+2022/03/01 | 155456 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2022/03/01 | 73595 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
+2022/03/01 | 78965 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2022/03/01 | 71999 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
+2022/03/01 | 81639 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2022/03/01 | 259093 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
+2022/03/01 | 296015 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2022/03/01 | 22163 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
+2022/03/01 | 25066 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2022/03/01 | 97021 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
+2022/03/01 | 112474 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2022/03/01 | 64528 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
+2022/03/01 | 73203 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2022/03/01 | 96600 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
+2022/03/01 | 115691 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2022/03/01 | 38479 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
+2022/03/01 | 43806 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2022/03/01 | 484789 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
+2022/03/01 | 566551 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2022/03/01 | 188212 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin.tar.lzma
+2022/03/01 | 229949 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
+2022/03/01 | 152071 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
+2022/03/01 | 168764 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2022/03/01 | 95463 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
+2022/03/01 | 109516 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2022/03/01 | 16504 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
+2022/03/01 | 18358 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2022/03/01 | 28418 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
+2022/03/01 | 30525 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2022/03/01 | 633938 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
+2022/03/01 | 682351 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2022/03/01 | 532219 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
+2022/03/01 | 599042 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2022/03/01 | 477759 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
+2022/03/01 | 527876 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2022/03/01 | 93956 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
+2022/03/01 | 103393 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2022/03/01 | 1753742 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
+2022/03/01 | 1983663 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2022/03/01 | 68006 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
+2022/03/01 | 74064 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2022/03/01 | 27627 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
+2022/03/01 | 32138 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2022/03/01 | 7759 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
+2022/03/01 | 8787 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2022/03/01 | 197457 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
+2022/03/01 | 216060 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2022/03/01 | 251337 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
+2022/03/01 | 286544 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2022/03/01 | 99249 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
+2022/03/01 | 104710 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2022/03/01 | 126757 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
+2022/03/01 | 139420 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2022/03/01 | 254982 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
+2022/03/01 | 286872 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2022/03/01 | 199568 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
+2022/03/01 | 181677 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2022/03/01 | 68622 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
+2022/03/01 | 76233 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2022/03/01 | 31411 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
+2022/03/01 | 35189 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2022/03/01 | 38578 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
+2022/03/01 | 43936 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2022/03/01 | 43371 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
+2022/03/01 | 48018 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2022/03/01 | 45942 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
+2022/03/01 | 52312 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2022/03/01 | 198684 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
+2022/03/01 | 213206 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
+2022/03/01 | 36063 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
+2022/03/01 | 41280 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
+2022/03/01 | 759645 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
+2022/03/01 | 825811 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2022/03/01 | 200075 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
+2022/03/01 | 202533 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2022/03/01 | 210200 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
+2022/03/01 | 244866 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2022/03/01 | 78983 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
+2022/03/01 | 88125 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2022/03/01 | 1180915 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
+2022/03/01 | 1322723 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2022/03/01 | 20191 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
+2022/03/01 | 23935 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2022/03/01 | 31566 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
+2022/03/01 | 37394 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2022/03/01 | 64721 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
+2022/03/01 | 73011 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2022/03/01 | 50825 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
+2022/03/01 | 58655 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2022/03/01 | 688942 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin.tar.lzma
+2022/03/01 | 762605 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
+2022/03/01 | 1355332 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
+2022/03/01 | 1499051 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2022/03/01 | 42746 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
+2022/03/01 | 52593 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2022/03/01 | 57475 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
+2022/03/01 | 63761 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2022/03/01 | 25457 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
+2022/03/01 | 27590 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2022/03/01 | 16571 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
+2022/03/01 | 18499 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2022/03/01 | 64473 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
+2022/03/01 | 71000 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2022/03/01 | 156732 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
+2022/03/01 | 172561 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2022/03/01 | 58686 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
+2022/03/01 | 67227 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2022/03/01 | 101443 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
+2022/03/01 | 109178 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2022/03/01 | 2696292 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
+2022/03/01 | 2816621 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2022/03/01 | 55412 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
+2022/03/01 | 62128 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2022/03/01 | 37182 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
+2022/03/01 | 41226 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2022/03/01 | 28699 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
+2022/03/01 | 34039 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2022/03/01 | 67651 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
+2022/03/01 | 73501 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2022/03/01 | 316653 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
+2022/03/01 | 351832 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2022/03/01 | 55763 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
+2022/03/01 | 57446 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
+2022/03/01 | 591474 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
+2022/03/01 | 629479 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2022/03/01 | 39719 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
+2022/03/01 | 43664 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2022/03/01 | 267659 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2022/03/01 | 1426785 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2022/03/01 | 1318365 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2022/03/01 | 13511 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
+2022/03/01 | 14412 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
2019/03/12 | 1412 | systems/win32/miktex/tm/packages/nextpage.tar.lzma
-2022/02/28 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
+2022/03/01 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
2018/07/06 | 145915 | systems/win32/miktex/tm/packages/nexus-otf.tar.lzma
2017/03/30 | 191149 | systems/win32/miktex/tm/packages/nfssext-cfr.tar.lzma
2012/12/20 | 612251 | systems/win32/miktex/tm/packages/nicefilelist.tar.lzma
@@ -300632,7 +300633,7 @@
2022/02/22 | 6917 | systems/win32/miktex/tm/packages/preview.tar.lzma
2019/06/20 | 375963 | systems/win32/miktex/tm/packages/prftree.tar.lzma
2021/04/23 | 274028 | systems/win32/miktex/tm/packages/principia.tar.lzma
-2022/02/28 | 928 | systems/win32/miktex/tm/packages/pr.ini
+2022/03/01 | 928 | systems/win32/miktex/tm/packages/pr.ini
2010/09/27 | 248469 | systems/win32/miktex/tm/packages/printlen.tar.lzma
2008/06/17 | 77313 | systems/win32/miktex/tm/packages/proba.tar.lzma
2017/07/12 | 988486 | systems/win32/miktex/tm/packages/probsoln.tar.lzma
@@ -302176,7 +302177,7 @@
2007/02/12 | 395234 | systems/win32/texshell32/WinTeXShell32.zip
2021/10/01 | 2480 | systems/win32/TLW64/00README.TLW64
2021/10/01 | 61484773 | systems/win32/TLW64/gs9550w64full-gpl.exe
-2022/02/27 | 99126810 | systems/win32/TLW64/tl-win64.zip
+2022/02/28 | 99135706 | systems/win32/TLW64/tl-win64.zip
1996/11/26 | 1822 | systems/win32/tsconfig/readme
1996/11/26 | 30343 | systems/win32/tsconfig/tsconfig.zip
1998/01/20 | 766976 | systems/win32/util/cmdsh110.exe
@@ -302409,7 +302410,7 @@
2004/06/04 | 404 | tds/tds.sed
2004/06/23 | 65418 | tds/tds.tex
2019/05/29 | 304264 | tds.zip
-2022/03/01 | 186 | timestamp
+2022/03/02 | 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 1b2ae8bfbc..3c3fbf7ff9 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index 0f89d2c935..a936ff24be 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,330 +1,423 @@
-2022/02/28 | 99712 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
-2022/02/28 | 99248 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
-2022/02/28 | 97022 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
-2022/02/28 | 96598 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
+2022/03/01 | 99713 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
+2022/03/01 | 99249 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
+2022/03/01 | 97021 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
+2022/03/01 | 96600 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
+2022/03/01 | 95463 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
+2022/03/01 | 95316 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2022/03/01 | 93956 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
+2022/03/01 | 92955 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
+2022/03/01 | 928 | systems/win32/miktex/tm/packages/pr.ini
+2022/03/01 | 92276 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHPub.pdf
+2022/03/01 | 88756 | macros/latex/contrib/tabularray/tabularray.tex
+2022/03/01 | 88125 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2022/03/01 | 8787 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2022/03/01 | 8776 | macros/latex/contrib/bfh-ci/tex/bfh-projectproposal.cfg
+2022/03/01 | 874353 | macros/latex/contrib/tabularray/tabularray.pdf
+2022/03/01 | 86484 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
+2022/03/01 | 825811 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2022/03/01 | 81639 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2022/03/01 | 80737 | macros/latex/contrib/easybook/easybook.tex
+2022/03/01 | 794929 | info/install-latex-guide-zh-cn.zip
+2022/03/01 | 793321 | macros/latex/contrib/tabularray.zip
+2022/03/01 | 78983 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
+2022/03/01 | 78965 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2022/03/01 | 7759 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
+2022/03/01 | 77078 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2022/03/01 | 7656 | macros/latex/contrib/bfh-ci/example/DEMO-BFHSciPoster.tex
+2022/03/01 | 762605 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
+2022/03/01 | 76233 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2022/03/01 | 760842 | macros/generic/markdown/markdown.pdf
+2022/03/01 | 75 | macros/generic/markdown/examples/scientists.csv
+2022/03/01 | 759645 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
+2022/03/01 | 754326 | info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf
+2022/03/01 | 74064 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2022/03/01 | 73665 | macros/latex/contrib/easybook/easybook.dtx
+2022/03/01 | 73595 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
+2022/03/01 | 73501 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2022/03/01 | 73203 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2022/03/01 | 73011 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2022/03/01 | 71999 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
+2022/03/01 | 71000 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2022/03/01 | 688942 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin.tar.lzma
+2022/03/01 | 68889 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
+2022/03/01 | 68622 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
+2022/03/01 | 682351 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2022/03/01 | 68006 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
+2022/03/01 | 67651 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
+2022/03/01 | 67227 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2022/03/01 | 666305 | macros/generic/markdown/markdown.html
+2022/03/01 | 66380 | macros/latex/contrib/create-theorem/create-theorem.sty
+2022/03/01 | 65099 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2022/03/01 | 64721 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
+2022/03/01 | 64528 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
+2022/03/01 | 64473 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
+2022/03/01 | 640366 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2022/03/01 | 640179 | systems/win32/miktex/tm/packages/files.csv.lzma
+2022/03/01 | 63761 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2022/03/01 | 6373 | macros/latex/contrib/bfh-ci/tex/bfhthesis.cls
+2022/03/01 | 633938 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
+2022/03/01 | 63390 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2022/03/01 | 630 | macros/latex/contrib/create-theorem/README.md
+2022/03/01 | 629479 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2022/03/01 | 62128 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2022/03/01 | 618740 | macros/latex/contrib/easybook.zip
+2022/03/01 | 605680 | macros/generic/markdown/markdown.dtx
+2022/03/01 | 599042 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2022/03/01 | 591474 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
+2022/03/01 | 58686 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
+2022/03/01 | 58655 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2022/03/01 | 5800 | macros/latex/contrib/bfh-ci/tex/bfhletter.sty
+2022/03/01 | 578236 | macros/latex/contrib/easybook/easybook.pdf
+2022/03/01 | 57475 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
+2022/03/01 | 57446 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
+2022/03/01 | 57348 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2022/03/01 | 57319 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2022/03/01 | 57044 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
+2022/03/01 | 56986 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
+2022/03/01 | 566551 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2022/03/01 | 560102 | language/korean/kotex-oblivoir.zip
+2022/03/01 | 55763 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
+2022/03/01 | 55412 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
+2022/03/01 | 54484 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHProjektProposal.pdf
+2022/03/01 | 532219 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
+2022/03/01 | 527876 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2022/03/01 | 52593 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2022/03/01 | 52312 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2022/03/01 | 52075 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2022/03/01 | 51514 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
+2022/03/01 | 51466 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
+2022/03/01 | 5142 | info/install-latex-guide-zh-cn/appendix/updateinfo.tex
+2022/03/01 | 50825 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
+2022/03/01 | 50693 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHBeamer-Sidebar.pdf
+2022/03/01 | 5043 | macros/latex/contrib/bfh-ci/tex/bfh-layout-terminal.cfg
+2022/03/01 | 50238 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHFactsheet.pdf
+2022/03/01 | 48825 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2022/03/01 | 484789 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
+2022/03/01 | 481295 | macros/latex/contrib/mattens/mattens.pdf
+2022/03/01 | 48092 | macros/latex/contrib/mattens/mattens.dtx
+2022/03/01 | 48018 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2022/03/01 | 479425 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
+2022/03/01 | 477759 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
+2022/03/01 | 46617 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHSciPoster.pdf
+2022/03/01 | 46089 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
+2022/03/01 | 4603 | macros/latex/contrib/bfh-ci/tex/bfh-layout-boxes.cfg
+2022/03/01 | 45942 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
+2022/03/01 | 45701 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2022/03/01 | 4530 | macros/generic/markdown/markdown.css
+2022/03/01 | 4527 | macros/latex/contrib/bfh-ci/README.md
+2022/03/01 | 4485 | macros/generic/markdown/docstrip.cfg
+2022/03/01 | 439945 | macros/latex/contrib/bfh-ci.zip
+2022/03/01 | 43936 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2022/03/01 | 43806 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2022/03/01 | 43664 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2022/03/01 | 43642 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
+2022/03/01 | 43371 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
+2022/03/01 | 42746 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
+2022/03/01 | 4190 | macros/latex/contrib/bfh-ci/tex/bfhcolors.sty
+2022/03/01 | 4171 | macros/latex/contrib/bfh-ci/example/DEMO-BFHFactsheet.tex
+2022/03/01 | 41456 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHThesis.pdf
+2022/03/01 | 41317 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
+2022/03/01 | 41280 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
+2022/03/01 | 41226 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2022/03/01 | 40706 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHBeamer.pdf
+2022/03/01 | 39719 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
+2022/03/01 | 394184 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2022/03/01 | 3901 | macros/latex/contrib/bfh-ci/tex/bfhlettersize9.5pt.clo
+2022/03/01 | 3859 | macros/latex/contrib/bfh-ci/tex/beamercolorthemeBFH.sty
+2022/03/01 | 38578 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
+2022/03/01 | 38479 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
+2022/03/01 | 3788 | macros/latex/contrib/bfh-ci/tex/bfh-layout-listings.cfg
+2022/03/01 | 37394 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2022/03/01 | 37182 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
+2022/03/01 | 37088 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2022/03/01 | 3612 | info/install-latex-guide-zh-cn/appendix/wsladdition.tex
+2022/03/01 | 36063 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
+2022/03/01 | 3538 | macros/latex/contrib/bfh-ci/tex/bfhtranslations-french.trsl
+2022/03/01 | 35233 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2022/03/01 | 35189 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2022/03/01 | 351832 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2022/03/01 | 3508 | macros/latex/contrib/bfh-ci/tex/bfhtranslations-english.trsl
+2022/03/01 | 3429 | macros/latex/contrib/bfh-ci/tex/bfhtranslations-german.trsl
+2022/03/01 | 34039 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2022/03/01 | 332517 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
+2022/03/01 | 32937 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
+2022/03/01 | 326729 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2022/03/01 | 3215 | macros/latex/contrib/bfh-ci/tex/beamerouterthemeBFH.sty
+2022/03/01 | 32138 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2022/03/01 | 31 | macros/generic/markdown/VERSION
+2022/03/01 | 316653 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
+2022/03/01 | 3164 | macros/latex/contrib/bfh-ci/tex/bfhpub.cls
+2022/03/01 | 31570 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2022/03/01 | 31566 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
+2022/03/01 | 31411 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
+2022/03/01 | 31337 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2022/03/01 | 3129 | macros/generic/markdown/examples/example.md
+2022/03/01 | 3103 | macros/latex/contrib/bfh-ci/tex/bfhbeamer.cls
+2022/03/01 | 3091 | macros/latex/contrib/bfh-ci/tex/beamerouterthemeBFH-sidebar.sty
+2022/03/01 | 3069 | macros/latex/contrib/mattens/README
+2022/03/01 | 30525 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2022/03/01 | 3030 | macros/latex/contrib/bfh-ci/tex/beamerfontthemeBFH.sty
+2022/03/01 | 30177 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
+2022/03/01 | 301364 | macros/latex/contrib/mattens/mattens_sample.zip
+2022/03/01 | 296015 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2022/03/01 | 28886 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
+2022/03/01 | 2879 | macros/latex/contrib/mattens/mattens.ins
+2022/03/01 | 28699 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
+2022/03/01 | 286872 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2022/03/01 | 286544 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2022/03/01 | 28595 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2022/03/01 | 285911 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
+2022/03/01 | 284 | macros/latex/contrib/tabularray/README.txt
+2022/03/01 | 28418 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
+2022/03/01 | 281707 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2022/03/01 | 2816621 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2022/03/01 | 2796 | macros/latex/contrib/crefthe/README.md
+2022/03/01 | 2788 | macros/latex/contrib/bfh-ci/tex/bfh-factsheet.cfg
+2022/03/01 | 27627 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
+2022/03/01 | 27590 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2022/03/01 | 27243 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
+2022/03/01 | 2696292 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
+2022/03/01 | 267659 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2022/03/01 | 267548 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2022/03/01 | 259093 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
+2022/03/01 | 256392 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
+2022/03/01 | 2560 | macros/latex/contrib/bfh-ci/tex/bfh-layout-rules.cfg
+2022/03/01 | 254982 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
+2022/03/01 | 25457 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
+2022/03/01 | 25306 | info/install-latex-guide-zh-cn/chapter/editor.tex
+2022/03/01 | 251337 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
+2022/03/01 | 25106 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
+2022/03/01 | 25066 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2022/03/01 | 24676 | macros/latex/contrib/bfh-ci/tex/bfhlayout.sty
+2022/03/01 | 244866 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2022/03/01 | 24168 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2022/03/01 | 240697 | macros/latex/contrib/tabularray/tabularray.sty
+2022/03/01 | 23935 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2022/03/01 | 2320 | macros/latex/contrib/bfh-ci/example/DEMO-BFHBeamer-Sidebar.tex
+2022/03/01 | 2307 | macros/latex/contrib/bfh-ci/tex/beamerthemeBFH.sty
+2022/03/01 | 229949 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
+2022/03/01 | 22371 | macros/generic/markdown/libraries/markdown-tinyyaml.lua
+2022/03/01 | 22163 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
+2022/03/01 | 2177 | macros/latex/contrib/bfh-ci/tex/bfhfonts.sty
+2022/03/01 | 216060 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2022/03/01 | 213206 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
+2022/03/01 | 21319 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
+2022/03/01 | 2122 | macros/latex/contrib/bfh-ci/tex/bfh-layout-tabular.cfg
+2022/03/01 | 2119 | macros/latex/contrib/bfh-ci/example/DEMO-BFHProjektProposal.tex
+2022/03/01 | 210200 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
+2022/03/01 | 2064556 | systems/doc/luatex.zip
+2022/03/01 | 2039 | macros/latex/contrib/bfh-ci/tex/bfhmodule.sty
+2022/03/01 | 202533 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2022/03/01 | 20191 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
+2022/03/01 | 200075 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
+2022/03/01 | 199568 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
+2022/03/01 | 198684 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
+2022/03/01 | 1983663 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2022/03/01 | 197457 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
+2022/03/01 | 196183 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2022/03/01 | 19106 | macros/latex/contrib/crefthe/LICENSE
+2022/03/01 | 19106 | macros/latex/contrib/create-theorem/LICENSE
+2022/03/01 | 188212 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin.tar.lzma
+2022/03/01 | 1881 | macros/latex/contrib/bfh-ci/example/DEMO-BFHBeamer.tex
+2022/03/01 | 18645 | macros/latex/contrib/create-theorem/create-theorem-doc.tex
+2022/03/01 | 18499 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2022/03/01 | 18492 | macros/latex/contrib/bfh-ci/tex/bfhsciposter.cls
+2022/03/01 | 1842 | macros/latex/contrib/bfh-ci/tex/bfh-a0paper.clo
+2022/03/01 | 18358 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2022/03/01 | 181677 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2022/03/01 | 180014 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
+2022/03/01 | 1794 | macros/latex/contrib/bfh-ci/tex/bfh-a3paper.clo
+2022/03/01 | 1792 | macros/latex/contrib/bfh-ci/tex/bfh-a2paper.clo
+2022/03/01 | 1789 | macros/latex/contrib/bfh-ci/tex/bfh-a1paper.clo
+2022/03/01 | 1753742 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
+2022/03/01 | 172561 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2022/03/01 | 168764 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2022/03/01 | 1682 | macros/generic/markdown/examples/context-mkiv.tex
+2022/03/01 | 16571 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
+2022/03/01 | 16504 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
+2022/03/01 | 1639 | macros/generic/markdown/examples/latex.tex
+2022/03/01 | 16226 | macros/generic/markdown/README.md
+2022/03/01 | 1583 | macros/latex/contrib/bfh-ci/example/DEMO-BFHLetter.tex
+2022/03/01 | 156732 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
+2022/03/01 | 155456 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2022/03/01 | 152071 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
+2022/03/01 | 1518 | macros/latex/contrib/bfh-ci/tex/bfh-a6paper.clo
+2022/03/01 | 1508 | macros/latex/contrib/bfh-ci/tex/bfh-beamerarticle.cfg
+2022/03/01 | 15076 | macros/latex/contrib/bfh-ci/example/DEMO-BFHPub.tex
+2022/03/01 | 1499051 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2022/03/01 | 1491 | macros/generic/markdown/examples/context-mkii.tex
+2022/03/01 | 14867 | macros/latex/contrib/bfh-ci/tex/beamerinnerthemeBFH.sty
+2022/03/01 | 1464 | macros/latex/contrib/bfh-ci/tex/bfh-a5paper.clo
+2022/03/01 | 1463 | macros/latex/contrib/bfh-ci/tex/bfh-a4paper.clo
+2022/03/01 | 1454268 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2022/03/01 | 14412 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2022/03/01 | 1439 | macros/latex/contrib/bfh-ci/example/DEMO-BFHFromaddress.lco
+2022/03/01 | 1426785 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2022/03/01 | 1426499 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2022/03/01 | 1421 | language/korean/kotex-oblivoir/README
+2022/03/01 | 140951 | macros/generic/markdown/markdown.png
+2022/03/01 | 139420 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2022/03/01 | 13621 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHLetter.pdf
+2022/03/01 | 136111 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
+2022/03/01 | 1355332 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
+2022/03/01 | 135255 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2022/03/01 | 13511 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
+2022/03/01 | 1336 | macros/latex/contrib/bfh-ci/example/DEMO-BFHThesis.tex
+2022/03/01 | 1333 | macros/generic/markdown/markdown.ins
+2022/03/01 | 1322723 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2022/03/01 | 1318365 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2022/03/01 | 1318285 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2022/03/01 | 130775 | macros/latex/contrib/create-theorem.zip
+2022/03/01 | 1306312 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
+2022/03/01 | 128576 | macros/latex/contrib/crefthe.zip
+2022/03/01 | 126757 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
+2022/03/01 | 120468 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
+2022/03/01 | 1180915 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
+2022/03/01 | 116473 | macros/latex/contrib/crefthe/crefthe-doc.pdf
+2022/03/01 | 115691 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2022/03/01 | 1156087 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2022/03/01 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
+2022/03/01 | 113013 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2022/03/01 | 112474 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2022/03/01 | 112139 | macros/latex/contrib/create-theorem/create-theorem-doc.pdf
+2022/03/01 | 1119978 | install/macros/generic/markdown.tds.zip
+2022/03/01 | 109516 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2022/03/01 | 109178 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2022/03/01 | 10806 | macros/latex/contrib/crefthe/crefthe-doc.tex
+2022/03/01 | 1060382 | macros/generic/markdown.zip
+2022/03/01 | 104710 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2022/03/01 | 103393 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2022/03/01 | 103056 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2022/03/01 | 10206 | macros/latex/contrib/crefthe/crefthe.sty
+2022/03/01 | 1020251 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
+2022/03/01 | 101443 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
+2022/03/01 | 1007129 | macros/latex/contrib/mattens.zip
+2022/02/28 | 99135706 | systems/win32/TLW64/tl-win64.zip
+2022/02/28 | 98187 | systems/doc/luatex/luatex-nodes.tex
2022/02/28 | 958568 | systems/texlive/tlnet/archive/mcf2graph.doc.r62243.tar.xz
-2022/02/28 | 95463 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
-2022/02/28 | 95315 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
-2022/02/28 | 93956 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
2022/02/28 | 93736 | macros/latex/contrib/caption/subcaption.dtx
2022/02/28 | 9303 | macros/latex/contrib/caption/caption-ams-smf.dtx
-2022/02/28 | 92954 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
-2022/02/28 | 928 | systems/win32/miktex/tm/packages/pr.ini
2022/02/28 | 91974 | graphics/pgf/contrib/tzplot/tzplot-doc-C-v2.0.tex
2022/02/28 | 9033 | macros/latex/contrib/caption/CHANGELOG
2022/02/28 | 89996 | macros/latex/contrib/caption/ltcaption.pdf
2022/02/28 | 88462 | macros/latex/contrib/hvlogos.zip
-2022/02/28 | 88125 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2022/02/28 | 8787 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
-2022/02/28 | 86484 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
2022/02/28 | 86065 | macros/latex/contrib/hvlogos/doc/hvlogos-doc.pdf
2022/02/28 | 86025 | graphics/pgf/contrib/tzplot/tzplot-doc-D-v2.0.tex
-2022/02/28 | 825811 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
-2022/02/28 | 81640 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
-2022/02/28 | 80734 | macros/latex/contrib/easybook/easybook.tex
-2022/02/28 | 78982 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
-2022/02/28 | 78964 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
2022/02/28 | 7891 | macros/latex/contrib/caption/caption-thesis.dtx
2022/02/28 | 779 | macros/latex/contrib/lectureslides/README.md
2022/02/28 | 77912 | systems/texlive/tlnet/archive/lutabulartools.doc.r62253.tar.xz
-2022/02/28 | 7759 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
2022/02/28 | 77411 | macros/latex/contrib/caption/caption2.pdf
2022/02/28 | 7725 | macros/latex/contrib/caption/caption-ntg.dtx
-2022/02/28 | 77077 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
-2022/02/28 | 762604 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
-2022/02/28 | 76233 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
2022/02/28 | 7615 | macros/latex/contrib/caption/caption-elsarticle.dtx
-2022/02/28 | 761101 | macros/generic/markdown/markdown.pdf
-2022/02/28 | 75 | macros/generic/markdown/examples/scientists.csv
-2022/02/28 | 759643 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
-2022/02/28 | 74065 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
-2022/02/28 | 73774 | macros/latex/contrib/easybook/easybook.dtx
-2022/02/28 | 73595 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
-2022/02/28 | 73501 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
-2022/02/28 | 73202 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
2022/02/28 | 7305 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
-2022/02/28 | 73010 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
2022/02/28 | 7276 | systems/texlive/tlnet/archive/luaotfload.source.r62239.tar.xz
2022/02/28 | 7256 | systems/texlive/tlnet/archive/create-theorem.r62245.tar.xz
2022/02/28 | 72168 | systems/texlive/tlnet/archive/spectralsequences.r62262.tar.xz
-2022/02/28 | 72003 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
2022/02/28 | 71588 | systems/texlive/tlnet/archive/stex.source.r62231.tar.xz
-2022/02/28 | 71000 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
2022/02/28 | 70884 | systems/texlive/tlnet/archive/stex.r62231.tar.xz
2022/02/28 | 692336 | systems/texlive/tlnet/archive/projlib.doc.r62251.tar.xz
-2022/02/28 | 688942 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin.tar.lzma
-2022/02/28 | 68890 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
-2022/02/28 | 68622 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
-2022/02/28 | 682350 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
2022/02/28 | 6809892 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2022/02/28 | 68006 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
-2022/02/28 | 67651 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
2022/02/28 | 67305 | macros/latex/contrib/caption/caption-light.pdf
-2022/02/28 | 67225 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
2022/02/28 | 6705 | macros/latex/contrib/hvlogos/latex/hvlogos.sty
-2022/02/28 | 666305 | macros/generic/markdown/markdown.html
2022/02/28 | 66490 | macros/latex/contrib/caption/bicaption.dtx
2022/02/28 | 6596 | systems/texlive/tlnet/archive/collection-latexextra.r62245.tar.xz
2022/02/28 | 652 | systems/texlive/tlnet/archive/collection-xetex.r62241.tar.xz
-2022/02/28 | 65100 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
2022/02/28 | 6472 | systems/texlive/tlnet/archive/proflycee.r62260.tar.xz
-2022/02/28 | 64721 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
-2022/02/28 | 64526 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
-2022/02/28 | 64473 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
-2022/02/28 | 640366 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2022/02/28 | 640179 | systems/win32/miktex/tm/packages/files.csv.lzma
-2022/02/28 | 63762 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
-2022/02/28 | 633940 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
-2022/02/28 | 63390 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
-2022/02/28 | 629477 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
2022/02/28 | 623992 | systems/texlive/tlnet/archive/luaotfload.doc.r62239.tar.xz
-2022/02/28 | 62128 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
-2022/02/28 | 618818 | macros/latex/contrib/easybook.zip
2022/02/28 | 61711 | graphics/pgf/contrib/tzplot/tzplot-doc-B-v2.0.tex
2022/02/28 | 611056 | systems/texlive/tlnet/archive/luaotfload.r62239.tar.xz
-2022/02/28 | 605587 | macros/generic/markdown/markdown.dtx
-2022/02/28 | 599042 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
-2022/02/28 | 591471 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
-2022/02/28 | 58687 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
-2022/02/28 | 58656 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
-2022/02/28 | 578235 | macros/latex/contrib/easybook/easybook.pdf
-2022/02/28 | 57474 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
-2022/02/28 | 57446 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
-2022/02/28 | 57348 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
-2022/02/28 | 57318 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
2022/02/28 | 5720 | systems/texlive/tlnet/archive/lutabulartools.r62253.tar.xz
-2022/02/28 | 57043 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
-2022/02/28 | 56986 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
-2022/02/28 | 566550 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
-2022/02/28 | 55763 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
-2022/02/28 | 55411 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
-2022/02/28 | 532219 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
-2022/02/28 | 527878 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
-2022/02/28 | 52592 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
-2022/02/28 | 52312 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
-2022/02/28 | 52074 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
-2022/02/28 | 51514 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
-2022/02/28 | 51467 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
+2022/02/28 | 5459 | language/korean/kotex-oblivoir/tex/memhangul-common/fapapersize.sty
2022/02/28 | 511 | macros/latex/contrib/hvlogos/Changes
2022/02/28 | 51089 | graphics/pgf/contrib/tzplot/tzplot-doc-C1-v2.0.tex
2022/02/28 | 50904 | macros/latex/contrib/caption/caption2.dtx
-2022/02/28 | 50823 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
2022/02/28 | 5029031 | macros/latex/contrib/hvfloat/doc/hvfloat.pdf
2022/02/28 | 501724 | systems/texlive/tlnet/archive/fnpct.doc.r62249.tar.xz
2022/02/28 | 49787 | macros/latex/contrib/lectureslides.zip
2022/02/28 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
-2022/02/28 | 48824 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
-2022/02/28 | 484788 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
2022/02/28 | 48424 | macros/latex/contrib/lectureslides/lectureslides-doc.pdf
-2022/02/28 | 48018 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
-2022/02/28 | 479430 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
-2022/02/28 | 477758 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
2022/02/28 | 475196 | systems/texlive/tlnet/archive/proflycee.doc.r62260.tar.xz
2022/02/28 | 46949 | macros/latex/contrib/caption/fallback/v2.1/caption2.dtx
2022/02/28 | 46911 | systems/texlive/tlnet/tlpkg/translations/messages.pot
-2022/02/28 | 46089 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
-2022/02/28 | 45942 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
-2022/02/28 | 45699 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
2022/02/28 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
2022/02/28 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2022/02/28 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
2022/02/28 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
-2022/02/28 | 4530 | macros/generic/markdown/markdown.css
-2022/02/28 | 4485 | macros/generic/markdown/docstrip.cfg
2022/02/28 | 444 | systems/texlive/tlnet/archive/mcf2graph.r62243.tar.xz
2022/02/28 | 4426 | macros/latex/contrib/lectureslides/lectureslides-doc.tex
2022/02/28 | 44134 | graphics/pgf/contrib/tzplot/tzplot-doc-C2-v2.0.tex
-2022/02/28 | 43936 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
-2022/02/28 | 43805 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
-2022/02/28 | 43664 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
-2022/02/28 | 43642 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
-2022/02/28 | 43371 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
2022/02/28 | 427518 | macros/latex/contrib/caption/caption.pdf
-2022/02/28 | 42747 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
-2022/02/28 | 41316 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
-2022/02/28 | 41279 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
2022/02/28 | 41260 | systems/texlive/tlnet/archive/projlib.source.r62251.tar.xz
-2022/02/28 | 41226 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
2022/02/28 | 404028 | systems/texlive/tlnet/archive/texlive-scripts.doc.r62215.tar.xz
-2022/02/28 | 39719 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
-2022/02/28 | 394185 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
2022/02/28 | 3922 | macros/latex/contrib/caption/caption.ins
-2022/02/28 | 38577 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
2022/02/28 | 3847 | macros/latex/contrib/hvfloat/Changes
-2022/02/28 | 38479 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
-2022/02/28 | 37394 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
-2022/02/28 | 37182 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
-2022/02/28 | 37089 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
-2022/02/28 | 36063 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
-2022/02/28 | 35233 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
-2022/02/28 | 35187 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
-2022/02/28 | 351832 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2022/02/28 | 3564 | language/korean/kotex-oblivoir/tex/memhangul-common/oblivoir-misc.sty
2022/02/28 | 34912 | systems/texlive/tlnet/archive/penlight.doc.r62255.tar.xz
-2022/02/28 | 34038 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
2022/02/28 | 334915 | macros/latex/contrib/caption/caption.dtx
-2022/02/28 | 332516 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
-2022/02/28 | 32935 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
-2022/02/28 | 326728 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
-2022/02/28 | 32138 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
-2022/02/28 | 31 | macros/generic/markdown/VERSION
-2022/02/28 | 316652 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
-2022/02/28 | 31569 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
-2022/02/28 | 31566 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
-2022/02/28 | 31410 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
-2022/02/28 | 31335 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
-2022/02/28 | 3129 | macros/generic/markdown/examples/example.md
2022/02/28 | 3067 | macros/latex/contrib/caption/README
-2022/02/28 | 30527 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
-2022/02/28 | 30175 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
2022/02/28 | 30030 | macros/latex/contrib/caption/ltcaption.dtx
-2022/02/28 | 296014 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
2022/02/28 | 2912 | systems/texlive/tlnet/archive/crefthe.r62247.tar.xz
2022/02/28 | 291008 | macros/latex/contrib/caption/fallback/v3.1/caption.dtx
-2022/02/28 | 28886 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
-2022/02/28 | 28699 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
-2022/02/28 | 286872 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
-2022/02/28 | 286545 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
-2022/02/28 | 28593 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
-2022/02/28 | 285909 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
-2022/02/28 | 28418 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
-2022/02/28 | 281707 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
-2022/02/28 | 2816621 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
2022/02/28 | 2776 | systems/texlive/tlnet/archive/book-of-common-prayer.r62241.tar.xz
-2022/02/28 | 27629 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
-2022/02/28 | 27591 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2022/02/28 | 27243 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
-2022/02/28 | 2696291 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
-2022/02/28 | 267681 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2022/02/28 | 267521 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
-2022/02/28 | 259092 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
-2022/02/28 | 256390 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
+2022/02/28 | 256845 | language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.pdf
2022/02/28 | 25628820 | systems/texlive/tlnet/install-tl.zip
-2022/02/28 | 254981 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
-2022/02/28 | 25458 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
-2022/02/28 | 251333 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
-2022/02/28 | 25106 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
-2022/02/28 | 25066 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
2022/02/28 | 244 | macros/latex/contrib/hvlogos/README
-2022/02/28 | 244866 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
-2022/02/28 | 24168 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
-2022/02/28 | 23935 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
2022/02/28 | 2356012 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
-2022/02/28 | 229951 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
-2022/02/28 | 22371 | macros/generic/markdown/libraries/markdown-tinyyaml.lua
+2022/02/28 | 22203 | language/korean/kotex-oblivoir/doc/ChangeLog
2022/02/28 | 221744 | macros/latex/contrib/caption/subcaption.pdf
-2022/02/28 | 22163 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
2022/02/28 | 217944 | graphics/pgf/contrib/tzplot/tzplot.sty
-2022/02/28 | 216061 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
2022/02/28 | 21420 | macros/latex/contrib/caption/fallback/v2.0/caption2.dtx
2022/02/28 | 21383 | graphics/pgf/contrib/tzplot/tzplot-doc.tex
-2022/02/28 | 213206 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
-2022/02/28 | 21318 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
2022/02/28 | 21191 | macros/latex/contrib/caption/elephant.eps
-2022/02/28 | 210199 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
2022/02/28 | 2092 | macros/latex/contrib/lectureslides/lectureslides.sty
2022/02/28 | 20875399 | systems/texlive/tlnet/install-tl-windows.exe
2022/02/28 | 2057000 | systems/texlive/tlnet/archive/arara.doc.r62257.tar.xz
-2022/02/28 | 202535 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
-2022/02/28 | 20191 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
-2022/02/28 | 200074 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
-2022/02/28 | 199569 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
-2022/02/28 | 198682 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
-2022/02/28 | 1983663 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
-2022/02/28 | 197456 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
-2022/02/28 | 196184 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
2022/02/28 | 19458 | macros/latex/contrib/caption/caption-koma.dtx
2022/02/28 | 192575 | macros/latex/contrib/caption/caption3.dtx
2022/02/28 | 1906008 | systems/texlive/tlnet/archive/stex.doc.r62231.tar.xz
2022/02/28 | 19008 | macros/latex/contrib/caption/fallback/v1/caption.dtx
-2022/02/28 | 188210 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin.tar.lzma
-2022/02/28 | 18500 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
-2022/02/28 | 18357 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2022/02/28 | 184426 | support/TeX4ht/source/ChangeLog
2022/02/28 | 182082 | macros/latex/contrib/caption/fallback/v3.0/caption.dtx
-2022/02/28 | 181676 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
2022/02/28 | 181049 | macros/latex/contrib/caption/fallback/v3.3/caption.dtx
-2022/02/28 | 180016 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
2022/02/28 | 178838 | macros/latex/contrib/caption/fallback/v3.5/caption3.dtx
-2022/02/28 | 1753743 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
-2022/02/28 | 172561 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2022/02/28 | 1784850 | systems/doc/luatex/luatex.pdf
2022/02/28 | 17171320 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
2022/02/28 | 169193 | macros/latex/contrib/caption/fallback/v3.4/caption.dtx
-2022/02/28 | 168765 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
-2022/02/28 | 1682 | macros/generic/markdown/examples/context-mkiv.tex
2022/02/28 | 1680852 | install/macros/latex/contrib/caption.tds.zip
-2022/02/28 | 16571 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
2022/02/28 | 16540 | systems/texlive/tlnet/archive/projlib.r62251.tar.xz
-2022/02/28 | 16505 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
2022/02/28 | 164934 | macros/latex/contrib/caption/fallback/v3.2/caption.dtx
-2022/02/28 | 1639 | macros/generic/markdown/examples/latex.tex
-2022/02/28 | 16226 | macros/generic/markdown/README.md
2022/02/28 | 161735 | macros/latex/contrib/caption/fallback/v3.5/caption.dtx
2022/02/28 | 1595616 | systems/texlive/tlnet/archive/spectralsequences.doc.r62262.tar.xz
+2022/02/28 | 1592 | language/korean/kotex-oblivoir/tex/oblivoir.cls
2022/02/28 | 15737 | macros/latex/contrib/caption/cat.eps
2022/02/28 | 157254 | macros/latex/contrib/caption/fallback/v3.4/caption3.dtx
-2022/02/28 | 156730 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
-2022/02/28 | 155453 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
2022/02/28 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
2022/02/28 | 153317 | macros/latex/contrib/caption/fallback/v3.3/caption3.dtx
2022/02/28 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2022/02/28 | 152069 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
2022/02/28 | 14994 | macros/latex/contrib/caption/caption-beamer.dtx
-2022/02/28 | 1499051 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
2022/02/28 | 149792 | macros/latex/contrib/caption/bicaption.pdf
-2022/02/28 | 1491 | macros/generic/markdown/examples/context-mkii.tex
2022/02/28 | 1478102 | macros/latex/contrib/caption.zip
2022/02/28 | 14728 | systems/texlive/tlnet/archive/fnpct.r62249.tar.xz
2022/02/28 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2022/02/28 | 1454269 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
2022/02/28 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2022/02/28 | 14412 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
2022/02/28 | 14332431 | macros/latex/contrib/hvfloat.zip
-2022/02/28 | 1426998 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
-2022/02/28 | 1426622 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
2022/02/28 | 14209 | graphics/pgf/contrib/tzplot/tzplot-doc-E-v2.0.tex
-2022/02/28 | 140951 | macros/generic/markdown/markdown.png
-2022/02/28 | 139420 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
2022/02/28 | 13813 | graphics/pgf/contrib/tzplot/tzplot-doc-A-v2.0.tex
-2022/02/28 | 136112 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
-2022/02/28 | 1355333 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
2022/02/28 | 1352871 | graphics/pgf/contrib/tzplot.zip
-2022/02/28 | 135253 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
-2022/02/28 | 13512 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
2022/02/28 | 135024 | macros/latex/contrib/caption/fallback/v3.2/caption3.dtx
2022/02/28 | 13430 | macros/latex/contrib/caption/caption-light.dtx
-2022/02/28 | 1333 | macros/generic/markdown/markdown.ins
-2022/02/28 | 1322725 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
-2022/02/28 | 1318839 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
-2022/02/28 | 1317958 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
-2022/02/28 | 1306313 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
2022/02/28 | 129528 | systems/texlive/tlnet/archive/book-of-common-prayer.doc.r62241.tar.xz
-2022/02/28 | 126758 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
2022/02/28 | 1263240 | graphics/pgf/contrib/tzplot/tzplot-doc.pdf
2022/02/28 | 12620 | macros/latex/contrib/caption/caption-memoir.dtx
2022/02/28 | 124236 | systems/texlive/tlnet/archive/crefthe.doc.r62247.tar.xz
2022/02/28 | 121396 | systems/texlive/tlnet/archive/create-theorem.doc.r62245.tar.xz
-2022/02/28 | 120467 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
2022/02/28 | 119821 | macros/latex/contrib/hvfloat/doc/hvfloat.tex
-2022/02/28 | 1180912 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
-2022/02/28 | 115692 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
-2022/02/28 | 1156085 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
-2022/02/28 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
-2022/02/28 | 113012 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
2022/02/28 | 112 | macros/latex/contrib/caption/SUMMARY
-2022/02/28 | 112475 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
-2022/02/28 | 1120328 | install/macros/generic/markdown.tds.zip
-2022/02/28 | 109518 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
-2022/02/28 | 109179 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
2022/02/28 | 108792 | systems/texlive/tlnet/archive/texlive-scripts.r62215.tar.xz
2022/02/28 | 10626840 | systems/texlive/tlnet/archive/arara.r62257.tar.xz
-2022/02/28 | 1060738 | macros/generic/markdown.zip
2022/02/28 | 105380 | systems/texlive/tlnet/archive/penlight.r62255.tar.xz
-2022/02/28 | 104709 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2022/02/28 | 103393 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
-2022/02/28 | 103058 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
-2022/02/28 | 1020252 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
-2022/02/28 | 101443 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
2022/02/28 | 100248 | systems/texlive/tlnet/archive/arara.source.r62257.tar.xz
-2022/02/27 | 99126810 | systems/win32/TLW64/tl-win64.zip
+2022/02/28 | 100219 | language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.tex
2022/02/27 | 9881 | macros/luatex/generic/luaotfload/fontloader-fonts-gbn.lua
2022/02/27 | 984 | support/arara/scripts/rules/arara-rule-make.yaml
2022/02/27 | 98208 | macros/latex/contrib/projlib/ProjLib-doc.dtx
@@ -381,7 +474,6 @@
2022/02/27 | 682 | support/arara/scripts/rules/arara-rule-sketch.yaml
2022/02/27 | 6809 | macros/luatex/generic/luaotfload/luaotfload-case.lua
2022/02/27 | 6644 | macros/luatex/generic/luaotfload/fontloader-l-string.lua
-2022/02/27 | 66239 | macros/latex/contrib/create-theorem/create-theorem.sty
2022/02/27 | 65279 | macros/luatex/generic/luaotfload/fontloader-font-otj.lua
2022/02/27 | 651 | support/arara/scripts/rules/arara-rule-spix.yaml
2022/02/27 | 647 | support/arara/scripts/rules/arara-rule-makeglossarieslite.yaml
@@ -391,7 +483,6 @@
2022/02/27 | 634 | dviware/dvisvgm/src/optimizer/Makefile.am
2022/02/27 | 63211 | macros/luatex/generic/luaotfload/fontloader-font-con.lua
2022/02/27 | 6317 | macros/luatex/generic/luaotfload/luaotfload-status.lua
-2022/02/27 | 630 | macros/latex/contrib/create-theorem/README.md
2022/02/27 | 6309 | macros/luatex/generic/luaotfload/luaotfload-szss.lua
2022/02/27 | 626 | support/arara/scripts/rules/arara-rule-upbibtex.yaml
2022/02/27 | 621 | support/arara/scripts/rules/arara-rule-bibtexu.yaml
@@ -479,7 +570,6 @@
2022/02/27 | 2832 | macros/latex/contrib/projlib/ProjLib.ins
2022/02/27 | 28315 | macros/latex/contrib/fnpct/fnpct-manual.tex
2022/02/27 | 2801 | graphics/mcf2graph/mcf_example.tex
-2022/02/27 | 2796 | macros/latex/contrib/crefthe/README.md
2022/02/27 | 27920 | dviware/dvisvgm/Makefile.in
2022/02/27 | 275 | macros/luatex/generic/luaotfload/luaotfload-main.lua
2022/02/27 | 26880 | support/arara/doc/chapters/cli.tex
@@ -531,8 +621,6 @@
2022/02/27 | 1955764 | macros/luatex/generic/luaotfload.zip
2022/02/27 | 191 | macros/luatex/generic/luaotfload/shaper-demo-graphite.tex
2022/02/27 | 19106 | macros/latex/contrib/projlib/LICENSE
-2022/02/27 | 19106 | macros/latex/contrib/crefthe/LICENSE
-2022/02/27 | 19106 | macros/latex/contrib/create-theorem/LICENSE
2022/02/27 | 19064 | macros/luatex/generic/penlight/penlightextras.lua
2022/02/27 | 1884 | support/arara/scripts/rules/arara-rule-latexmk.yaml
2022/02/27 | 18741 | macros/luatex/generic/luaotfload/luaotfload-harf-define.lua
@@ -546,7 +634,6 @@
2022/02/27 | 1837 | support/arara/scripts/rules/arara-rule-detex.yaml
2022/02/27 | 18378 | macros/luatex/generic/luaotfload/luaotfload.conf.rst
2022/02/27 | 182 | macros/luatex/generic/luaotfload/shaper-demo.tex
-2022/02/27 | 18214 | macros/latex/contrib/create-theorem/create-theorem-doc.tex
2022/02/27 | 1812 | macros/luatex/generic/luaotfload/luaotfload.sty
2022/02/27 | 1794 | macros/luatex/generic/luaotfload/fontloader-font-ini.lua
2022/02/27 | 17496 | graphics/mcf2graph/CHANGELOG
@@ -597,13 +684,11 @@
2022/02/27 | 1324 | support/arara/scripts/rules/arara-rule-sage.yaml
2022/02/27 | 131975 | support/arara/source/arara-6.1.6-src.zip
2022/02/27 | 131645 | macros/unicodetex/latex/book-of-common-prayer.zip
-2022/02/27 | 129781 | macros/latex/contrib/create-theorem.zip
2022/02/27 | 1284 | support/arara/scripts/rules/arara-rule-pdfcsplain.yaml
2022/02/27 | 1282 | support/arara/scripts/rules/arara-rule-llmk.yaml
2022/02/27 | 12829 | macros/luatex/generic/luaotfload/luaotfload-tool.1
2022/02/27 | 1278 | support/arara/scripts/rules/arara-rule-dvipspdf.yaml
2022/02/27 | 1276 | support/arara/scripts/rules/arara-rule-luahbtex.yaml
-2022/02/27 | 127687 | macros/latex/contrib/crefthe.zip
2022/02/27 | 1274 | support/arara/scripts/rules/arara-rule-metapost.yaml
2022/02/27 | 12745 | macros/luatex/generic/luaotfload/fontloader-basics-gen.lua
2022/02/27 | 1272 | support/arara/scripts/rules/arara-rule-csplain.yaml
@@ -623,20 +708,16 @@
2022/02/27 | 1166 | support/arara/scripts/rules/arara-rule-xetex.yaml
2022/02/27 | 1166 | support/arara/scripts/rules/arara-rule-uptex.yaml
2022/02/27 | 1162 | support/arara/scripts/rules/arara-rule-ptex.yaml
-2022/02/27 | 115616 | macros/latex/contrib/crefthe/crefthe-doc.pdf
2022/02/27 | 11474 | macros/luatex/generic/luaotfload/fontloader-util-fil.lua
2022/02/27 | 11323 | macros/luatex/generic/luaotfload/luaotfload-log.lua
-2022/02/27 | 111285 | macros/latex/contrib/create-theorem/create-theorem-doc.pdf
2022/02/27 | 1111 | support/arara/scripts/rules/arara-rule-xdvipdfmx.yaml
2022/02/27 | 1107 | support/arara/scripts/rules/arara-rule-animate.yaml
2022/02/27 | 1105 | support/arara/scripts/rules/arara-rule-authorindex.yaml
2022/02/27 | 10984 | macros/luatex/generic/luaotfload/luaotfload-resolvers.lua
-2022/02/27 | 10798 | macros/latex/contrib/crefthe/crefthe-doc.tex
2022/02/27 | 1062 | support/arara/scripts/rules/arara-rule-etex.yaml
2022/02/27 | 1050 | support/arara/scripts/rules/arara-rule-tex.yaml
2022/02/27 | 1046 | support/arara/doc/rules/quickstart.yaml
2022/02/27 | 1032 | support/arara/doc/rules/manual.yaml
-2022/02/27 | 10283 | macros/latex/contrib/crefthe/crefthe.sty
2022/02/27 | 102502 | macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua
2022/02/27 | 10207 | macros/luatex/generic/luaotfload/fontloader-basics-nod.lua
2022/02/27 | 101318 | graphics/mcf2graph/mcf2graph.mp
@@ -1001,7 +1082,6 @@
2022/02/26 | 2083 | macros/latex/required/babel/base/README.md
2022/02/26 | 206 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__unmatched_brackets.snap
2022/02/26 | 206 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__unmatched_braces.snap
-2022/02/26 | 2064382 | systems/doc/luatex.zip
2022/02/26 | 205 | support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__hello_world.snap
2022/02/26 | 204755 | fonts/xcharter/doc/xcharter-doc.pdf
2022/02/26 | 2021 | support/texlab/docs/custom_messages.md
@@ -1163,7 +1243,6 @@
2022/02/25 | 2180 | macros/latex/contrib/stex/tex/etc/lststex.sty
2022/02/25 | 2006 | macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-shape.tex
2022/02/25 | 18427 | macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-by.tex
-2022/02/25 | 1784731 | systems/doc/luatex/luatex.pdf
2022/02/25 | 170512 | systems/texlive/tlnet/archive/l3kernel.r62165.tar.xz
2022/02/25 | 16935 | macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-triangles.tex
2022/02/25 | 164092 | systems/texlive/tlnet/archive/luacensor.doc.r62167.tar.xz
@@ -2762,7 +2841,6 @@
2022/02/23 | 198592 | systems/texlive/tlnet/archive/rutitlepage.doc.r62143.tar.xz
2022/02/23 | 19312 | systems/texlive/tlnet/archive/jadetex.source.r62145.tar.xz
2022/02/23 | 18996 | systems/texlive/tlnet/archive/cslatex.doc.r62145.tar.xz
-2022/02/23 | 184070 | support/TeX4ht/source/ChangeLog
2022/02/23 | 18260 | systems/texlive/tlnet/archive/xmltex.r62145.tar.xz
2022/02/23 | 17004 | systems/texlive/tlnet/archive/xmltex.doc.r62145.tar.xz
2022/02/23 | 167523 | macros/luatex/latex/luacensor.zip
@@ -2786,7 +2864,6 @@
2022/02/23 | 11404 | systems/texlive/tlnet/archive/hvfloat.r62141.tar.xz
2022/02/23 | 1132 | systems/texlive/tlnet/archive/citation-style-language.source.r62134.tar.xz
2022/02/23 | 11186495 | macros/latex/contrib/acmart.zip
-2022/02/23 | 1108526 | support/TeX4ht/source/tex4ht-4ht.tex
2022/02/23 | 1059382 | macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf
2022/02/23 | 1054227 | macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf
2022/02/23 | 1052136 | macros/latex/contrib/acmart/samples/sample-sigplan.pdf
@@ -2794,232 +2871,3 @@
2022/02/23 | 1043594 | macros/latex/contrib/acmart/samples/sample-sigconf.pdf
2022/02/23 | 103116 | systems/texlive/tlnet/archive/citation-style-language.r62134.tar.xz
2022/02/23 | 10068306 | systems/texlive/tlnet/update-tlmgr-r62112.sh
-2022/02/22 | 9440 | macros/latex/contrib/biblatex-contrib/biblatex-mla/spanish-mla.lbx
-2022/02/22 | 92294 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHPub.pdf
-2022/02/22 | 914930 | systems/win32/miktex/tm/packages/mcf2graph__doc.tar.lzma
-2022/02/22 | 91228 | systems/win32/miktex/tm/packages/tex4ebook__doc.tar.lzma
-2022/02/22 | 8856 | systems/win32/miktex/tm/packages/hexboard__source.tar.lzma
-2022/02/22 | 8776 | macros/latex/contrib/bfh-ci/tex/bfh-projectproposal.cfg
-2022/02/22 | 8697 | macros/latex/contrib/biblatex-contrib/biblatex-mla/portuguese-mla.lbx
-2022/02/22 | 849 | macros/latex/contrib/grading-scheme/grading-scheme.ins
-2022/02/22 | 8370 | macros/luatex/generic/lua-widow-control/lwc-documentation.mkxl
-2022/02/22 | 808829 | systems/win32/miktex/tm/packages/biblatex-mla__source.tar.lzma
-2022/02/22 | 8057 | systems/win32/miktex/tm/packages/make4ht__source.tar.lzma
-2022/02/22 | 7915 | systems/win32/miktex/tm/packages/flashcards__source.tar.lzma
-2022/02/22 | 7656 | macros/latex/contrib/bfh-ci/example/DEMO-BFHSciPoster.tex
-2022/02/22 | 753745 | macros/latex/contrib/biblatex-contrib/biblatex-mla.zip
-2022/02/22 | 75334 | systems/win32/miktex/tm/packages/memoir.tar.lzma
-2022/02/22 | 75226 | systems/win32/miktex/tm/packages/xepersian__source.tar.lzma
-2022/02/22 | 73950 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/README.md
-2022/02/22 | 739000 | systems/win32/miktex/tm/packages/caption__doc.tar.lzma
-2022/02/22 | 72244 | systems/win32/miktex/tm/packages/spectralsequences.tar.lzma
-2022/02/22 | 7150 | macros/latex/contrib/biblatex-contrib/biblatex-mla/mla.bbx
-2022/02/22 | 70621 | macros/latex/contrib/biblatex-contrib/biblatex-mla/mla-strict.bbx
-2022/02/22 | 6984 | systems/texlive/tlnet/archive/preview.r62130.tar.xz
-2022/02/22 | 6917 | systems/win32/miktex/tm/packages/preview.tar.lzma
-2022/02/22 | 686 | macros/luatex/generic/lua-widow-control/lua-widow-control.opm
-2022/02/22 | 6780 | systems/win32/miktex/tm/packages/luacensor__source.tar.lzma
-2022/02/22 | 67638 | macros/latex/contrib/hvfloat/latex/hvfloat.sty
-2022/02/22 | 6607 | systems/win32/miktex/tm/packages/proflycee.tar.lzma
-2022/02/22 | 6484 | systems/win32/miktex/tm/packages/tipauni.tar.lzma
-2022/02/22 | 6469 | macros/latex/contrib/rutitlepage/rutitlepage-logo.pdf
-2022/02/22 | 645290 | systems/win32/miktex/tm/packages/biblatex-mla__doc.tar.lzma
-2022/02/22 | 6373 | macros/latex/contrib/bfh-ci/tex/bfhthesis.cls
-2022/02/22 | 6276 | systems/texlive/tlnet/archive/tipauni.r62131.tar.xz
-2022/02/22 | 59599 | systems/win32/miktex/tm/packages/xepersian.tar.lzma
-2022/02/22 | 5957 | systems/win32/miktex/tm/packages/tex4ebook__source.tar.lzma
-2022/02/22 | 59527 | systems/win32/miktex/tm/packages/caption.tar.lzma
-2022/02/22 | 5923 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.cbx
-2022/02/22 | 585483 | systems/win32/miktex/tm/packages/l3kernel__source.tar.lzma
-2022/02/22 | 5827 | systems/win32/miktex/tm/packages/linebreaker.tar.lzma
-2022/02/22 | 581059 | systems/win32/miktex/tm/packages/easybook__doc.tar.lzma
-2022/02/22 | 5800 | macros/latex/contrib/bfh-ci/tex/bfhletter.sty
-2022/02/22 | 54484 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHProjektProposal.pdf
-2022/02/22 | 51711 | systems/win32/miktex/tm/packages/make4ht.tar.lzma
-2022/02/22 | 50947 | systems/win32/miktex/tm/packages/mcf2graph__source.tar.lzma
-2022/02/22 | 50929 | systems/win32/miktex/tm/packages/linebreaker__doc.tar.lzma
-2022/02/22 | 508288 | macros/latex/contrib/biblatex-contrib/biblatex-mla/doc/biblatex-mla.pdf
-2022/02/22 | 50515 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHBeamer-Sidebar.pdf
-2022/02/22 | 50171 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHFactsheet.pdf
-2022/02/22 | 49626 | systems/win32/miktex/tm/packages/nwejm__source.tar.lzma
-2022/02/22 | 494520 | systems/texlive/tlnet/archive/beamertheme-focus.doc.r62122.tar.xz
-2022/02/22 | 49332 | systems/texlive/tlnet/archive/nwejm.source.r62129.tar.xz
-2022/02/22 | 4925 | macros/latex/contrib/bfh-ci/tex/bfh-layout-terminal.cfg
-2022/02/22 | 4833 | systems/win32/miktex/tm/packages/beamertheme-focus.tar.lzma
-2022/02/22 | 47640 | systems/texlive/tlnet/archive/fbox.doc.r62126.tar.xz
-2022/02/22 | 474459 | systems/win32/miktex/tm/packages/andika__doc.tar.lzma
-2022/02/22 | 466746 | systems/win32/miktex/tm/packages/proflycee__doc.tar.lzma
-2022/02/22 | 46617 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHSciPoster.pdf
-2022/02/22 | 4628 | systems/texlive/tlnet/archive/beamertheme-focus.r62122.tar.xz
-2022/02/22 | 46264 | systems/win32/miktex/tm/packages/fbox__doc.tar.lzma
-2022/02/22 | 4603 | macros/latex/contrib/bfh-ci/tex/bfh-layout-boxes.cfg
-2022/02/22 | 45370 | systems/win32/miktex/tm/packages/spectralsequences__source.tar.lzma
-2022/02/22 | 44816 | systems/win32/miktex/tm/packages/njuthesis__source.tar.lzma
-2022/02/22 | 4460 | macros/latex/contrib/bfh-ci/README.md
-2022/02/22 | 439108 | macros/latex/contrib/bfh-ci.zip
-2022/02/22 | 4230 | systems/win32/miktex/tm/packages/crefthe__source.tar.lzma
-2022/02/22 | 4190 | macros/latex/contrib/bfh-ci/tex/bfhcolors.sty
-2022/02/22 | 4171 | macros/latex/contrib/bfh-ci/example/DEMO-BFHFactsheet.tex
-2022/02/22 | 41461 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHThesis.pdf
-2022/02/22 | 4098367 | systems/win32/miktex/tm/packages/nwejm.tar.lzma
-2022/02/22 | 4089520 | systems/texlive/tlnet/archive/nwejm.r62129.tar.xz
-2022/02/22 | 40747 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHBeamer.pdf
-2022/02/22 | 396332 | systems/texlive/tlnet/archive/tipauni.doc.r62131.tar.xz
-2022/02/22 | 396000 | systems/win32/miktex/tm/packages/tipauni__doc.tar.lzma
-2022/02/22 | 3912 | macros/luatex/generic/lua-widow-control/lwc-sample.tex
-2022/02/22 | 3901 | macros/latex/contrib/bfh-ci/tex/bfhlettersize9.5pt.clo
-2022/02/22 | 3880394 | macros/latex/contrib/hyperref.zip
-2022/02/22 | 3859 | macros/latex/contrib/bfh-ci/tex/beamercolorthemeBFH.sty
-2022/02/22 | 38571 | systems/win32/miktex/tm/packages/easybook__source.tar.lzma
-2022/02/22 | 38310 | macros/latex/contrib/biblatex-contrib/biblatex-mla/mla7.bbx
-2022/02/22 | 3788 | macros/latex/contrib/bfh-ci/tex/bfh-layout-listings.cfg
-2022/02/22 | 3761471 | systems/win32/miktex/tm/packages/bidi__doc.tar.lzma
-2022/02/22 | 3652 | systems/win32/miktex/tm/packages/luacensor.tar.lzma
-2022/02/22 | 3538 | macros/latex/contrib/bfh-ci/tex/bfhtranslations-french.trsl
-2022/02/22 | 3517 | systems/win32/miktex/tm/packages/flashcards.tar.lzma
-2022/02/22 | 3508 | macros/latex/contrib/bfh-ci/tex/bfhtranslations-english.trsl
-2022/02/22 | 346952 | macros/luatex/generic/lua-widow-control/lua-widow-control.pdf
-2022/02/22 | 346732 | install/macros/luatex/generic/lua-widow-control.tds.zip
-2022/02/22 | 343276 | macros/luatex/generic/lua-widow-control.zip
-2022/02/22 | 3429 | macros/latex/contrib/bfh-ci/tex/bfhtranslations-german.trsl
-2022/02/22 | 34180 | systems/texlive/tlnet/archive/moderncv.r62128.tar.xz
-2022/02/22 | 34077 | systems/win32/miktex/tm/packages/moderncv.tar.lzma
-2022/02/22 | 33675 | macros/latex/contrib/handoutwithnotes/handoutWithNotes.dtx
-2022/02/22 | 3357 | systems/win32/miktex/tm/packages/haranoaji-extra__doc.tar.lzma
-2022/02/22 | 3356 | systems/win32/miktex/tm/packages/haranoaji__doc.tar.lzma
-2022/02/22 | 3355 | systems/win32/miktex/tm/packages/hexboard.tar.lzma
-2022/02/22 | 326888 | systems/win32/miktex/tm/packages/preview__doc.tar.lzma
-2022/02/22 | 326124 | systems/texlive/tlnet/archive/preview.doc.r62130.tar.xz
-2022/02/22 | 324421 | macros/latex/contrib/handoutwithnotes.zip
-2022/02/22 | 323237 | macros/latex/contrib/handoutwithnotes/handoutWithNotes.pdf
-2022/02/22 | 3215 | macros/latex/contrib/bfh-ci/tex/beamerouterthemeBFH.sty
-2022/02/22 | 3164 | macros/latex/contrib/bfh-ci/tex/bfhpub.cls
-2022/02/22 | 3144777 | systems/win32/miktex/tm/packages/animate__doc.tar.lzma
-2022/02/22 | 3143284 | systems/texlive/tlnet/archive/animate.doc.r62123.tar.xz
-2022/02/22 | 3141227 | install/macros/latex/contrib/rutitlepage.tds.zip
-2022/02/22 | 3140114 | systems/win32/miktex/tm/packages/memoir__doc.tar.lzma
-2022/02/22 | 3138341 | macros/latex/contrib/rutitlepage.zip
-2022/02/22 | 3091 | macros/latex/contrib/bfh-ci/tex/beamerouterthemeBFH-sidebar.sty
-2022/02/22 | 3076 | systems/win32/miktex/tm/packages/linebreaker__source.tar.lzma
-2022/02/22 | 3066 | macros/latex/contrib/bfh-ci/tex/bfhbeamer.cls
-2022/02/22 | 30576 | systems/win32/miktex/tm/packages/animate__source.tar.lzma
-2022/02/22 | 3030 | macros/latex/contrib/bfh-ci/tex/beamerfontthemeBFH.sty
-2022/02/22 | 30224 | systems/texlive/tlnet/archive/animate.source.r62123.tar.xz
-2022/02/22 | 2895 | systems/win32/miktex/tm/packages/crefthe.tar.lzma
-2022/02/22 | 2873309 | systems/win32/miktex/tm/packages/andika.tar.lzma
-2022/02/22 | 2788 | macros/latex/contrib/bfh-ci/tex/bfh-factsheet.cfg
-2022/02/22 | 277281 | systems/win32/miktex/tm/packages/beamertheme-focus__doc.tar.lzma
-2022/02/22 | 276414 | systems/win32/miktex/tm/packages/hexboard__doc.tar.lzma
-2022/02/22 | 2666 | systems/win32/miktex/tm/packages/fbox__source.tar.lzma
-2022/02/22 | 26165 | macros/latex/contrib/rutitlepage/rutitlepage-logo-nl-cmyk.pdf
-2022/02/22 | 25893550 | systems/win32/miktex/tm/packages/haranoaji.tar.lzma
-2022/02/22 | 25768 | systems/win32/miktex/tm/packages/bfh-ci.tar.lzma
-2022/02/22 | 25754644 | systems/win32/miktex/tm/packages/haranoaji-extra.tar.lzma
-2022/02/22 | 2560 | macros/latex/contrib/bfh-ci/tex/bfh-layout-rules.cfg
-2022/02/22 | 25484 | macros/latex/contrib/rutitlepage/rutitlepage-logo-cmyk.pdf
-2022/02/22 | 254724 | systems/win32/miktex/tm/packages/flashcards__doc.tar.lzma
-2022/02/22 | 25233 | systems/win32/miktex/tm/packages/biblatex-mla.tar.lzma
-2022/02/22 | 25193 | macros/latex/contrib/rutitlepage/rutitlepage-logo-nl-bw.pdf
-2022/02/22 | 2486 | macros/luatex/generic/lua-widow-control/README.md
-2022/02/22 | 24676 | macros/latex/contrib/bfh-ci/tex/bfhlayout.sty
-2022/02/22 | 246664 | systems/texlive/tlnet/archive/moderncv.doc.r62128.tar.xz
-2022/02/22 | 24598 | macros/latex/contrib/rutitlepage/rutitlepage-logo-bw.pdf
-2022/02/22 | 2451 | macros/latex/contrib/handoutwithnotes/README.md
-2022/02/22 | 24417 | systems/win32/miktex/tm/packages/cweb.tar.lzma
-2022/02/22 | 242188 | systems/win32/miktex/tm/packages/memoir__source.tar.lzma
-2022/02/22 | 24198 | systems/win32/miktex/tm/packages/animate.tar.lzma
-2022/02/22 | 23932 | systems/texlive/tlnet/archive/animate.r62123.tar.xz
-2022/02/22 | 238111 | systems/win32/miktex/tm/packages/moderncv__doc.tar.lzma
-2022/02/22 | 235349 | systems/win32/miktex/tm/packages/erewhon-math.tar.lzma
-2022/02/22 | 2333 | macros/latex/contrib/biblatex-contrib/biblatex-mla/README
-2022/02/22 | 23240 | systems/win32/miktex/tm/packages/preview__source.tar.lzma
-2022/02/22 | 2320 | macros/latex/contrib/bfh-ci/example/DEMO-BFHBeamer-Sidebar.tex
-2022/02/22 | 23202 | macros/luatex/generic/lua-widow-control/lwc-documentation.tex
-2022/02/22 | 2316 | macros/luatex/generic/lua-widow-control/lua-widow-control.sty
-2022/02/22 | 2307 | macros/latex/contrib/bfh-ci/tex/beamerthemeBFH.sty
-2022/02/22 | 2301 | macros/latex/contrib/handoutwithnotes/handoutWithNotes.ins
-2022/02/22 | 22977 | systems/win32/miktex/tm/packages/miktex-misc.tar.lzma
-2022/02/22 | 22852 | systems/texlive/tlnet/archive/preview.source.r62130.tar.xz
-2022/02/22 | 220608 | systems/win32/miktex/tm/packages/beamertheme-focus__source.tar.lzma
-2022/02/22 | 219888 | systems/win32/miktex/tm/packages/bfh-ci__doc.tar.lzma
-2022/02/22 | 2177 | macros/latex/contrib/bfh-ci/tex/bfhfonts.sty
-2022/02/22 | 214 | macros/latex/contrib/biblatex-contrib/biblatex-mla/mla-new.bbx
-2022/02/22 | 2122 | macros/latex/contrib/bfh-ci/tex/bfh-layout-tabular.cfg
-2022/02/22 | 2120 | systems/win32/miktex/tm/packages/fbox.tar.lzma
-2022/02/22 | 2119 | macros/latex/contrib/bfh-ci/example/DEMO-BFHProjektProposal.tex
-2022/02/22 | 210 | macros/latex/contrib/biblatex-contrib/biblatex-mla/mla-new.cbx
-2022/02/22 | 209737 | systems/win32/miktex/tm/packages/caption__source.tar.lzma
-2022/02/22 | 20868 | macros/latex/contrib/biblatex-contrib/biblatex-mla/mla.cbx
-2022/02/22 | 2054 | macros/luatex/generic/lua-widow-control/t-lua-widow-control.mkxl
-2022/02/22 | 2054 | macros/luatex/generic/lua-widow-control/t-lua-widow-control.mkiv
-2022/02/22 | 2039 | macros/latex/contrib/bfh-ci/tex/bfhmodule.sty
-2022/02/22 | 202581 | macros/latex/contrib/rutitlepage/rutitlepage.pdf
-2022/02/22 | 20017 | macros/latex/contrib/biblatex-contrib/biblatex-mla/CHANGES
-2022/02/22 | 1968615 | systems/win32/miktex/tm/packages/erewhon-math__doc.tar.lzma
-2022/02/22 | 195439 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.tex
-2022/02/22 | 1881 | macros/latex/contrib/bfh-ci/example/DEMO-BFHBeamer.tex
-2022/02/22 | 1856 | systems/texlive/tlnet/archive/fbox.r62126.tar.xz
-2022/02/22 | 18492 | macros/latex/contrib/bfh-ci/tex/bfhsciposter.cls
-2022/02/22 | 1842 | macros/latex/contrib/bfh-ci/tex/bfh-a0paper.clo
-2022/02/22 | 18004 | systems/win32/miktex/tm/packages/tex4ebook.tar.lzma
-2022/02/22 | 1794 | macros/latex/contrib/bfh-ci/tex/bfh-a3paper.clo
-2022/02/22 | 1792 | macros/latex/contrib/bfh-ci/tex/bfh-a2paper.clo
-2022/02/22 | 1789 | macros/latex/contrib/bfh-ci/tex/bfh-a1paper.clo
-2022/02/22 | 1788 | macros/luatex/generic/lua-widow-control/lua-widow-control.tex
-2022/02/22 | 1758314 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015.zip
-2022/02/22 | 170258 | systems/win32/miktex/tm/packages/make4ht__doc.tar.lzma
-2022/02/22 | 170138 | systems/win32/miktex/tm/packages/l3kernel.tar.lzma
-2022/02/22 | 168975 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.bbx
-2022/02/22 | 167569 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx
-2022/02/22 | 1656072 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf
-2022/02/22 | 16057 | systems/win32/miktex/tm/packages/easybook.tar.lzma
-2022/02/22 | 15974 | macros/latex/contrib/rutitlepage/rutitlepage-logo.eps
-2022/02/22 | 1583 | macros/latex/contrib/bfh-ci/example/DEMO-BFHLetter.tex
-2022/02/22 | 1552624 | systems/win32/miktex/tm/packages/spectralsequences__doc.tar.lzma
-2022/02/22 | 15396 | systems/win32/miktex/tm/packages/tipauni__source.tar.lzma
-2022/02/22 | 15390 | macros/luatex/generic/lua-widow-control/lua-widow-control.lua
-2022/02/22 | 1518 | macros/latex/contrib/bfh-ci/tex/bfh-a6paper.clo
-2022/02/22 | 1508 | macros/latex/contrib/bfh-ci/tex/bfh-beamerarticle.cfg
-2022/02/22 | 15076 | macros/latex/contrib/bfh-ci/example/DEMO-BFHPub.tex
-2022/02/22 | 1492 | macros/luatex/generic/lua-widow-control/lwc-documentation.bib
-2022/02/22 | 14867 | macros/latex/contrib/bfh-ci/tex/beamerinnerthemeBFH.sty
-2022/02/22 | 1464 | macros/latex/contrib/bfh-ci/tex/bfh-a5paper.clo
-2022/02/22 | 1463 | macros/latex/contrib/bfh-ci/tex/bfh-a4paper.clo
-2022/02/22 | 1439 | macros/latex/contrib/bfh-ci/example/DEMO-BFHFromaddress.lco
-2022/02/22 | 14128 | systems/texlive/tlnet/archive/tipauni.source.r62131.tar.xz
-2022/02/22 | 141165 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015mx.bbx
-2022/02/22 | 13660 | macros/latex/contrib/bfh-ci/doc/DEMO-BFHLetter.pdf
-2022/02/22 | 135116 | systems/win32/miktex/tm/packages/bidi__source.tar.lzma
-2022/02/22 | 1336 | macros/latex/contrib/bfh-ci/example/DEMO-BFHThesis.tex
-2022/02/22 | 1321604 | systems/win32/miktex/tm/packages/nwejm__doc.tar.lzma
-2022/02/22 | 13212 | systems/win32/miktex/tm/packages/erewhon-math__source.tar.lzma
-2022/02/22 | 1321156 | systems/texlive/tlnet/archive/nwejm.doc.r62129.tar.xz
-2022/02/22 | 1308 | macros/latex/contrib/rutitlepage/rutitlepage.ins
-2022/02/22 | 12948 | macros/latex/contrib/biblatex-contrib/biblatex-mla/mla-footnotes.cbx
-2022/02/22 | 128262 | systems/win32/miktex/tm/packages/luacensor__doc.tar.lzma
-2022/02/22 | 127682 | macros/latex/contrib/biblatex-contrib/biblatex-mla/doc/biblatex-mla.tex
-2022/02/22 | 120700 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ms.bbx
-2022/02/22 | 11859 | systems/win32/miktex/tm/packages/proflycee__source.tar.lzma
-2022/02/22 | 118208 | systems/win32/miktex/tm/packages/crefthe__doc.tar.lzma
-2022/02/22 | 11804 | systems/win32/miktex/tm/packages/njuthesis.tar.lzma
-2022/02/22 | 1173 | macros/latex/contrib/biblatex-contrib/biblatex-mla/mla.dbx
-2022/02/22 | 116971 | systems/win32/miktex/tm/packages/bidi.tar.lzma
-2022/02/22 | 11443 | macros/latex/contrib/biblatex-contrib/biblatex-mla/english-mla.lbx
-2022/02/22 | 11403392 | systems/win32/miktex/tm/packages/l3kernel__doc.tar.lzma
-2022/02/22 | 111 | macros/latex/contrib/biblatex-contrib/biblatex-mla/mla-strict.cbx
-2022/02/22 | 1116 | macros/latex/contrib/biblatex-contrib/biblatex-mla/american-mla.lbx
-2022/02/22 | 11145 | macros/latex/contrib/rutitlepage/rutitlepage.dtx
-2022/02/22 | 11132 | systems/win32/miktex/tm/packages/graphics-def.tar.lzma
-2022/02/22 | 1110463 | systems/win32/miktex/tm/packages/njuthesis__doc.tar.lzma
-2022/02/22 | 109 | macros/latex/contrib/biblatex-contrib/biblatex-mla/mla7.cbx
-2022/02/22 | 1086 | macros/latex/contrib/rutitlepage/README.md
-2022/02/22 | 1078 | systems/win32/miktex/tm/packages/graphics-def__doc.tar.lzma
-2022/02/22 | 10778 | macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/chinese-erj.bbx
-2022/02/22 | 10677 | systems/win32/miktex/tm/packages/moderncv__source.tar.lzma
-2022/02/22 | 106745 | systems/texlive/tlnet/install-tl
-2022/02/22 | 1058706 | macros/latex/contrib/rutitlepage/rutitlepage-logo-nl-cmyk.eps
-2022/02/22 | 1056806 | macros/latex/contrib/rutitlepage/rutitlepage-logo-nl-bw.eps
-2022/02/22 | 1055018 | macros/latex/contrib/rutitlepage/rutitlepage-logo-cmyk.eps
-2022/02/22 | 1052786 | macros/latex/contrib/rutitlepage/rutitlepage-logo-bw.eps
-2022/02/22 | 10103 | macros/latex/contrib/biblatex-contrib/biblatex-mla/italian-mla.lbx
-2022/02/22 | 1006341 | systems/win32/miktex/tm/packages/xepersian__doc.tar.lzma
diff --git a/info/install-latex-guide-zh-cn/appendix/updateinfo.tex b/info/install-latex-guide-zh-cn/appendix/updateinfo.tex
index 05808fb698..7956e412a7 100644
--- a/info/install-latex-guide-zh-cn/appendix/updateinfo.tex
+++ b/info/install-latex-guide-zh-cn/appendix/updateinfo.tex
@@ -2,6 +2,12 @@
\chapter{版本信息}
+\section*{v2022.3.1}
+
+\begin{enumerate}
+ \item 更改 \TeX works 的编译命令设置
+\end{enumerate}
+
\section*{v2021.12.1}
\begin{enumerate}
diff --git a/info/install-latex-guide-zh-cn/appendix/wsladdition.tex b/info/install-latex-guide-zh-cn/appendix/wsladdition.tex
index 348dd85978..23aa123f0d 100644
--- a/info/install-latex-guide-zh-cn/appendix/wsladdition.tex
+++ b/info/install-latex-guide-zh-cn/appendix/wsladdition.tex
@@ -76,7 +76,7 @@ WSL (本质上是 Ubuntu) 中安装字体比较麻烦.
"-interaction=nonstopmode",
"-halt-on-error",
"-file-line-error",
- "-pdfxe",
+ "-xelatex",
"%DOCFILE%"
]
},
diff --git a/info/install-latex-guide-zh-cn/chapter/editor.tex b/info/install-latex-guide-zh-cn/chapter/editor.tex
index 791b298233..b757602f5a 100644
--- a/info/install-latex-guide-zh-cn/chapter/editor.tex
+++ b/info/install-latex-guide-zh-cn/chapter/editor.tex
@@ -58,6 +58,63 @@ Windows 10 中字体列表见%
\TeX works支持从模板新建文档, 在 \menu{文件} 菜单中可见.
+\subsubsection{更改编译命令设置}
+
+\TeX works 默认提供了若干编译命令,
+具体见 \menu{编辑 > 首选项 > 排版}.
+实际上,
+用户可以根据自己的需要,
+添加、更改其中的设置.
+首先明确 \TeX works 中已有一些定义,
+见表~\ref{tab:editor} \footnote{参考 \href{https://github.com/TeXworks/texworks/wiki/AdvancedTypesettingTools}{Advanced Typesetting Tools}.}.
+接下来可以定义 \texttt{latexmkpdf},
+它调用 \texttt{latexmk} 并使用 \texttt{pdflatex} 等命令编译文档.
+在 \menu{排版} 上点击 \menu{+},
+输入名称 \textsf{latexmkpdf} 和程序 \texttt{latexmk},
+相关参数需要再次点击 \menu{+} 来予以添加,
+例如添加以下这些
+\begin{lstlisting}
+ -e
+ $pdflatex=q/pdflatex $synctexoption %O %S/
+ -pdf
+ $fullname
+\end{lstlisting}
+这里的 \texttt{\$synctexoption} 和 \texttt{\$fullname} 均是 \TeX works 预定义的内容,
+而其他的 \texttt{-e}, \texttt{\$pdflatex=...} 和 \texttt{-pdf} 需要用户自己阅读 \texttt{latexmk} 手册了解.
+然后选择 \textsf{运行后查看 pdf 文件},
+再点击 \menu{OK},
+即可发现已经添加成功.
+之后用户可以调用 \texttt{latexmkpdf} 来编译文档.
+当然,
+在 \menu{排版} 处还可以将 \texttt{latexmkpdf} 设置为默认.
+
+类似地,
+如果要定义 \texttt{latexmkxe},
+可以考虑以下参数
+\begin{lstlisting}
+ -e
+ $xelatex=q/xelatex $synctexoption %O %S/
+ -xelatex
+ $fullname
+\end{lstlisting}
+程序依然是 \texttt{latexmk}.
+
+\begin{table}
+ \centering
+ \caption{\TeX works 已有定义}\label{tab:variables}
+ \begin{tabular}{p{0.15\linewidth}p{0.75\linewidth}}
+ \toprule
+ Option & Description\\
+ \midrule
+ \$synctexoption & expands to ``-synctex=1'' if your tools support SyncTeX\\
+ \$fullname & expands to the full name of your root document (e.g. rootfile.tex)\\
+ \$basename & expands to the name (without extension) of your root document (e.g. rootfile)\\
+ \$suffix & expands to the extension of your root document (e.g. tex)\\
+ \$directory & expands to the absolute path to the directory containing your root document\\
+ \bottomrule
+ \end{tabular}
+\end{table}
+
\subsubsection{拼写检查}
默认情况, \TeX works没有搭载拼写检查字典, 需要用户自己配置.
diff --git a/info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf b/info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf
index bb9dee2b9e..5b56b135f4 100644
--- a/info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf
+++ b/info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf
Binary files differ
diff --git a/language/korean/kotex-oblivoir/README b/language/korean/kotex-oblivoir/README
index 429d4b646d..0a1edaa49f 100644
--- a/language/korean/kotex-oblivoir/README
+++ b/language/korean/kotex-oblivoir/README
@@ -1,5 +1,10 @@
-kotex-oblivoir, v3.0.2
-======================
+kotex-oblivoir
+====================
+
+Current State
+-------------
+
+* 2022/03/01, uploaded to CTAN.
Introduction
------------
@@ -19,7 +24,7 @@ Dependencies
kotex-oblivoir depends on the following packages to function:
* memoir: base class
-* ko.TeX: Korean typesetting
+* ko.TeX: Korean typesetting packages
Usage
-----
diff --git a/language/korean/kotex-oblivoir/ChangeLog b/language/korean/kotex-oblivoir/doc/ChangeLog
index e259523d9f..b723bbdfd3 100644
--- a/language/korean/kotex-oblivoir/ChangeLog
+++ b/language/korean/kotex-oblivoir/doc/ChangeLog
@@ -1,16 +1,11 @@
-2021-09-21 Kangsoo Kim <modviv2k15@gmail.com>
+2022-03-01 Kangsoo Kim
- Version 3.0.2
-
- * fix the conflicts with lwarp
-
-2021-03-15 Kangsoo Kim <karnes at ktug org>
-
- Version 3.0.1
-
- * changed Unfont usage.
+ Version 3.1
+
+ * update fapapersize.sty
+ * add oblivoir-misc.sty
-2021-03-03 Kangsoo Kim <karnes at ktug org>
+2021-03-03 Kangsoo Kim
Version 3.0
diff --git a/language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.pdf b/language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.pdf
index ec1eeb63be..fc2916f03f 100644
--- a/language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.pdf
+++ b/language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.pdf
Binary files differ
diff --git a/language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.tex b/language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.tex
index 30cd92bd48..f48873d430 100644
--- a/language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.tex
+++ b/language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.tex
@@ -19,13 +19,20 @@
% lwarp
]{oblivoir}
+\usepackage{xcolor}
+
\usepackage{fapapersize}
\usefapapersize{*,*,30mm,*,35mm,*}
+\definefageometry{default}{30mm,*,35mm,*}[\nopagecolor]
+\definefageometry{test}{15mm,25mm,35mm,*}[\pagecolor{cyan!15}]
\usepackage{kotex-logo}
\hypersetup{colorlinks,linkcolor=blue}
+\usepackage{afterpage}
+\usepackage{oblivoir-misc}
+
%%% ifpxltex can be installed from KTUG Private Repository. not included in TeX Live
\usepackage{ifpxltex}
@@ -96,9 +103,9 @@
\begin{document}
-\title{초간단 \obclass{} v3.0.1 사용법}
+\title{초간단 \obclass{} v3.1 사용법}
-\date{2021년 3월}
+\date{2022년 3월}
\author{x-ob-liv-oir }
@@ -1214,6 +1221,8 @@ ExternalLocation으로 호출할 수 있을 것이다. 리눅스에서는 모르
% 참고로, bnm, cnm 등의 \obclass{} \oblivoirquote{괄호 명령}에도 별표(*)를 붙여 앞뒤 간격을
% 줄여줄 수 있다. |\ccnm{테스트}|, |\ccnm*{테스트}|.
+\clearpage
+
\section{그밖의 사항들}
\subsection{판면 설정을 위한 fapapersize}
@@ -1254,8 +1263,54 @@ oblivoir에서 제공된다.
\item [newmum] 신국판. (154mm$\times$225mm). 여백 25mm.
\item [1in] \hologo{plainTeX}에서처럼 1in 오프셋을 설정한 판면. 여백 1in.
\item [dbl4x6] 4$\times$6 배판. (190mm$\times$260mm). 여백 30mm.
+\item [a4] \texttt{a4paper} 용지에 \texttt{[1in]} 옵션과 같은 여백.
\end{description}
+\bigskip
+
+\marginpar{v3.1}
+\texttt{geometry} 패키지의 \cs{newgeometry}, \cs{restoregeometry} 명령과 유사하게
+문서의 중간에 페이지 레이아웃을 변경하는 명령이 있다. 다음과 같이 사용한다.
+
+\begin{description}
+\item [\cs{definefageometry}] 페이지 레이아웃을 정의하고 저장한다.
+\begin{verbatim}
+\definefageometry{default}{20mm,*,25mm,*}
+\end{verbatim}
+첫 번째 인자는 이 페이지 레이아웃의 unique한 이름으로서 letter로 이루어진다.
+
+두 번째 mandatory 인자는 \verb|\fapapersize| 명령에서
+페이지 사이즈에 해당하는 부분을 제외한 네 개의 길이를 쉼표로 구분하여 제시한다.
+
+이 명령은 다음과 같이 쓸 수 있다.
+\begin{verbatim}
+\definefageometry{default}[before]{<layout>}[after]
+\end{verbatim}
+여기 before와 after 위치에는 레이아웃을 바꾸기 전과 후에 실행할
+토큰을 둘 수 있다.
+
+\item[\cs{selectfagemetry}] 정의된 페이지 레이아웃을 적용한다.
+레이아웃 변경의 효과는 반드시 새로운 페이지가 시작되어야 나타나기 때문에
+\cs{newpage} 또는 \cs{clearpage}를 직접 지정하여야 하나,
+이 명령에 별표를 붙이면 페이지 레이아웃을 정의하기 전에 \cs{clearpage}를
+실행한다.
+페이지 레이아웃이 define되어 있지 않으면 안 된다.
+
+\end{description}
+
+다음 한 페이지의 레이아웃을 바꾸어본다. 다음과 같이 정의한 레이아웃이다
+\begin{verbatim}
+\definefageometry{test}{15mm,25mm,35mm,*}[\pagecolor{cyan!15}]
+\end{verbatim}
+
+\bigskip
+
+\cs{evenmarginsameasodd}는 짝수쪽의 마진을 홀수쪽 마진과
+동일하게 설정하라는 명령이다. 페이지 레이아웃 디자인시에 필요할 수
+있어서 별도로 정의해두었다.
+
+\selectfageometry*{test}
+
\subsection{enumerate}
enumerate 패키지의 enumerate 아이템 항목 머리 설정은
@@ -1329,6 +1384,8 @@ png, jpg, pdf 그림을 잘 불러온다. %즉 \obclass가 알맞게 이 패키
\hfill “소절 \myREF{sec:font}{sec:폰트}\를 보라.”
\end{minipage}
+\selectfageometry*{default}
+
\subsection{문장부호}
이 패키지가 제공하는 문장부호는 다음과 같은 것이 있다.
@@ -1457,46 +1514,6 @@ oblivoir가 추가적으로 제공하는 페이지 스타일로 \texttt{hangul}
\trimKmark
\end{boxedverbatim}
-\subsection{chaptertoc}
-
-\marginpar{v3.0}
-chaptertoc란 장 표제면에 그 chapter에 해당하는 절(section) 이하의 목록을
-만드는 것을 말한다. 이 목적을 위한 별도의 패키지가 있고 oblivoir에서 해당 패키지를
-활용하는 것도 가능하다. 한편 oblivoir v3.0은 \textsf{obchaptertoc}라는 부수
-패키지를 제공하는데 이것은 \textsf{memoir}의 기능만을 이용하고 다른 패키지에
-의존하지 않으면서 chaptertoc를 제작하게 한 것이다.
-이 기능은 오직 \verb|\chapter|보다 높은 수준의 문서구분명령에서만 동작하며
-\verb|\section| 이하 수준의 명령에 대해서는 고려하지 않았다. 따라서 \verb|[chapter]| 옵션이
-주어진 경우에 유효하다고 하겠다.
-
-\begin{boxedverbatim}
-\usepackage{obchaptertoc}
-%%
-\chaptertoc
-\end{boxedverbatim}
-
-이 패키지는 원래 독자적으로 개발되었던 것으로 안내 문서를 따로 가지고 있다(한국어).
-문서를 읽으려면
-\begin{verbatim}
-# texdoc obchaptertoc
-\end{verbatim}
-
-\subsection{mathleading}
-
-oblivoir는 한국어 문서에 대하여 기본 행간을 넓혀서 조판하기 때문에 여러 줄 수식의 경우에도
-그 영향을 받아서 행간격이 늘어지는 경우가 있었다.
-\textsf{amsmath}의 여러 줄 수식에 대하여 이 문제를 조절할 수 있게 하는 \textsf{ob-mathleading}
-패키지를 포함하였다. 따로 문서가 마련되어 있으므로 이를 참조하라.
-
-\begin{boxedverbatim}
-\usepackage{ob-mathleading}
-\end{boxedverbatim}
-
-문서를 읽으려면,
-\begin{verbatim}
-# texdoc ob-mathleading
-\end{verbatim}
-
\subsection{\cs{ReleaseMacros} 명령}
여러 \LaTeX\ 패키지를 로드하여 쓰다 보면 어떤 명령이 이미 정의되었다는 에러를
@@ -1571,10 +1588,65 @@ oblivoir 2.0까지 \verb|\footnotesinmargin|이 동작하지 않던 문제를
\caption{그림과 표의 캡션}
\end{figure}
-
이를 제외한 다른 부분, 이를테면 label과 caption text의 폰트를 바꾸는 것 등은 memoir의
해당 명령을 이용한다. 즉, \verb|\captionnamefont|, \verb|\captiontitlefont| 등을 이용하라는 것이다.
+\section{보조 패키지}
+
+\subsection{chaptertoc}
+
+\marginpar{v3.0}
+chaptertoc란 장 표제면에 그 chapter에 해당하는 절(section) 이하의 목록을
+만드는 것을 말한다. 이 목적을 위한 별도의 패키지가 있고 oblivoir에서 해당 패키지를
+활용하는 것도 가능하다. 한편 oblivoir v3.0은 \textsf{obchaptertoc}라는 부수
+패키지를 제공하는데 이것은 \textsf{memoir}의 기능만을 이용하고 다른 패키지에
+의존하지 않으면서 chaptertoc를 제작하게 한 것이다.
+이 기능은 오직 \verb|\chapter|보다 높은 수준의 문서구분명령에서만 동작하며
+\verb|\section| 이하 수준의 명령에 대해서는 고려하지 않았다. 따라서 \verb|[chapter]| 옵션이
+주어진 경우에 유효하다고 하겠다.
+
+\begin{boxedverbatim}
+\usepackage{obchaptertoc}
+%%
+\chaptertoc
+\end{boxedverbatim}
+
+이 패키지는 원래 독자적으로 개발되었던 것으로 안내 문서를 따로 가지고 있다(한국어).
+문서를 읽으려면
+\begin{verbatim}
+# texdoc obchaptertoc
+\end{verbatim}
+
+\subsection{mathleading}
+
+oblivoir는 한국어 문서에 대하여 기본 행간을 넓혀서 조판하기 때문에 여러 줄 수식의 경우에도
+그 영향을 받아서 행간격이 늘어지는 경우가 있었다.
+\textsf{amsmath}의 여러 줄 수식에 대하여 이 문제를 조절할 수 있게 하는 \textsf{ob-mathleading}
+패키지를 포함하였다. 따로 문서가 마련되어 있으므로 이를 참조하라.
+
+\begin{boxedverbatim}
+\usepackage{ob-mathleading}
+\end{boxedverbatim}
+
+문서를 읽으려면,
+\begin{verbatim}
+# texdoc ob-mathleading
+\end{verbatim}
+
+\subsection{oblivoir-misc}
+
+\marginpar{v3.1}
+시험적인 기능이나 그다지 중요하지 않은 명령을 포함하고 있는
+부수 패키지이다. 현재 다음 두 가지 명령이 정의되어 있다.
+
+\begin{description}
+\item[tikz pagenode] \texttt{tikz}를 로드했을 때 \texttt{current page}
+노드가 memoir의 레이아웃과 미묘하게 엇갈리는 것을 보정해준다. 이것은 oblivoir-misc를 로드하면 (tikz가 불렸을 때) 자동으로 처리한다.
+\item[\cs{texthl}] 한글 문자에 \texthl{하이라이트}해준다. 실험적인 기능으로
+현재 \XeLaTeX 일 때에 정상 동작한다. 하이라이트할 색상은 \cs{obhlcolor}, 높이와
+위치는 \cs{obhlheight}, \cs{obhlraisedim}을 재정의하여 설정할 수 있다.
+\end{description}
+
\section{HTML 제작}
@@ -1762,6 +1834,9 @@ Lua\TeX 과 \XeTeX 이라는 유니코드 텍 엔진의 등장은, 이러한 모
\section{변경 이력}
+2022년의 3.1 버전은 fapapersize에 새로운 명령을 추가하고 약간의
+개선된 기능을 포함하였다.
+
2021년의 3.0 버전은 상당히 많은 버그와 의도와 다른 동작을 수정하고 새로운
기능을 추가하였다.
diff --git a/language/korean/kotex-oblivoir/tex/memhangul-common/fapapersize.sty b/language/korean/kotex-oblivoir/tex/memhangul-common/fapapersize.sty
index a1a57f113f..7d072a293e 100644
--- a/language/korean/kotex-oblivoir/tex/memhangul-common/fapapersize.sty
+++ b/language/korean/kotex-oblivoir/tex/memhangul-common/fapapersize.sty
@@ -1,6 +1,7 @@
%% File `fapapersize.sty`
+%% this file is a part of oblivoir-packages.
%%
-%% Copyright (c) 2006-2013 Kangsoo Kim <karnes at ktug org>
+%% Copyright (c) 2006-2022 Kangsoo Kim <modviv2k15 at gmail.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -15,18 +16,24 @@
%% ver 0.03 (2006/11/24)
%% stocksize를 별도 지정할 수 있게 함
%% option [stock], command \usefastocksize{<width>}{<height>}
-%% ver 0.02
+%% ver 0.02 (2007)
%% 사륙배판, 국판, 신국판 정의.
%% marginnote 영역 설정은 제외되어 있음.
-%% ver 0.1
+%% ver 0.1 (2020)
%% option 1in added
+%% ver 0.2 (2022)
+%% option a4 added
+%% \definefageometry, \selectfageometry added.
%%
-\ProvidesPackage{fapapersize}[2020/02/10 v0.1]
+\ProvidesPackage{fapapersize}[2022/03/01 v0.2]
%%%
%%% 옵션
%%% dbl4x6 : 사륙배판
%%% mum : 국판
%%% newmum : 신국판
+%%% 1in : margin 1in
+%%% a4 : a4paper + 1in
+%%% stock : stocksize
\DeclareOption{dbl4x6}{%
\AtEndOfPackage{\usefapapersize{190mm,260mm,30mm,*,30mm,*}}%
}
@@ -38,7 +45,10 @@
}
\DeclareOption{1in}{%
\AtEndOfPackage{\usefapapersize{*,*,1in,*,1in,*}}%
- }
+}
+\DeclareOption{a4}{%
+ \AtEndOfPackage{\usefapapersize{210mm,290mm,1in,*,1in,*}}%
+}
\newif\ifStockSize@\StockSize@false
\DeclareOption{stock}{%
\StockSize@true
@@ -144,4 +154,47 @@
\fi
}
+%%%%
+%%% fapapersize.sty, 2021-06-21
+%%% \deffageometry, \setfageometry
+%%%
+\ExplSyntaxOn
+ \NewDocumentCommand \definefageometry { m o m o }
+ {
+ \IfValueTF{#2}
+ {
+ \tl_gset:cn { g_famarginsetopt_#1_tl } { #2 }
+ }
+ {
+ \tl_gset:cn { g_famarginsetopt_#1_tl } {}
+ }
+ \tl_gset:cn { g_famarginset_#1_tl } { #3 }
+ \IfValueTF { #4 }
+ {
+ \tl_gset:cn { g_famarginsetoptpost_#1_tl } { #4 }
+ }
+ {
+ \tl_gset:cn { g_famarginsetoptpost_#1_tl } {}
+ }
+ }
+
+ \NewDocumentCommand \selectfageometry { s m }
+ {
+ \IfBooleanT { #1 } { \clearpage }
+ \tl_use:c { g_famarginsetopt_#2_tl }
+ \exp_args:Nx \usefapapersize{*,*, \use:c{ g_famarginset_#2_tl } }
+ \tl_if_empty:cF { g_famarginsetoptpost_#2_tl }
+ {
+ \tl_use:c { g_famarginsetoptpost_#2_tl }
+ }
+ \ch@ngetext
+ }
+
+\NewDocumentCommand \evenmarginsameasodd {}
+{
+ \setlength\evensidemargin{\oddsidemargin}
+}
+
+\ExplSyntaxOff
+
\endinput
diff --git a/language/korean/kotex-oblivoir/tex/memhangul-common/memhangul-common.sty b/language/korean/kotex-oblivoir/tex/memhangul-common/memhangul-common.sty
index f96aafc731..7742b961e0 100644
--- a/language/korean/kotex-oblivoir/tex/memhangul-common/memhangul-common.sty
+++ b/language/korean/kotex-oblivoir/tex/memhangul-common/memhangul-common.sty
@@ -241,36 +241,111 @@
%% \chapter[toc][hdr]{title}
%% \chapter[toc]{hdr/title}
%% \chapter{toc/hdr/title}
+%%%%\def\@chapter[#1]#2{%
+%%%% \m@mpn@new@chaptrue%
+%%%% \m@mpn@new@schapfalse%
+%%%% \def\f@rbdy{#2}%
+%%%%% \ifx\ch@pt@c\@empty % no optional args
+%%%%% \def\f@rtoc{#2}%
+%%%%% \def\f@rhdr{#2}%
+%%%%% \PrerenderUnicode{#2}%
+%%%%% \else % at least one opt arg
+%%%%% \let\f@rtoc\ch@pt@c
+%%%%% \ifx\@empty#1\@empty
+%%%%% \let\f@rhdr\ch@pt@c
+%%%%% \PrerenderUnicode{#1#2}%
+%%%%% \else
+%%%%% \def\f@rhdr{#1}%
+%%%%% \PrerenderUnicode{#1}%
+%%%%% \fi
+%%%%% \fi
+%%%% \ifx\ch@pt@c\m@m@empty % no optional args
+%%%% \def\f@rtoc{#1}%
+%%%% \def\f@rhdr{#1}%
+%%%%% \PrerenderUnicode{#1}%
+%%%% \else % at least one opt arg
+%%%% \def\f@rtoc{\ch@pt@c}%
+%%%% \nametest{#1}{#2}%
+%%%% \ifsamename % one opt arg
+%%%% \def\f@rhdr{\ch@pt@c}%
+%%%%% \PrerenderUnicode{#1#2}%
+%%%% \else % two opt args
+%%%% \def\f@rhdr{#1}%
+%%%%% \PrerenderUnicode{#1}%
+%%%% \fi
+%%%% \fi
+%%%% \m@m@Andfalse
+%%%% \ifnum \c@secnumdepth >\m@ne
+%%%% \if@mainmatter
+%%%% \m@m@Andtrue
+%%%% \fi
+%%%% \fi
+%%%% \ifm@m@And
+%%%% \ifanappendix
+%%%% \refstepcounter{APPchapter}%
+%%%% \else
+%%%% \refstepcounter{chapter}%
+%%%% \fi
+%%%% \fi
+%%%% \chaptermark{\f@rhdr}
+%%%% \ifartopt
+%%%% \@makechapterhead{#2}%
+%%%% \@afterheading
+%%%% \else
+%%%% \insertchapterspace
+%%%% \if@twocolumn
+%%%% \@topnewpage[\@makechapterhead{#2}]%
+%%%% \else
+%%%% \@makechapterhead{#2}%
+%%%% \fi
+%%%% \@afterheading
+%%%% \fi
+%%%% \ifm@m@And
+%%%% \ifanappendix
+%%%% \addcontentsline{toc}{appendix}{%
+%%%%% \protect\chapternumberline{\thechapter}\f@rtoc}%
+%%%% \protect\chapternumberline{\hchaptertitlehead}\f@rtoc}%
+%%%%% \memappchapinfo{\thechapter}{\f@rtoc}{\f@rhdr}{#2}%
+%%%% \memappchapinfo{\thechapter}{\f@rtoc}{\f@rhdr}{#2}%
+%%%% \else
+%%%% \addcontentsline{toc}{chapter}{%
+%%%%% \protect\chapternumberline{\thechapter}\f@rtoc}%
+%%%% \protect\chapternumberline{\hchaptertitlehead}\f@rtoc}%
+%%%%% \memchapinfo{\thechapter}{\f@rtoc}{\f@rhdr}{#2}%
+%%%% \memchapinfo{\hchaptertitlehead}{\f@rtoc}{\f@rhdr}{#2}%
+%%%% \fi
+%%%% \else
+%%%% \addcontentsline{toc}{chapter}{\f@rtoc}%
+%%%% \ifanappendix
+%%%% \memappchapinfo{}{\f@rtoc}{\f@rhdr}{#2}%
+%%%% \else
+%%%% \memchapinfo{\hchaptertitlehead}{\f@rtoc}{\f@rhdr}{#2}%
+%%%% \fi
+%%%% \fi
+%%%% \mempostaddchaptertotochook%
+%%%% \ifheadnameref\M@gettitle{\f@rhdr}\else\M@gettitle{\f@rtoc}\fi
+%%%%%%% for chapter
+%%%% \ifanappendix
+%%%% \protected@edef\@currentlabel{\thechapter}%
+%%%% \fi
+%%%% \memendofchapterhook%
+%%%%}
+
\def\@chapter[#1]#2{%
\m@mpn@new@chaptrue%
\m@mpn@new@schapfalse%
\def\f@rbdy{#2}%
-% \ifx\ch@pt@c\@empty % no optional args
-% \def\f@rtoc{#2}%
-% \def\f@rhdr{#2}%
-% \PrerenderUnicode{#2}%
-% \else % at least one opt arg
-% \let\f@rtoc\ch@pt@c
-% \ifx\@empty#1\@empty
-% \let\f@rhdr\ch@pt@c
-% \PrerenderUnicode{#1#2}%
-% \else
-% \def\f@rhdr{#1}%
-% \PrerenderUnicode{#1}%
-% \fi
-% \fi
- \ifx\ch@pt@c\m@m@empty % no optional args
- \def\f@rtoc{#1}%
- \def\f@rhdr{#1}%
+ \ifx\ch@pt@c\@empty % no optional args
+ \def\f@rtoc{#2}%
+ \def\f@rhdr{#2}%
\else % at least one opt arg
- \def\f@rtoc{\ch@pt@c}%
- \nametest{#1}{#2}%
- \ifsamename % one opt arg
- \def\f@rhdr{\ch@pt@c}%
- \else % two opt args
+ \let\f@rtoc\ch@pt@c
+ \ifx\@empty#1\@empty
+ \let\f@rhdr\ch@pt@c
+ \else
\def\f@rhdr{#1}%
\fi
- \fi
+ \fi
\m@m@Andfalse
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
@@ -297,18 +372,16 @@
\fi
\@afterheading
\fi
+ \@nameuse{chapter@f@rtoc@before@write@hook}%
+ \mempreaddchaptertotochook%
\ifm@m@And
\ifanappendix
\addcontentsline{toc}{appendix}{%
-% \protect\chapternumberline{\thechapter}\f@rtoc}%
\protect\chapternumberline{\hchaptertitlehead}\f@rtoc}%
-% \memappchapinfo{\thechapter}{\f@rtoc}{\f@rhdr}{#2}%
\memappchapinfo{\thechapter}{\f@rtoc}{\f@rhdr}{#2}%
\else
\addcontentsline{toc}{chapter}{%
-% \protect\chapternumberline{\thechapter}\f@rtoc}%
\protect\chapternumberline{\hchaptertitlehead}\f@rtoc}%
-% \memchapinfo{\thechapter}{\f@rtoc}{\f@rhdr}{#2}%
\memchapinfo{\hchaptertitlehead}{\f@rtoc}{\f@rhdr}{#2}%
\fi
\else
@@ -321,82 +394,12 @@
\fi
\mempostaddchaptertotochook%
\ifheadnameref\M@gettitle{\f@rhdr}\else\M@gettitle{\f@rtoc}\fi
-%%% for chapter
\ifanappendix
\protected@edef\@currentlabel{\thechapter}%
\fi
\memendofchapterhook%
}
-%%%\def\@chapter[#1]#2{%
-%%% \m@mpn@new@chaptrue%
-%%% \m@mpn@new@schapfalse%
-%%% \def\f@rbdy{#2}%
-%%% \ifx\ch@pt@c\@empty % no optional args
-%%% \def\f@rtoc{#2}%
-%%% \def\f@rhdr{#2}%
-%%% \else % at least one opt arg
-%%% \let\f@rtoc\ch@pt@c
-%%% \ifx\@empty#1\@empty
-%%% \let\f@rhdr\ch@pt@c
-%%% \else
-%%% \def\f@rhdr{#1}%
-%%% \fi
-%%% \fi
-%%% \m@m@Andfalse
-%%% \ifnum \c@secnumdepth >\m@ne
-%%% \if@mainmatter
-%%% \m@m@Andtrue
-%%% \fi
-%%% \fi
-%%% \ifm@m@And
-%%% \ifanappendix
-%%% \refstepcounter{APPchapter}%
-%%% \else
-%%% \refstepcounter{chapter}%
-%%% \fi
-%%% \fi
-%%% \chaptermark{\f@rhdr}
-%%% \ifartopt
-%%% \@makechapterhead{#2}%
-%%% \@afterheading
-%%% \else
-%%% \insertchapterspace
-%%% \if@twocolumn
-%%% \@topnewpage[\@makechapterhead{#2}]%
-%%% \else
-%%% \@makechapterhead{#2}%
-%%% \fi
-%%% \@afterheading
-%%% \fi
-%%% \@nameuse{chapter@f@rtoc@before@write@hook}%
-%%% \mempreaddchaptertotochook%
-%%% \ifm@m@And
-%%% \ifanappendix
-%%% \addcontentsline{toc}{appendix}{%
-%%% \protect\chapternumberline{\hchaptertitlehead}\f@rtoc}%
-%%% \memappchapinfo{\thechapter}{\f@rtoc}{\f@rhdr}{#2}%
-%%% \else
-%%% \addcontentsline{toc}{chapter}{%
-%%% \protect\chapternumberline{\hchaptertitlehead}\f@rtoc}%
-%%% \memchapinfo{\hchaptertitlehead}{\f@rtoc}{\f@rhdr}{#2}%
-%%% \fi
-%%% \else
-%%% \addcontentsline{toc}{chapter}{\f@rtoc}%
-%%% \ifanappendix
-%%% \memappchapinfo{}{\f@rtoc}{\f@rhdr}{#2}%
-%%% \else
-%%% \memchapinfo{\hchaptertitlehead}{\f@rtoc}{\f@rhdr}{#2}%
-%%% \fi
-%%% \fi
-%%% \mempostaddchaptertotochook%
-%%% \ifheadnameref\M@gettitle{\f@rhdr}\else\M@gettitle{\f@rtoc}\fi
-%%% \ifanappendix
-%%% \protected@edef\@currentlabel{\thechapter}%
-%%% \fi
-%%% \memendofchapterhook%
-%%%}
-
%\def\@makechapterhead#1{%
% \chapterheadstart% \vspace*{50\p@}%
% {\parindent \z@ \raggedright \normalfont
diff --git a/language/korean/kotex-oblivoir/tex/memhangul-common/oblivoir-misc.sty b/language/korean/kotex-oblivoir/tex/memhangul-common/oblivoir-misc.sty
new file mode 100644
index 0000000000..8d81ccefbf
--- /dev/null
+++ b/language/korean/kotex-oblivoir/tex/memhangul-common/oblivoir-misc.sty
@@ -0,0 +1,122 @@
+%% file oblivoir-misc.sty
+%% part of oblivoir class
+%%
+%% (c) 2022 Kangsoo Kim
+%%
+%% 2022-03-01
+%%
+\ProvidesPackage{oblivoir-misc}[2022/03/01 version0.1]
+
+\RequirePackage{etoolbox}
+
+%%% tikz pagenode
+%%% see http://www.ktug.org/xe/index.php?mid=KTUG_QnA_board&document_srl=253542
+
+\AtEndPreamble{%
+\ifx\pgfkeys\undefined\else
+\newcommand\setpagenode{%
+ \expandafter\def\csname pgf@sh@ns@current page\endcsname{rectangle}%
+ \strictpagecheck%
+ \checkoddpage%
+ \ifoddpage%
+ \expandafter\def\csname pgf@sh@np@current page\endcsname{%
+ \def\southwest{\pgfpoint{\stockwidth-\paperwidth-\trimedge}%
+ {\stockheight-\trimtop-\paperheight}}%
+ \def\northeast{\pgfpoint{\stockwidth-\trimedge}{\stockheight-\trimtop}}%
+ }%
+ \else
+ \expandafter\def\csname pgf@sh@np@current page\endcsname{%
+ \def\southwest{\pgfpoint{\trimedge}{\stockheight-\trimtop-\paperheight}}%
+ \def\northeast{\pgfpoint{\trimedge+\paperwidth}{\stockheight-\trimtop}}%
+ }%
+ \fi
+ \expandafter\def\csname pgf@sh@nt@current page\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
+ \expandafter\def\csname pgf@sh@pi@current page\endcsname{pgfpageorigin}}
+
+\pgfkeys{/tikz/overlay/.add code={}{\setpagenode}}
+\fi
+}
+
+%%% \texthl
+%%% from oblivoir-patch2.sty, 2021
+%%% \texthl command
+%%% highlighs text in XeTeX
+%%% * now, in mathmode it doesn't work.
+%%%. * now, lualatex is not supported.
+%%%
+%%% \obhlcolor, \obhlheight, \obhlraisedim can be redefined by user.
+\ExplSyntaxOn
+\bool_new:N \g_ulemloaded_bool
+\bool_new:N \g_xcolorloaded_bool
+\dim_new:N \obhlraisedim
+\dim_new:N \obhlheight
+\AtEndPreamble{
+ \@ifpackageloaded{color}
+ { \bool_set_true:N \g_xcolorloaded_bool }
+ {
+ \@ifpackageloaded{xcolor}
+ { \bool_set_true:N \g_xcolorloaded_bool }
+ { \bool_set_false:N \g_xcolorloaded_bool }
+ }
+ \@ifpackageloaded{ulem}
+ { \bool_set_true:N \g_ulemloaded_bool }
+ { \bool_set_false:N \g_ulemloaded_bool
+ \let\UL@protected\protected
+ }
+ \sys_if_engine_luatex:TF {
+ \cs_if_exist:NF \obhlcolor { \def\obhlcolor{yellow!80} }
+ \dim_set:Nn \obhlraisedim { -.1\baselineskip }
+ \dim_set:Nn \obhlheight { 1.01em }
+ \NewDocumentCommand\texthl{}{
+ \bool_if:NTF \g_ulemloaded_bool
+ {
+ \msg_error:nn { texthl } { Do~not~use~ulem~with~luatexko. }
+ }
+ {
+ \hbox_set:Nn \l_tmpa_box { \color{\obhlcolor}\rule{1pt}{\obhlheight} }
+ \markoverwith{
+ \box_move_up:nn { \obhlraisedim } { \box_use:N \l_tmpa_box }
+ }
+ }
+ }
+ }{
+% \sys_if_engine_xetex:TF {
+ \bool_if:nTF
+ {
+ \g_ulemloaded_bool
+ &&
+ \g_xcolorloaded_bool
+ }
+ {
+ \cs_if_exist:NF \obhlcolor
+ {
+ \def\obhlcolor{yellow!80}
+ }
+ \dim_set:Nn \obhlraisedim { -.1\baselineskip }
+ \dim_set:Nn \obhlheight { 1.01em }
+ \UL@protected\def \texthl
+ {
+ \bgroup
+ \hbox_set:Nn \l_tmpa_box {\color{\obhlcolor}\rule{1pt}{\obhlheight}}
+ \box_set_ht:Nn \l_tmpa_box { \c_zero_dim }
+ \box_set_dp:Nn \l_tmpa_box { \c_zero_dim }
+ \markoverwith{%
+ \kern-.1pt
+ \box_move_up:nn { \obhlraisedim } { \box_use:N \l_tmpa_box }
+ }\ULon
+ }
+ }
+ {
+ \def\texthl {
+ \msg_error:nn { texthl } { ulem~and~(x)color~required.}
+ }
+ }
+% }
+% {
+% \msg_error:nn { texthl } { pdftex~not~supported }
+% }
+ }
+}
+\ExplSyntaxOff
+
+\endinput
diff --git a/language/korean/kotex-oblivoir/tex/oblivoir-utf.cls b/language/korean/kotex-oblivoir/tex/oblivoir-utf.cls
index 3d321a1446..535b74dbd4 100644
--- a/language/korean/kotex-oblivoir/tex/oblivoir-utf.cls
+++ b/language/korean/kotex-oblivoir/tex/oblivoir-utf.cls
@@ -1,6 +1,6 @@
%% File `oblivoir-utf.cls`
%%
-%% (C) Copyright 2006-2021 Kangsoo Kim <modviv2k15 at gmail com>
+%% (C) Copyright 2006-2015 Kangsoo Kim <karnes at ktug org>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
diff --git a/language/korean/kotex-oblivoir/tex/oblivoir-xl.cls b/language/korean/kotex-oblivoir/tex/oblivoir-xl.cls
index 88327a694a..e68aa40c94 100644
--- a/language/korean/kotex-oblivoir/tex/oblivoir-xl.cls
+++ b/language/korean/kotex-oblivoir/tex/oblivoir-xl.cls
@@ -1,6 +1,6 @@
%% File `oblivoir-xl.cls`
%%
-%% (C) Copyright 2006-2021 Kangsoo Kim <modviv2k15 at gmail com>
+%% (C) Copyright 2006-2021 Kangsoo Kim <karnes at ktug org>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
diff --git a/language/korean/kotex-oblivoir/tex/oblivoir.cls b/language/korean/kotex-oblivoir/tex/oblivoir.cls
index 19807a454a..2ccb1f0fc2 100644
--- a/language/korean/kotex-oblivoir/tex/oblivoir.cls
+++ b/language/korean/kotex-oblivoir/tex/oblivoir.cls
@@ -1,6 +1,6 @@
%% File `oblivoir.cls`
%%
-%% (C) Copyright 2006-2021 Kangsoo Kim <modviv2k15 at gmail com>
+%% (C) Copyright 2006-2022 Kangsoo Kim <karnes at ktug org>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -10,7 +10,7 @@
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2006/05/20 or later.
%%
-\ProvidesClass{oblivoir}[2021/09/21 v3.0.2]
+\ProvidesClass{oblivoir}[2022/03/01 v3.1]
\RequirePackage{xkeyval}
\RequirePackage{xparse}
diff --git a/language/korean/kotex-oblivoir/tex/xoblivoir.cls b/language/korean/kotex-oblivoir/tex/xoblivoir.cls
index d1444651d2..a825b59adf 100644
--- a/language/korean/kotex-oblivoir/tex/xoblivoir.cls
+++ b/language/korean/kotex-oblivoir/tex/xoblivoir.cls
@@ -1,6 +1,6 @@
%% File `xoblivoir.cls`
%%
-%% (C) Copyright 2006-2021 Kangsoo Kim <modviv2k15 at gmail com>
+%% (C) Copyright 2006-2021 Kangsoo Kim <karnes at ktug org>
%% (C) Copyright 2013 Kihwang Lee <leekh at ktug org>
%%
%% This work may be distributed and/or modified under the
diff --git a/macros/generic/markdown/VERSION b/macros/generic/markdown/VERSION
index 7d641125a9..db73644a40 100644
--- a/macros/generic/markdown/VERSION
+++ b/macros/generic/markdown/VERSION
@@ -1 +1 @@
-2.14.0-0-g9635d76 (2022/02/28)
+2.14.1-0-gb933d81 (2022/03/01)
diff --git a/macros/generic/markdown/markdown.dtx b/macros/generic/markdown/markdown.dtx
index c16740e2a1..60d7626990 100644
--- a/macros/generic/markdown/markdown.dtx
+++ b/macros/generic/markdown/markdown.dtx
@@ -12503,8 +12503,10 @@ following text:
\def\markdownRendererTextCitePrototype#1{}%
\def\markdownRendererTablePrototype#1#2#3{}%
\def\markdownRendererInlineHtmlCommentPrototype#1{}%
-\def\markdownRendererBlockHtmlCommentBeginPrototype{\iffalse}%
-\def\markdownRendererBlockHtmlCommentEndPrototype{\fi}%
+\let\markdownRendererBlockHtmlCommentBeginPrototype=\iffalse
+\let\markdownRendererBlockHtmlCommentBegin=\iffalse
+\let\markdownRendererBlockHtmlCommentEndPrototype=\fi
+\let\markdownRendererBlockHtmlCommentEnd=\fi
\def\markdownRendererInlineHtmlTagPrototype#1{}%
\def\markdownRendererInputBlockHtmlElementPrototype#1{}%
\def\markdownRendererTickedBoxPrototype{}%
diff --git a/macros/generic/markdown/markdown.html b/macros/generic/markdown/markdown.html
index 1ea4c65f35..3711e5ae22 100644
--- a/macros/generic/markdown/markdown.html
+++ b/macros/generic/markdown/markdown.html
@@ -82,7 +82,7 @@
<header id="title-block-header">
<h1 class="title">Markdown Package User Manual</h1>
<p class="author">Vít Novotný</p>
-<p class="date">2.14.0-0-g9635d76 (2022/02/28)</p>
+<p class="date">2.14.1-0-gb933d81 (2022/03/01)</p>
</header>
<nav id="TOC" role="doc-toc">
<ul>
diff --git a/macros/generic/markdown/markdown.pdf b/macros/generic/markdown/markdown.pdf
index ef7f39daaf..6a505363c1 100644
--- a/macros/generic/markdown/markdown.pdf
+++ b/macros/generic/markdown/markdown.pdf
Binary files differ
diff --git a/macros/latex/contrib/bfh-ci/README.md b/macros/latex/contrib/bfh-ci/README.md
index 5f49667200..c7afa87fa6 100644
--- a/macros/latex/contrib/bfh-ci/README.md
+++ b/macros/latex/contrib/bfh-ci/README.md
@@ -2,7 +2,7 @@
Copyright (C) Marei Peischl <marei@peitex.de> & Andreas Habegger <andreas.habegger@bfh.ch>, 2021–2022
-bfh 2022/02/22 v2.1.1
+bfh 2022/03/01 v2.1.2
***************************************************************************
@@ -92,4 +92,6 @@ BFH-CI uses the translations package to provide translations for specific elemen
* v2.1.1 (2022/02/22)
- Improve fallbacks for missing logos with bfhsciposter
- Automatically enable handout mode for paperNotes with bfhbeamer
- - Fix rule setup for landscape mode of bfhsciposter \ No newline at end of file
+ - Fix rule setup for landscape mode of bfhsciposter
+* v2.1.2 (2022/03/01)
+ - Small layout adjustments for bfhterminal \ No newline at end of file
diff --git a/macros/latex/contrib/bfh-ci/doc/DEMO-BFHBeamer-Sidebar.pdf b/macros/latex/contrib/bfh-ci/doc/DEMO-BFHBeamer-Sidebar.pdf
index 686d5156b4..65ecdd5961 100644
--- a/macros/latex/contrib/bfh-ci/doc/DEMO-BFHBeamer-Sidebar.pdf
+++ b/macros/latex/contrib/bfh-ci/doc/DEMO-BFHBeamer-Sidebar.pdf
Binary files differ
diff --git a/macros/latex/contrib/bfh-ci/doc/DEMO-BFHBeamer.pdf b/macros/latex/contrib/bfh-ci/doc/DEMO-BFHBeamer.pdf
index dd1fed23ba..978d8642b6 100644
--- a/macros/latex/contrib/bfh-ci/doc/DEMO-BFHBeamer.pdf
+++ b/macros/latex/contrib/bfh-ci/doc/DEMO-BFHBeamer.pdf
Binary files differ
diff --git a/macros/latex/contrib/bfh-ci/doc/DEMO-BFHFactsheet.pdf b/macros/latex/contrib/bfh-ci/doc/DEMO-BFHFactsheet.pdf
index 0881780ec8..7a61a903cd 100644
--- a/macros/latex/contrib/bfh-ci/doc/DEMO-BFHFactsheet.pdf
+++ b/macros/latex/contrib/bfh-ci/doc/DEMO-BFHFactsheet.pdf
Binary files differ
diff --git a/macros/latex/contrib/bfh-ci/doc/DEMO-BFHLetter.pdf b/macros/latex/contrib/bfh-ci/doc/DEMO-BFHLetter.pdf
index 0eac32ffd6..f92cbb987a 100644
--- a/macros/latex/contrib/bfh-ci/doc/DEMO-BFHLetter.pdf
+++ b/macros/latex/contrib/bfh-ci/doc/DEMO-BFHLetter.pdf
Binary files differ
diff --git a/macros/latex/contrib/bfh-ci/doc/DEMO-BFHProjektProposal.pdf b/macros/latex/contrib/bfh-ci/doc/DEMO-BFHProjektProposal.pdf
index fd38f17975..5957656b5d 100644
--- a/macros/latex/contrib/bfh-ci/doc/DEMO-BFHProjektProposal.pdf
+++ b/macros/latex/contrib/bfh-ci/doc/DEMO-BFHProjektProposal.pdf
Binary files differ
diff --git a/macros/latex/contrib/bfh-ci/doc/DEMO-BFHPub.pdf b/macros/latex/contrib/bfh-ci/doc/DEMO-BFHPub.pdf
index 968f0c32ae..d1c4bf58c6 100644
--- a/macros/latex/contrib/bfh-ci/doc/DEMO-BFHPub.pdf
+++ b/macros/latex/contrib/bfh-ci/doc/DEMO-BFHPub.pdf
Binary files differ
diff --git a/macros/latex/contrib/bfh-ci/doc/DEMO-BFHSciPoster.pdf b/macros/latex/contrib/bfh-ci/doc/DEMO-BFHSciPoster.pdf
index eea8a44ea4..a1a84dc1e6 100644
--- a/macros/latex/contrib/bfh-ci/doc/DEMO-BFHSciPoster.pdf
+++ b/macros/latex/contrib/bfh-ci/doc/DEMO-BFHSciPoster.pdf
Binary files differ
diff --git a/macros/latex/contrib/bfh-ci/doc/DEMO-BFHThesis.pdf b/macros/latex/contrib/bfh-ci/doc/DEMO-BFHThesis.pdf
index 32b1e26314..0e295b3b64 100644
--- a/macros/latex/contrib/bfh-ci/doc/DEMO-BFHThesis.pdf
+++ b/macros/latex/contrib/bfh-ci/doc/DEMO-BFHThesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/bfh-ci/tex/beamercolorthemeBFH.sty b/macros/latex/contrib/bfh-ci/tex/beamercolorthemeBFH.sty
index 3518d85337..b6585e80d0 100644
--- a/macros/latex/contrib/bfh-ci/tex/beamercolorthemeBFH.sty
+++ b/macros/latex/contrib/bfh-ci/tex/beamercolorthemeBFH.sty
@@ -1,4 +1,4 @@
-%% This is file `beamercolorthemeBFH.sty' version 2.1.1 (2022/02/22),
+%% This is file `beamercolorthemeBFH.sty' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesPackage{beamercolorthemeBFH}[2022/02/22 v2.1.1 BFH-CI beamer color theme, CI of Bern University of Applied Sciences]
+\ProvidesPackage{beamercolorthemeBFH}[2022/03/01 v2.1.2 BFH-CI beamer color theme, CI of Bern University of Applied Sciences]
% ====================
% Dependencies
diff --git a/macros/latex/contrib/bfh-ci/tex/beamerfontthemeBFH.sty b/macros/latex/contrib/bfh-ci/tex/beamerfontthemeBFH.sty
index 51ddd933bb..04ef94d4e3 100644
--- a/macros/latex/contrib/bfh-ci/tex/beamerfontthemeBFH.sty
+++ b/macros/latex/contrib/bfh-ci/tex/beamerfontthemeBFH.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerfontthemeBFH.sty' version 2.1.1 (2022/02/22),
+%% This is file `beamerfontthemeBFH.sty' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesPackage{beamerfontthemeBFH}[2022/02/22 v2.1.1 BFH-CI beamer font theme, CI of Bern University of Applied Sciences]
+\ProvidesPackage{beamerfontthemeBFH}[2022/03/01 v2.1.2 BFH-CI beamer font theme, CI of Bern University of Applied Sciences]
% ====================
% Dependencies
diff --git a/macros/latex/contrib/bfh-ci/tex/beamerinnerthemeBFH.sty b/macros/latex/contrib/bfh-ci/tex/beamerinnerthemeBFH.sty
index e4277ea78a..e6bd0c512d 100644
--- a/macros/latex/contrib/bfh-ci/tex/beamerinnerthemeBFH.sty
+++ b/macros/latex/contrib/bfh-ci/tex/beamerinnerthemeBFH.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerinnerthemeBFH.sty' version 2.1.1 (2022/02/22),
+%% This is file `beamerinnerthemeBFH.sty' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesExplPackage{beamerinnerthemeBFH}{2022/02/22}{2.1.1}{BFH-CI beamer inner theme, CI of Bern University of Applied Sciences}
+\ProvidesExplPackage{beamerinnerthemeBFH}{2022/03/01}{2.1.2}{BFH-CI beamer inner theme, CI of Bern University of Applied Sciences}
\RequirePackage{l3keys2e}
diff --git a/macros/latex/contrib/bfh-ci/tex/beamerouterthemeBFH-sidebar.sty b/macros/latex/contrib/bfh-ci/tex/beamerouterthemeBFH-sidebar.sty
index 5cdc5b8f3f..b2dcb15c67 100644
--- a/macros/latex/contrib/bfh-ci/tex/beamerouterthemeBFH-sidebar.sty
+++ b/macros/latex/contrib/bfh-ci/tex/beamerouterthemeBFH-sidebar.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerouterthemeBFH-sidebar.sty' version 2.1.1 (2022/02/22),
+%% This is file `beamerouterthemeBFH-sidebar.sty' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesPackage{beamerouterthemeBFH-sidebar}[2022/02/22 v2.1.1 BFH-CI beamer outer theme sidebar variant, CI of Bern University of Applied Sciences]
+\ProvidesPackage{beamerouterthemeBFH-sidebar}[2022/03/01 v2.1.2 BFH-CI beamer outer theme sidebar variant, CI of Bern University of Applied Sciences]
\mode<presentation>
\useoutertheme{BFH}
diff --git a/macros/latex/contrib/bfh-ci/tex/beamerouterthemeBFH.sty b/macros/latex/contrib/bfh-ci/tex/beamerouterthemeBFH.sty
index a1a8229790..6d316418f9 100644
--- a/macros/latex/contrib/bfh-ci/tex/beamerouterthemeBFH.sty
+++ b/macros/latex/contrib/bfh-ci/tex/beamerouterthemeBFH.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerouterthemeBFH.sty' version 2.1.1 (2022/02/22),
+%% This is file `beamerouterthemeBFH.sty' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesPackage{beamerouterthemeBFH}[2022/02/22 v2.1.1 BFH-CI beamer outer theme, CI of Bern University of Applied Sciences]
+\ProvidesPackage{beamerouterthemeBFH}[2022/03/01 v2.1.2 BFH-CI beamer outer theme, CI of Bern University of Applied Sciences]
\RequirePackage{l3keys2e}
diff --git a/macros/latex/contrib/bfh-ci/tex/beamerthemeBFH.sty b/macros/latex/contrib/bfh-ci/tex/beamerthemeBFH.sty
index 046f5a7e6f..e0d29ed81b 100644
--- a/macros/latex/contrib/bfh-ci/tex/beamerthemeBFH.sty
+++ b/macros/latex/contrib/bfh-ci/tex/beamerthemeBFH.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerthemeBFH.sty' version 2.1.1 (2022/02/22),
+%% This is file `beamerthemeBFH.sty' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesPackage{beamerthemeBFH}[2022/02/22 v2.1.1 BFH-CI beamer theme, CI of Bern University of Applied Sciences]
+\ProvidesPackage{beamerthemeBFH}[2022/03/01 v2.1.2 BFH-CI beamer theme, CI of Bern University of Applied Sciences]
% ====================
% Dependencies
% ====================
diff --git a/macros/latex/contrib/bfh-ci/tex/bfh-a0paper.clo b/macros/latex/contrib/bfh-ci/tex/bfh-a0paper.clo
index 692ea3173a..b1f2519b7b 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfh-a0paper.clo
+++ b/macros/latex/contrib/bfh-ci/tex/bfh-a0paper.clo
@@ -1,4 +1,4 @@
-%% This is file `bfh-a0paper.clo' version 2.1.1 (2022/02/22),
+%% This is file `bfh-a0paper.clo' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesExplFile{bfh-a0paper.clo}{2022/02/22}{2.1.1}{bfh-ci~size~adjustments~for~a0paper}
+\ProvidesExplFile{bfh-a0paper.clo}{2022/03/01}{2.1.2}{bfh-ci~size~adjustments~for~a0paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{126bp}{165bp}}
\cs_set:Nn \ptxcd_subtitle_fontsize: {{38bp}{55bp}}
diff --git a/macros/latex/contrib/bfh-ci/tex/bfh-a1paper.clo b/macros/latex/contrib/bfh-ci/tex/bfh-a1paper.clo
index 2fc2217e17..ad0463fa86 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfh-a1paper.clo
+++ b/macros/latex/contrib/bfh-ci/tex/bfh-a1paper.clo
@@ -1,4 +1,4 @@
-%% This is file `bfh-a1paper.clo' version 2.1.1 (2022/02/22),
+%% This is file `bfh-a1paper.clo' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesExplFile{bfh-a1paper.clo}{2022/02/22}{2.1.1}{bfh-ci~size~adjustments~for~a1paper}
+\ProvidesExplFile{bfh-a1paper.clo}{2022/03/01}{2.1.2}{bfh-ci~size~adjustments~for~a1paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{90bp}{108bp}}
\cs_set:Nn \ptxcd_subtitle_fontsize: {{27bp}{32.5bp}}
diff --git a/macros/latex/contrib/bfh-ci/tex/bfh-a2paper.clo b/macros/latex/contrib/bfh-ci/tex/bfh-a2paper.clo
index 47ae1098bd..8be826decc 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfh-a2paper.clo
+++ b/macros/latex/contrib/bfh-ci/tex/bfh-a2paper.clo
@@ -1,4 +1,4 @@
-%% This is file `bfh-a2paper.clo' version 2.1.1 (2022/02/22),
+%% This is file `bfh-a2paper.clo' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesExplFile{bfh-a2paper.clo}{2022/02/22}{2.1.1}{bfh-ci~size~adjustments~for~a2paper}
+\ProvidesExplFile{bfh-a2paper.clo}{2022/03/01}{2.1.2}{bfh-ci~size~adjustments~for~a2paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{64bp}{77bp}}
\cs_set:Nn \ptxcd_subtitle_fontsize: {{19.5bp}{23.4bp}}
diff --git a/macros/latex/contrib/bfh-ci/tex/bfh-a3paper.clo b/macros/latex/contrib/bfh-ci/tex/bfh-a3paper.clo
index f6d8d6b1b7..3c4c621950 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfh-a3paper.clo
+++ b/macros/latex/contrib/bfh-ci/tex/bfh-a3paper.clo
@@ -1,4 +1,4 @@
-%% This is file `bfh-a3paper.clo' version 2.1.1 (2022/02/22),
+%% This is file `bfh-a3paper.clo' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesExplFile{bfh-a0paper.clo}{2022/02/22}{2.1.1}{bfh-ci~size~adjustments~for~a1paper}
+\ProvidesExplFile{bfh-a0paper.clo}{2022/03/01}{2.1.2}{bfh-ci~size~adjustments~for~a1paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{46bp}{55.2bp}}
\cs_set:Nn \ptxcd_subtitle_fontsize: {{19.5bp}{23.4bp}}
diff --git a/macros/latex/contrib/bfh-ci/tex/bfh-a4paper.clo b/macros/latex/contrib/bfh-ci/tex/bfh-a4paper.clo
index 4599d3fd11..f2da547e43 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfh-a4paper.clo
+++ b/macros/latex/contrib/bfh-ci/tex/bfh-a4paper.clo
@@ -1,4 +1,4 @@
-%% This is file `bfh-a4paper.clo' version 2.1.1 (2022/02/22),
+%% This is file `bfh-a4paper.clo' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesExplFile{bfh-a0paper.clo}{2022/02/22}{2.1.1}{bfh-ci~size~adjustments~for~a4paper}
+\ProvidesExplFile{bfh-a0paper.clo}{2022/03/01}{2.1.2}{bfh-ci~size~adjustments~for~a4paper}
\cs_set:Nn \ptxcd_setup_base_sizes: {
\dim_gset:Nn \g_ptxcd_rule_height_dim {2.5mm}
\dim_gset:Nn \g_ptxcd_rule_arc_dim {.5mm}
diff --git a/macros/latex/contrib/bfh-ci/tex/bfh-a5paper.clo b/macros/latex/contrib/bfh-ci/tex/bfh-a5paper.clo
index 1f557fde54..e8c479a35f 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfh-a5paper.clo
+++ b/macros/latex/contrib/bfh-ci/tex/bfh-a5paper.clo
@@ -1,4 +1,4 @@
-%% This is file `bfh-a5paper.clo' version 2.1.1 (2022/02/22),
+%% This is file `bfh-a5paper.clo' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesExplFile{bfh-a5paper.clo}{2022/02/22}{2.1.1}{bfh-ci~size~adjustments~for~a5paper}
+\ProvidesExplFile{bfh-a5paper.clo}{2022/03/01}{2.1.2}{bfh-ci~size~adjustments~for~a5paper}
\cs_set:Nn \ptxcd_setup_base_sizes: {
\dim_gset:Nn \g_ptxcd_rule_height_dim {2.5mm}
\dim_gset:Nn \g_ptxcd_rule_arc_dim {.5mm}%
diff --git a/macros/latex/contrib/bfh-ci/tex/bfh-a6paper.clo b/macros/latex/contrib/bfh-ci/tex/bfh-a6paper.clo
index a2d7b72e0e..6661595285 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfh-a6paper.clo
+++ b/macros/latex/contrib/bfh-ci/tex/bfh-a6paper.clo
@@ -1,4 +1,4 @@
-%% This is file `bfh-a6paper.clo' version 2.1.1 (2022/02/22),
+%% This is file `bfh-a6paper.clo' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,8 +28,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{2.1.1}
-\def\filedate{2022/02/22}
+\def\fileversion{2.1.2}
+\def\filedate{2022/03/01}
\ProvidesExplFile{bfh-a5paper.clo}{\filedate}{\fileversion}{bfh-ci~size~adjustments~for~a5paper}
\cs_set:Nn \ptxcd_setup_base_sizes: {
\dim_gset:Nn \g_ptxcd_rule_height_dim {2mm}
diff --git a/macros/latex/contrib/bfh-ci/tex/bfh-beamerarticle.cfg b/macros/latex/contrib/bfh-ci/tex/bfh-beamerarticle.cfg
index 2bd826755d..2e7c30a475 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfh-beamerarticle.cfg
+++ b/macros/latex/contrib/bfh-ci/tex/bfh-beamerarticle.cfg
@@ -1,4 +1,4 @@
-%% This is file `bfh-beamerarticle.cfg' version 2.1.1 (2022/02/22),
+%% This is file `bfh-beamerarticle.cfg' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesFile{bfh-beamerarticle.cfg} [2022/02/22 v2.1.1 beamerarticle configuration for bfhlayout]
+\ProvidesFile{bfh-beamerarticle.cfg} [2022/03/01 v2.1.2 beamerarticle configuration for bfhlayout]
\let\orig@titlegraphic\titlegraphic
\let\titlegraphic\@undefined
diff --git a/macros/latex/contrib/bfh-ci/tex/bfh-factsheet.cfg b/macros/latex/contrib/bfh-ci/tex/bfh-factsheet.cfg
index c7b9cd33af..4307c75897 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfh-factsheet.cfg
+++ b/macros/latex/contrib/bfh-ci/tex/bfh-factsheet.cfg
@@ -1,4 +1,4 @@
-%% This is file `bfh-factsheet.cfg' version 2.1.1 (2022/02/22),
+%% This is file `bfh-factsheet.cfg' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesFile{bfh-factsheet.cfg}[2022/02/22 v2.1.1 factsheet configuration for bfhlayout]
+\ProvidesFile{bfh-factsheet.cfg}[2022/03/01 v2.1.2 factsheet configuration for bfhlayout]
\KOMAoptions{headsepline=false}
\clearpairofpagestyles
diff --git a/macros/latex/contrib/bfh-ci/tex/bfh-layout-boxes.cfg b/macros/latex/contrib/bfh-ci/tex/bfh-layout-boxes.cfg
index a47f713aae..7d907bd1ec 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfh-layout-boxes.cfg
+++ b/macros/latex/contrib/bfh-ci/tex/bfh-layout-boxes.cfg
@@ -1,4 +1,4 @@
-%% This is file `bfh-layout-boxes.cfg' version 2.1.1 (2022/02/22),
+%% This is file `bfh-layout-boxes.cfg' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -29,7 +29,7 @@
%% ============================================================================
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile{bfh-layout-boxes.cfg}[2022/02/22 v2.1.1 boxes configuration for bfhlayout]
+\ProvidesFile{bfh-layout-boxes.cfg}[2022/03/01 v2.1.2 boxes configuration for bfhlayout]
\RequirePackage{bfhcolors}
\RequirePackage{fontawesome}
\PassOptionsToPackage{most}{tcolorbox}
diff --git a/macros/latex/contrib/bfh-ci/tex/bfh-layout-listings.cfg b/macros/latex/contrib/bfh-ci/tex/bfh-layout-listings.cfg
index 6b8700b62f..7e250caf2c 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfh-layout-listings.cfg
+++ b/macros/latex/contrib/bfh-ci/tex/bfh-layout-listings.cfg
@@ -1,4 +1,4 @@
-%% This is file `bfh-layout-listings.cfg' version 2.1.1 (2022/02/22),
+%% This is file `bfh-layout-listings.cfg' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesFile{bfh-layout-listings.cfg}[2022/02/22 v2.1.1 listings configuration for bfhlayout]
+\ProvidesFile{bfh-layout-listings.cfg}[2022/03/01 v2.1.2 listings configuration for bfhlayout]
\RequirePackage{bfhcolors}
%% Hack to fix issue with float env used in listings package
%% ref. : https://tex.stackexchange.com/questions/51867/koma-warning-about-toc
diff --git a/macros/latex/contrib/bfh-ci/tex/bfh-layout-rules.cfg b/macros/latex/contrib/bfh-ci/tex/bfh-layout-rules.cfg
index 22c5ec73f0..eb097e357f 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfh-layout-rules.cfg
+++ b/macros/latex/contrib/bfh-ci/tex/bfh-layout-rules.cfg
@@ -1,4 +1,4 @@
-%% This is file `bfh-layout-rules.cfg' version 2.1.1 (2022/02/22),
+%% This is file `bfh-layout-rules.cfg' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesExplFile{bfh-layout-rules.cfg}{2022/02/22}{2.1.1}{rules configuration for bfhlayout}
+\ProvidesExplFile{bfh-layout-rules.cfg}{2022/03/01}{2.1.2}{rules configuration for bfhlayout}
\int_if_exist:NF \g_ptxcd_paper_int {
\int_new:N \g_ptxcd_paper_int
diff --git a/macros/latex/contrib/bfh-ci/tex/bfh-layout-tabular.cfg b/macros/latex/contrib/bfh-ci/tex/bfh-layout-tabular.cfg
index 41eb236cbd..86a8a58de3 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfh-layout-tabular.cfg
+++ b/macros/latex/contrib/bfh-ci/tex/bfh-layout-tabular.cfg
@@ -1,4 +1,4 @@
-%% This is file `bfh-layout-tabular.cfg' version 2.1.1 (2022/02/22),
+%% This is file `bfh-layout-tabular.cfg' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesExplFile{bfh-layout-tabular.cfg}{2022/02/22}{2.1.1}{tabular and tabularray configuration for bfhlayout}
+\ProvidesExplFile{bfh-layout-tabular.cfg}{2022/03/01}{2.1.2}{tabular and tabularray configuration for bfhlayout}
\colorlet{BFH-table}{BFH-LightGreen!10}
\colorlet{BFH-tablehead}{BFH-LightGreen!50}
diff --git a/macros/latex/contrib/bfh-ci/tex/bfh-layout-terminal.cfg b/macros/latex/contrib/bfh-ci/tex/bfh-layout-terminal.cfg
index 02ee665d63..3e68c785ad 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfh-layout-terminal.cfg
+++ b/macros/latex/contrib/bfh-ci/tex/bfh-layout-terminal.cfg
@@ -1,4 +1,4 @@
-%% This is file `bfh-layout-tabular.cfg' version 2.1.1 (2022/02/22),
+%% This is file `bfh-layout-tabular.cfg' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -29,7 +29,7 @@
%% ============================================================================
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile{bfh-layout-terminal.cfg}[2022/02/22 v2.1.1 terminal configuration for bfhlayout]
+\ProvidesFile{bfh-layout-terminal.cfg}[2022/03/01 v2.1.2 terminal configuration for bfhlayout]
\RequirePackage{bfhcolors}
\RequirePackage{tcolorbox}
@@ -96,6 +96,7 @@
\lstset{backgroundcolor=}
\lstset{frame=}
\lstset{numberstyle=}
+ \lstset{numbers=none}
} %%tabular
\colorlet{macosx-terminalBackground}{white}
@@ -118,6 +119,10 @@
\newcommand{\setupOSXPrompt}[1]{\pgfkeys{/terminal/.cd,host=macintosh,#1}%
\gdef\BFHterminalPrompt{\textcolor{\TerminalColor}{\small\ttfamily\bfseries \TerminalUser\url{@}\TerminalHost{\textcolor{macosx-terminalText}:}\textcolor{macosx-terminalText}{\url{~}}{\textcolor{macosx-terminalText}\TerminalPromptChar}\,}}
+ \lstset{backgroundcolor=}
+ \lstset{frame=}
+ \lstset{numberstyle=}
+ \lstset{numbers=none}
} %%
@@ -125,7 +130,7 @@
/terminal/.cd,
user/.code={\gdef\TerminalUser{#1}},user={},
host/.code={\gdef\TerminalHost{#1}},host={},
- color/.code={\gdef\TerminalColor{#1}},color=whyite,
+ color/.code={\gdef\TerminalColor{#1}},color=white,
prompt char/.code={\gdef\TerminalPromptChar{#1}},
prompt char=\$,
root/.style={user=root,color=BFH-MediumRed,prompt char=\#},
@@ -135,4 +140,4 @@
\newcommand{\StartConsole}{\gdef\BFHterminalPrompt{}}
-\endinput \ No newline at end of file
+\endinput
diff --git a/macros/latex/contrib/bfh-ci/tex/bfh-projectproposal.cfg b/macros/latex/contrib/bfh-ci/tex/bfh-projectproposal.cfg
index 01c2904e12..359255a57e 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfh-projectproposal.cfg
+++ b/macros/latex/contrib/bfh-ci/tex/bfh-projectproposal.cfg
@@ -1,4 +1,4 @@
-%% This is file `bfh-projectproposal.cfg' version 2.1.1 (2022/02/22),
+%% This is file `bfh-projectproposal.cfg' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesFile{bfh-projectproposal.cfg}[2022/02/22 v2.1.1 projectproposal configuration for bfhlayout]
+\ProvidesFile{bfh-projectproposal.cfg}[2022/03/01 v2.1.2 projectproposal configuration for bfhlayout]
\KOMAoptions{headsepline=false}
\clearpairofpagestyles
diff --git a/macros/latex/contrib/bfh-ci/tex/bfhbeamer.cls b/macros/latex/contrib/bfh-ci/tex/bfhbeamer.cls
index 333ef83403..621e08d342 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfhbeamer.cls
+++ b/macros/latex/contrib/bfh-ci/tex/bfhbeamer.cls
@@ -1,4 +1,4 @@
-%% This is file `bfhbeamer.cls' version 2.1.1 (2022/02/22),
+%% This is file `bfhbeamer.cls' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -29,7 +29,7 @@
%% ============================================================================
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{bfhbeamer}[2022/02/22 v2.1.1 BFH-CI beamer layout, CI of Bern University of Applied Sciences]
+\ProvidesClass{bfhbeamer}[2022/03/01 v2.1.2 BFH-CI beamer layout, CI of Bern University of Applied Sciences]
\RequirePackage{l3keys2e}
\PassOptionsToPackage{table}{xcolor}
@@ -47,7 +47,7 @@
beamerarticle .bool_gset:N = \g__ptxcd_beamerarticle_bool,
printNotes .code:n = \bool_gset_true:N \g__ptxcd_handoutWithNotes_bool \PassOptionsToPackage{beamer-notes=true}{handoutWithNotes},
tabletNotes .code:n = \PassOptionsToClass{handout}{beamer},
- paperNotes .code:n = \bool_gset_true:N \g__ptxcd_handoutWithNotes_bool,
+ paperNotes .code:n = \bool_gset_true:N \g__ptxcd_handoutWithNotes_bool \PassOptionsToClass{handout}{beamer},
}
\ExplSyntaxOff
diff --git a/macros/latex/contrib/bfh-ci/tex/bfhcolors.sty b/macros/latex/contrib/bfh-ci/tex/bfhcolors.sty
index dd1d9c50c3..dfbc44aaa5 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfhcolors.sty
+++ b/macros/latex/contrib/bfh-ci/tex/bfhcolors.sty
@@ -1,4 +1,4 @@
-%% This is file `bfhcolors.sty' version 2.1.1 (2022/02/22),
+%% This is file `bfhcolors.sty' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -29,7 +29,7 @@
%% ============================================================================
%%
\RequirePackage{expl3}
-\ProvidesExplPackage{bfhcolors}{2022/02/22}{2.1.1}{color setup for BFH-CI, CI of Bern Universitry of Applied Sciences}
+\ProvidesExplPackage{bfhcolors}{2022/03/01}{2.1.2}{color setup for BFH-CI, CI of Bern Universitry of Applied Sciences}
\RequirePackage{l3keys2e}
\tl_new:N \g__ptxcd_colormode_tl
diff --git a/macros/latex/contrib/bfh-ci/tex/bfhfonts.sty b/macros/latex/contrib/bfh-ci/tex/bfhfonts.sty
index 2e970b988d..afccc9789d 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfhfonts.sty
+++ b/macros/latex/contrib/bfh-ci/tex/bfhfonts.sty
@@ -1,4 +1,4 @@
-%% This is file `bfhfonts.sty' version 2.1.1 (2022/02/22),
+%% This is file `bfhfonts.sty' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -29,7 +29,7 @@
%% ============================================================================
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{bfhfonts}[2022/02/22 v2.1.1 BFH-CI (fonts Module)]
+\ProvidesPackage{bfhfonts}[2022/03/01 v2.1.2 BFH-CI (fonts Module)]
\RequirePackage{iftex}
\RequirePackage{anyfontsize}
diff --git a/macros/latex/contrib/bfh-ci/tex/bfhlayout.sty b/macros/latex/contrib/bfh-ci/tex/bfhlayout.sty
index 340ea5b6ec..cbe4679d1d 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfhlayout.sty
+++ b/macros/latex/contrib/bfh-ci/tex/bfhlayout.sty
@@ -1,4 +1,4 @@
-%% This is file `bfhlayout.sty' version 2.1.1 (2022/02/22),
+%% This is file `bfhlayout.sty' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -29,7 +29,7 @@
%% ============================================================================
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{bfhlayout}[2022/02/22 v2.1.1 BFH style package (layout)]
+\ProvidesPackage{bfhlayout}[2022/03/01 v2.1.2 BFH style package (layout)]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Process Options created for bfharticle
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/macros/latex/contrib/bfh-ci/tex/bfhletter.sty b/macros/latex/contrib/bfh-ci/tex/bfhletter.sty
index 01f599a314..00d03748b3 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfhletter.sty
+++ b/macros/latex/contrib/bfh-ci/tex/bfhletter.sty
@@ -1,4 +1,4 @@
-%% This is file `bfhletter.sty' version 2.1.1 (2022/02/22),
+%% This is file `bfhletter.sty' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -28,7 +28,7 @@
%%
%% ============================================================================
%%
-\ProvidesPackage{bfhletter}[2022/02/22 v2.1.1 letter layouts for BFH-CI, CI of Bern University of Applied Sciences]
+\ProvidesPackage{bfhletter}[2022/03/01 v2.1.2 letter layouts for BFH-CI, CI of Bern University of Applied Sciences]
\PassOptionsToPackage{fromlogo=true,refline=false,addrfield=topaligned,pagenumber=botright}{scrletter}
diff --git a/macros/latex/contrib/bfh-ci/tex/bfhlettersize9.5pt.clo b/macros/latex/contrib/bfh-ci/tex/bfhlettersize9.5pt.clo
index fd4012d012..c66ad3a94f 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfhlettersize9.5pt.clo
+++ b/macros/latex/contrib/bfh-ci/tex/bfhlettersize9.5pt.clo
@@ -1,4 +1,4 @@
-%% This is file `bfhlettersize9.5pt.clo' version 2.1.1 (2022/02/22),
+%% This is file `bfhlettersize9.5pt.clo' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/bfh-ci/tex/bfhmodule.sty b/macros/latex/contrib/bfh-ci/tex/bfhmodule.sty
index fc48726000..0f09714c93 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfhmodule.sty
+++ b/macros/latex/contrib/bfh-ci/tex/bfhmodule.sty
@@ -1,4 +1,4 @@
-%% This is file `bfhmodule.sty' version 2.1.1 (2022/02/22),
+%% This is file `bfhmodule.sty' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -29,7 +29,7 @@
%% ============================================================================
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{bfhmodule}{2022/02/22}{2.1.1}{BFH module package -- modular extensions for bfh-ci}
+\ProvidesExplPackage{bfhmodule}{2022/03/01}{2.1.2}{BFH module package -- modular extensions for bfh-ci}
\msg_new:nnn {bfhmodule} {module-not-found} {
You~tried~to~load~the~BFH~layout~module~#1.\\
diff --git a/macros/latex/contrib/bfh-ci/tex/bfhpub.cls b/macros/latex/contrib/bfh-ci/tex/bfhpub.cls
index 810e0407aa..ab001e8538 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfhpub.cls
+++ b/macros/latex/contrib/bfh-ci/tex/bfhpub.cls
@@ -1,4 +1,4 @@
-%% This is file `bfhpub.cls' version 2.1.1 (2022/02/22),
+%% This is file `bfhpub.cls' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -31,7 +31,7 @@
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplClass{bfhpub}
-{2022/02/22}{2.1.1}{Publications using Corporate Design of BFH (BFH-CI)}
+{2022/03/01}{2.1.2}{Publications using Corporate Design of BFH (BFH-CI)}
\RequirePackage{l3keys2e}
diff --git a/macros/latex/contrib/bfh-ci/tex/bfhsciposter.cls b/macros/latex/contrib/bfh-ci/tex/bfhsciposter.cls
index ec18f82449..24741dca83 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfhsciposter.cls
+++ b/macros/latex/contrib/bfh-ci/tex/bfhsciposter.cls
@@ -1,4 +1,4 @@
-%% This is file `bfhsciposter.cls' version 2.1.1 (2022/02/22),
+%% This is file `bfhsciposter.cls' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -30,7 +30,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\ProvidesExplPackage{bfhsciposter}{2022/02/22}{2.1.1}{Scientific poster layout of BFH}
+\ProvidesExplPackage{bfhsciposter}{2022/03/01}{2.1.2}{Scientific poster layout of BFH}
\RequirePackage{l3keys2e}
\prop_new:N \g_ptxcd_clsopts_prop
diff --git a/macros/latex/contrib/bfh-ci/tex/bfhthesis.cls b/macros/latex/contrib/bfh-ci/tex/bfhthesis.cls
index 6e68b6b221..3600a19134 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfhthesis.cls
+++ b/macros/latex/contrib/bfh-ci/tex/bfhthesis.cls
@@ -1,4 +1,4 @@
-%% This is file `bfhthesis.cls' version 2.1.1 (2022/02/22),
+%% This is file `bfhthesis.cls' version 2.1.2 (2022/03/01),
%% it is part of
%% BFH-CI -- Corporate Design for Bern University of Applied Sciences
%% ----------------------------------------------------------------------------
@@ -30,7 +30,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\ProvidesExplClass{bfhthesis}{2022/02/22}{2.1.1}{Theses using Corporate Design of BFH (BFH-CI), CI of Bern University of Applied Sciences}
+\ProvidesExplClass{bfhthesis}{2022/03/01}{2.1.2}{Theses using Corporate Design of BFH (BFH-CI), CI of Bern University of Applied Sciences}
\RequirePackage{l3keys2e}
diff --git a/macros/latex/contrib/bfh-ci/tex/bfhtranslations-english.trsl b/macros/latex/contrib/bfh-ci/tex/bfhtranslations-english.trsl
index f3a205aab8..a2da8d68ef 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfhtranslations-english.trsl
+++ b/macros/latex/contrib/bfh-ci/tex/bfhtranslations-english.trsl
@@ -1,4 +1,4 @@
-\ProvideDictionaryFor{English}{bfhtranslations}[2022/02/22]
+\ProvideDictionaryFor{English}{bfhtranslations}[2022/03/01]
%% ==== Translations for
\ProvideDictTranslation{Learning Objectives}{Learning Objectives}
\ProvideDictTranslation{learning objectives}{learning objectives}
diff --git a/macros/latex/contrib/bfh-ci/tex/bfhtranslations-french.trsl b/macros/latex/contrib/bfh-ci/tex/bfhtranslations-french.trsl
index b93762aa04..c396ddf4fe 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfhtranslations-french.trsl
+++ b/macros/latex/contrib/bfh-ci/tex/bfhtranslations-french.trsl
@@ -1,4 +1,4 @@
-\ProvideDictionaryFor{French}{bfhtranslations}[2022/02/22]
+\ProvideDictionaryFor{French}{bfhtranslations}[2022/03/01]
%%
%% ==== Translations for
\ProvideDictTranslation{Learning Objectives}{Objectifs}
diff --git a/macros/latex/contrib/bfh-ci/tex/bfhtranslations-german.trsl b/macros/latex/contrib/bfh-ci/tex/bfhtranslations-german.trsl
index 8286c639fe..38de54bdc1 100644
--- a/macros/latex/contrib/bfh-ci/tex/bfhtranslations-german.trsl
+++ b/macros/latex/contrib/bfh-ci/tex/bfhtranslations-german.trsl
@@ -1,4 +1,4 @@
-\ProvideDictionaryFor{German}{bfhtranslations}[2022/02/22]
+\ProvideDictionaryFor{German}{bfhtranslations}[2022/03/01]
%% ==== Translations for
\ProvideDictTranslation{Learning Objectives}{Lernziele}
\ProvideDictTranslation{learning objectives}{Lernziele}
diff --git a/macros/latex/contrib/create-theorem/create-theorem-doc.pdf b/macros/latex/contrib/create-theorem/create-theorem-doc.pdf
index 52d4bd1e93..99b8e7290c 100644
--- a/macros/latex/contrib/create-theorem/create-theorem-doc.pdf
+++ b/macros/latex/contrib/create-theorem/create-theorem-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/create-theorem/create-theorem-doc.tex b/macros/latex/contrib/create-theorem/create-theorem-doc.tex
index c077649309..749b345a2a 100644
--- a/macros/latex/contrib/create-theorem/create-theorem-doc.tex
+++ b/macros/latex/contrib/create-theorem/create-theorem-doc.tex
@@ -89,8 +89,8 @@
\title{\createtheorempackage{}\\\smallskip\itshape Initializing theorem-like environments with multilingual support}
\author{Jinwen XU}
-\thanks{Corresponding to: \texttt{\createtheorempackage{} 2022/02/27}}
-\date{February 2022, in Paris}
+\thanks{Corresponding to: \texttt{\createtheorempackage{} 2022/03/01}}
+\date{March 2022, in Paris}
\maketitle
@@ -208,7 +208,7 @@ Supported keys are:
The syntax of \lstinline|\CreateTheorem| is as follows:
\begin{code}
-\CreateTheorem{(*\meta{name of environment}*)}{(*\meta{key-value configuration}*)}
+\CreateTheorem{(*\meta{list of the name of environments}*)}{(*\meta{key-value configuration}*)}
\end{code}
Supported keys are:
@@ -265,7 +265,16 @@ Supported keys are:
\medskip
-Please note that, by default, an normal environment \meta{env} and its starred relative \meta{env}\texttt{*} do not share the same set of names, for the sake of generality. However, with proper usage of \commandoption{create starred version} and \commandoption{copy existed}, you are already able to produce all of the following combinations that shares the same set of names: 1$)$ numbered \meta{env}, numbered \meta{env}\texttt{*} ; 2$)$ numbered \meta{env}, unnumbered \meta{env}\texttt{*} ; 3$)$ unnumbered \meta{env}, numbered \meta{env}\texttt{*} ; and 4$)$ unnumbered \meta{env}, unnumbered \meta{env}\texttt{*}. I left it as an easy exercise for you ;-)
+Please note that, by default, an normal environment \meta{env} and its starred relative \meta{env}\texttt{*} do \emph{not} share the same set of names, for the sake of generality. However, with proper usage of \commandoption{create starred version} and \commandoption{copy existed}, you are already able to produce all of the following combinations that shares the same set of names: 1$)$ numbered \meta{env}, numbered \meta{env}\texttt{*} ; 2$)$ numbered \meta{env}, unnumbered \meta{env}\texttt{*} ; 3$)$ unnumbered \meta{env}, numbered \meta{env}\texttt{*} ; and 4$)$ unnumbered \meta{env}, unnumbered \meta{env}\texttt{*}. I left it as an easy exercise for you ;-)
+
+% \subsection[Configuring theorem-like environments]{Configuring theorem-like environments with \texttt{\textbackslash\textcolor{maintheme}{SetTheorem}}}
+
+% Even after defining the environments, you can still configure them with \lstinline|\SetTheorem|. The syntax of which is as follows:
+
+% \begin{code}
+% \SetTheorem{(*\meta{list of the name of environments}*)}{(*\meta{key-value configuration}*)}
+% \end{code}
+
\section{Examples}
@@ -319,7 +328,7 @@ Next we shall deal with the numbering problem. Let's continue to use this enviro
\subsection{Let's play with numbering}
-Remember the exercise I left to you at the end of the previous section? Let's do this together.
+Remember the exercise I left you at the end of the previous section? Let's do it together now.
\subsubsection{Numbered \texttt{idea} and numbered \texttt{idea*}}
diff --git a/macros/latex/contrib/create-theorem/create-theorem.sty b/macros/latex/contrib/create-theorem/create-theorem.sty
index 22e89a8d8d..e966ff9752 100644
--- a/macros/latex/contrib/create-theorem/create-theorem.sty
+++ b/macros/latex/contrib/create-theorem/create-theorem.sty
@@ -13,7 +13,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{create-theorem}
- {2022/02/27} {}
+ {2022/03/01} {}
{Initializing theorem-like environments with multilingual support}
\keys_define:nn { create-theorem }
@@ -280,7 +280,7 @@
{ % Patch the cref formats so that definite articles are placed outside the hyperlinks
\bool_if:NT \l__crthm_nameinlink_bool
{ % Use the definite article of the original language, with name's casing depends on the preposition and the article
- \crefthe_patch_format:nnnnn { 2 } { #4 ref@ #1 @format } { #4 ref@ #1 @name }
+ \crefthe_patch_format:nnnn { #4 ref@ #1 @format } { #4 ref@ #1 @name }
{ \tl_use:c { g_crthm_name_ #4 ref_article_singular_ #2 _ #3 _tl } }
{
\bool_if:NTF \g__crefthe_has_prep_bool
@@ -291,7 +291,7 @@
\tl_use:c { g_crthm_name_ #4 ref_singular_ #2 _ #3 _tl }
}
}
- \crefthe_patch_format:nnnnn { 2 } { #4 ref@ #1 @format@first } { #4 ref@ #1 @name@plural }
+ \crefthe_patch_format:nnnn { #4 ref@ #1 @format@first } { #4 ref@ #1 @name@plural }
{ \tl_use:c { g_crthm_name_ #4 ref_article_plural_ #2 _ #3 _tl } }
{
\bool_if:NTF \g__crefthe_has_prep_bool
@@ -302,7 +302,7 @@
\tl_use:c { g_crthm_name_ #4 ref_plural_ #2 _ #3 _tl }
}
}
- \crefthe_patch_format:nnnnn { 3 } { #4 refrange@ #1 @format } { #4 ref@ #1 @name@plural }
+ \crefthe_patch_format:nnnn { #4 refrange@ #1 @format } { #4 ref@ #1 @name@plural }
{ \tl_use:c { g_crthm_name_ #4 ref_article_plural_ #2 _ #3 _tl } }
{
\bool_if:NTF \g__crefthe_has_prep_bool
@@ -313,7 +313,7 @@
\tl_use:c { g_crthm_name_ #4 ref_plural_ #2 _ #3 _tl }
}
}
- \crefthe_patch_format:nnnnn { 3 } { #4 refrange@ #1 @format@first } { #4 ref@ #1 @name@plural }
+ \crefthe_patch_format:nnnn { #4 refrange@ #1 @format@first } { #4 ref@ #1 @name@plural }
{ \tl_use:c { g_crthm_name_ #4 ref_article_plural_ #2 _ #3 _tl } }
{
\bool_if:NTF \g__crefthe_has_prep_bool
@@ -325,29 +325,29 @@
}
}
%% Use the definite article of the original language, with name's casing correspond to the article
- % \crefthe_patch_format:nnnnn { 2 } { #4 ref@ #1 @format } { #4 ref@ #1 @name }
+ % \crefthe_patch_format:nnnn { #4 ref@ #1 @format } { #4 ref@ #1 @name }
% { \tl_use:c { g_crthm_name_ #4 ref_article_singular_ #2 _ #3 _tl } }
% { \tl_use:c { g_crthm_name_ #4 ref_singular_ #2 _ #3 _tl } }
- % \crefthe_patch_format:nnnnn { 2 } { #4 ref@ #1 @format@first } { #4 ref@ #1 @name@plural }
+ % \crefthe_patch_format:nnnn { #4 ref@ #1 @format@first } { #4 ref@ #1 @name@plural }
% { \tl_use:c { g_crthm_name_ #4 ref_article_plural_ #2 _ #3 _tl } }
% { \tl_use:c { g_crthm_name_ #4 ref_plural_ #2 _ #3 _tl } }
- % \crefthe_patch_format:nnnnn { 3 } { #4 refrange@ #1 @format } { #4 ref@ #1 @name@plural }
+ % \crefthe_patch_format:nnnn { #4 refrange@ #1 @format } { #4 ref@ #1 @name@plural }
% { \tl_use:c { g_crthm_name_ #4 ref_article_plural_ #2 _ #3 _tl } }
% { \tl_use:c { g_crthm_name_ #4 ref_plural_ #2 _ #3 _tl } }
- % \crefthe_patch_format:nnnnn { 3 } { #4 refrange@ #1 @format@first } { #4 ref@ #1 @name@plural }
+ % \crefthe_patch_format:nnnn { #4 refrange@ #1 @format@first } { #4 ref@ #1 @name@plural }
% { \tl_use:c { g_crthm_name_ #4 ref_article_plural_ #2 _ #3 _tl } }
% { \tl_use:c { g_crthm_name_ #4 ref_plural_ #2 _ #3 _tl } }
%% Use the definite article of the current language, with name's casing correspond to the article
- % \crefthe_patch_format:nnnnn { 2 } { #4 ref@ #1 @format } { #4 ref@ #1 @name }
+ % \crefthe_patch_format:nnnn { #4 ref@ #1 @format } { #4 ref@ #1 @name }
% { \tl_use:c { g_crthm_name_ #4 ref_article_singular_ #2 _ \languagename _tl } }
% { \tl_use:c { g_crthm_name_ #4 ref_singular_ #2 _ #3 _tl } }
- % \crefthe_patch_format:nnnnn { 2 } { #4 ref@ #1 @format@first } { #4 ref@ #1 @name@plural }
+ % \crefthe_patch_format:nnnn { #4 ref@ #1 @format@first } { #4 ref@ #1 @name@plural }
% { \tl_use:c { g_crthm_name_ #4 ref_article_plural_ #2 _ \languagename _tl } }
% { \tl_use:c { g_crthm_name_ #4 ref_plural_ #2 _ #3 _tl } }
- % \crefthe_patch_format:nnnnn { 3 } { #4 refrange@ #1 @format } { #4 ref@ #1 @name@plural }
+ % \crefthe_patch_format:nnnn { #4 refrange@ #1 @format } { #4 ref@ #1 @name@plural }
% { \tl_use:c { g_crthm_name_ #4 ref_article_plural_ #2 _ \languagename _tl } }
% { \tl_use:c { g_crthm_name_ #4 ref_plural_ #2 _ #3 _tl } }
- % \crefthe_patch_format:nnnnn { 3 } { #4 refrange@ #1 @format@first } { #4 ref@ #1 @name@plural }
+ % \crefthe_patch_format:nnnn { #4 refrange@ #1 @format@first } { #4 ref@ #1 @name@plural }
% { \tl_use:c { g_crthm_name_ #4 ref_article_plural_ #2 _ \languagename _tl } }
% { \tl_use:c { g_crthm_name_ #4 ref_plural_ #2 _ #3 _tl } }
}
@@ -356,6 +356,11 @@
\NewDocumentCommand \NameTheorem { m m }
{
+ \crthm_name_theorem:nn { #1 } { #2 }
+ }
+
+\cs_new:Nn \crthm_name_theorem:nn
+ {
\tl_set:Nn \l__crthm_current_env_tl { #1 }
\newcounter { #1 }
\keys_set:nn { create-theorem-naming } { #2 }
@@ -428,6 +433,14 @@
\NewDocumentCommand \CreateTheorem { m m }
{
+ \clist_map_inline:nn { #1 }
+ {
+ \crthm_create_theorem:nn { ##1 } { #2 }
+ }
+ }
+
+\cs_new:Nn \crthm_create_theorem:nn
+ {
\tl_set:Nn \l__crthm_current_env_tl { #1 }
\bool_set_false:N \l__crthm_creating_apply_style_bool
\bool_set_false:N \l__crthm_creating_numberless_bool
diff --git a/macros/latex/contrib/crefthe/crefthe-doc.pdf b/macros/latex/contrib/crefthe/crefthe-doc.pdf
index 7f4f6ea5e0..2b94169807 100644
--- a/macros/latex/contrib/crefthe/crefthe-doc.pdf
+++ b/macros/latex/contrib/crefthe/crefthe-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/crefthe/crefthe-doc.tex b/macros/latex/contrib/crefthe/crefthe-doc.tex
index 70cdc89d92..bd9ebed23b 100644
--- a/macros/latex/contrib/crefthe/crefthe-doc.tex
+++ b/macros/latex/contrib/crefthe/crefthe-doc.tex
@@ -93,8 +93,8 @@
\title{\crefthepackage{}\\\smallskip\itshape Cross referencing with proper definite articles}
\author{Jinwen XU}
-\thanks{Corresponding to: \texttt{\crefthepackage{} 2022/02/27}}
-\date{February 2022, in Paris}
+\thanks{Corresponding to: \texttt{\crefthepackage{} 2022/03/01}}
+\date{March 2022, in Paris}
\maketitle
@@ -237,6 +237,7 @@ To place hyperlinks at the right place, \lstinline|\crefthename| touches the cor
With the package option \packageoption{overwrite}, user commands in \textsf{cleveref} will be replaced by those offered here, thus you can simply write \lstinline|\cref| for \lstinline|\crefthe| -- and similarly with \lstinline|\Cref|, \lstinline|\crefname| and \lstinline|\Crefname|.
+\clearpage
\section{Known issues}
\begin{itemize}
diff --git a/macros/latex/contrib/crefthe/crefthe.sty b/macros/latex/contrib/crefthe/crefthe.sty
index 213f3d2e60..dd3ea31b1d 100644
--- a/macros/latex/contrib/crefthe/crefthe.sty
+++ b/macros/latex/contrib/crefthe/crefthe.sty
@@ -13,7 +13,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{crefthe}
- {2022/02/27} {}
+ {2022/03/01} {}
{Cross referencing with proper definite articles}
\keys_define:nn { crefthe }
@@ -126,33 +126,32 @@
\use:c { crefthe_#6refname_original:w } { #1 } { #2 #3 } { #4 #5 }
\hook_gput_code:nnn { begindocument } { crefthe }
{
- \crefthe_patch_format:nnnnn { 2 } { #6ref@#1@format } { #6ref@#1@name } { #2 } { #3 }
- \crefthe_patch_format:nnnnn { 2 } { #6ref@#1@format@first } { #6ref@#1@name@plural } { #4 } { #5 }
- \crefthe_patch_format:nnnnn { 3 } { #6refrange@#1@format } { #6ref@#1@name@plural } { #4 } { #5 }
- \crefthe_patch_format:nnnnn { 3 } { #6refrange@#1@format@first } { #6ref@#1@name@plural } { #4 } { #5 }
+ \crefthe_patch_format:nnnn { #6ref@#1@format } { #6ref@#1@name } { #2 } { #3 }
+ \crefthe_patch_format:nnnn { #6ref@#1@format@first } { #6ref@#1@name@plural } { #4 } { #5 }
+ \crefthe_patch_format:nnnn { #6refrange@#1@format } { #6ref@#1@name@plural } { #4 } { #5 }
+ \crefthe_patch_format:nnnn { #6refrange@#1@format@first } { #6ref@#1@name@plural } { #4 } { #5 }
}
}
\seq_new:N \g__crefthe_already_patched_seq
-\cs_new_protected:Nn \crefthe_patch_format:nnnnn
- % #1 = the # number for the beginning mark of hyperlink
- % #2 = name of the format command
- % #3 = name of the command after hyperlink mark
- % #4 = new content before the mark
- % #5 = new content after the mark
+\cs_new_protected:Nn \crefthe_patch_format:nnnn
+ % #1 = name of the format command
+ % #2 = name of the command after the hyperlink beginning mark
+ % #3 = new content before the mark
+ % #4 = new content after the mark
{
- \seq_if_in:NnF \g__crefthe_already_patched_seq { #2 - #3 }
+ \seq_if_in:NnF \g__crefthe_already_patched_seq { #1 - #2 }
{
\makeatletter
- \tl_set:Nn \l_tmpa_tl { #4 }
- \tl_set:Nn \l_tmpb_tl { #5 }
- \exp_args:Nc \regexpatchcmd { #2 }
- { \cP. #1 \c{ #3 } }
- { \u{l_tmpa_tl} \cP\# #1 \u{l_tmpb_tl} }
+ \tl_set:No \l_tmpa_tl { #3 }
+ \tl_set:No \l_tmpb_tl { #4 }
+ \exp_args:Nc \regexpatchcmd { #1 }
+ { (\cP\# .) \c{ #2 } }
+ { \u{l_tmpa_tl} \1 \u{l_tmpb_tl} }
{ } { \PatchFailed }
\makeatother
- \seq_gput_right:Nn \g__crefthe_already_patched_seq { #2 - #3 }
+ \seq_gput_right:Nn \g__crefthe_already_patched_seq { #1 - #2 }
}
}
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index f2b80e1c53..1afc504858 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -15,8 +15,8 @@
%<*class>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2022/02/28}{1.633}
- {Typeset Chinese theses or books}
+\ProvidesExplClass{easybook}{2022/03/01}{1.634}
+ {Easily typesetting Chinese theses or books}
\bool_set_false:N \l__eb_compile_draft_bool
\bool_set_false:N \l__eb_title_newline_bool
@@ -303,8 +303,8 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e,etoolbox}
-\ProvidesExplPackage{easybase}{2022/02/28}{1.633}
- {Typeset Chinese theses or books}
+\ProvidesExplPackage{easybase}{2022/03/01}{1.634}
+ {Easily typesetting Chinese theses or books}
\cs_generate_variant:Nn \dim_set:Nn { NV }
\cs_generate_variant:Nn \dim_sign:n { V }
@@ -1712,7 +1712,6 @@
}
\tl_gset:Nn \marginfont { \l__eb_subfont_marginpar_tl }
-\DeclareCaptionLabelFormat{parens}{\bothIfFirst{#1}{~}(#2)}
\eb_seq_map_inline:nn
{ table,figure,listing }
{
@@ -1732,7 +1731,6 @@
\captionsetup[table]{font = eb@table@font}
\captionsetup[figure]{font = eb@figure@font}
\captionsetup[lstlisting]{font = eb@listing@font}
-\captionsetup[subfigure]{labelformat = parens,font = eb@figure@font}
\ctex_at_end_package:nn { bicaption }
{
\captionsetup[figure][bi-second]{name = Figure}
@@ -2057,7 +2055,7 @@
aboveskip = 0.5\baselineskip,
belowskip = 0.5\baselineskip,
abovecaptionskip = -1ex,
- belowcaptionskip = 1.5ex,
+ belowcaptionskip = 2ex,
keepspaces = true,
escapeinside = {(*}{*)},
frame = single,
@@ -2272,7 +2270,7 @@
}
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2022/02/28}{1.633}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2022/03/01}{1.634}
{Customization of tcolorbox for easybook}
\cs_set_protected:Npn \addtotcbstyle #1#2
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index de14f6c53f..ceb98385b3 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex
index 08c5a5c4fb..da00857bb8 100644
--- a/macros/latex/contrib/easybook/easybook.tex
+++ b/macros/latex/contrib/easybook/easybook.tex
@@ -21,10 +21,10 @@
name = easybook,
color-scheme = blue,
title = EASYBOOK使用手册,
- version = v1.633,
- date = 2022/02/28,
+ version = v1.634,
+ date = 2022/03/01,
authors = 瞿毅,
- info = 排版简体中文学位论文和书籍,
+ info = 简便地排版中文学位论文或书籍,
email = q1jx@foxmail.com,
url = https://gitee.com/texl3/easybook,
abstract =
diff --git a/macros/latex/contrib/mattens/README b/macros/latex/contrib/mattens/README
index d1c6a93471..1885ed18e6 100644
--- a/macros/latex/contrib/mattens/README
+++ b/macros/latex/contrib/mattens/README
@@ -2,8 +2,8 @@
for vector/tensor typesetting
Author: Danie Els
- Copyright (c) 2001-2010 Danie Els
- Licence: LaTeX Project Public License
+ Copyright (c) 2001-2022 Danie Els
+ Licence: LaTeX Project Public License 1.3c
DESCRIPTION
===========
@@ -18,11 +18,11 @@ DESCRIPTION
1. Hassenpflug, W.C., "Matrix Tensor Notation Part I.
Rectilinear Orthogonal Coordinates."
- Comput. Math. Appl., vol. 26, no. 3, 1993, pp. 55-93.
+ Comput. Math. Appl., vol. 26, no. 3, 1993, pp. 55-93.
2. Hassenpflug, W.C., "Matrix Tensor Notation Part II.
Skew and Curved Coordinates."
- Comput. Math. Appl., vol. 29, no. 11, 1995, pp. 1-103.
+ Comput. Math. Appl., vol. 29, no. 11, 1995, pp. 1-103.
FILES IN DISTRIBUTION
@@ -30,7 +30,7 @@ FILES IN DISTRIBUTION
BASE DISTRIBUTION:
- readme.txt This file.
+ README This file.
mattens.ins Package installation file.
mattens.dtx Package source file.
@@ -68,6 +68,12 @@ FILES IN DISTRIBUTION
TransRot.asy Asympote source file
TransRot.pdf Graphics input file
+
+ EulerGyro.asy Asympote source file
+ EulerGyro.pdf Graphics input file
+
+ Euler-313.asy Asympote source file
+ Euler-313.pdf Graphics input file
BASIC INSTALLATION
diff --git a/macros/latex/contrib/mattens/mattens.dtx b/macros/latex/contrib/mattens/mattens.dtx
index 6833a44460..5a3d47819e 100644
--- a/macros/latex/contrib/mattens/mattens.dtx
+++ b/macros/latex/contrib/mattens/mattens.dtx
@@ -1,7 +1,7 @@
% \iffalse meta-comment
%
% mattens.dtx
-% Copyright (C) 2001--2009 Danie Els
+% Copyright (C) 2001--2022 Danie Els
%
% -------------------------------------------------------------------
% The mattens package
@@ -17,7 +17,7 @@
%
% This work has the LPPL maintenance status 'maintained'.
%
-% This Current Maintainer of this work is Danie Els (dnjels@sun.ac.za)
+% This Current Maintainer of this work is Danie Els (dnjels@gmail.com)
%
% This package consists of the files: mattens.dtx
% mattens.ins
@@ -28,7 +28,7 @@
%
% \iffalse
%<*driver>
-\documentclass[a4paper]{ltxdoc}
+\documentclass[a4paper,notitlepage]{ltxdoc}
\makeatletter
\newcommand{\DeclareSBox}[2]{%
\@ifdefinable{#1}{%
@@ -47,6 +47,8 @@
% the accents and bm packages are loaded
\DeclareSBox{\AccentBox}{$\dot{\overline{f}}^a_b$}
\usepackage{array}
+\usepackage{enumitem}
+ \setlist{itemsep=\smallskipamount, parsep=0pt}
\usepackage{accents}
\newcommand{\dotr}[1]{\accentset{\phantom{r}{\displaystyle.}r}{#1}}
\usepackage{mattens}
@@ -58,11 +60,11 @@
\newcommand*{\MT}{\pkg{mattens}}
\newcommand*{\Hass}{Hassenpflug}
\newcommand*{\myemph}[1]{\emph{#1}}
- \newenvironment{Decl}%
+ \newenvironment{Decl}[1][l]%
{\par\small\addvspace{2.3ex plus 1ex}%
\vskip -\parskip
\noindent\hspace{\leftmargini}%
- \begin{tabular}{|l|}\hline\ignorespaces}%
+ \begin{tabular}{|#1|}\hline\ignorespaces}%
{\\\hline\end{tabular}\nobreak\par\nobreak
\vspace{2.3ex}\vskip -\parskip}
\newenvironment{Indent}[1]{%
@@ -101,7 +103,7 @@
%
% \fi
%
-% \CheckSum{584}
+% \CheckSum{0}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
@@ -148,6 +150,7 @@
% \changes{1.0}{2001 Dec 9}{Initial version}
% \changes{1.1}{2004 Jan 15}{Doc: Updated}
% \changes{1.3}{2009 Sep 1}{Doc: Updated}
+% \changes{1.3b}{2022 Mar 1}{Doc: Updated}
%
%
% \GetFileInfo{mattens.sty}
@@ -160,44 +163,22 @@
% \date{\filedate}
% \maketitle
%
-% \begin{abstract}
-% \noindent The \MT\ package contains the definitions to typeset vectors and
-% tensors such as $\aS{e}_i$, $\bS[\dot]{x}^r$, $\bSb{E}^s_r$, etc., for the
-% representation of common vectors and tensors such as forces, velocities,
-% moments of inertia, etc. These symbols (and variants thereof) are found on
-% the black boards of engineering schools and in many journals and books,
-% particularly those concerned with dynamics and kinematics.
-%
-% This package adheres to the well defined and documented notation of
-% Hassenpflug.\footnote{^^A
-% Hassenpflug, W.C.,
-% Matrix Tensor Notation Part I. Rectilinear Orthogonal Coordinates.
-% \emph{Comput. Math.\ Applic.,} vol.\ 26, no.\ 3, 1993, pp.\ 55--93.}^^A
-% \textsuperscript{,}^^A
-% \footnote{
-% Hassenpflug, W.C.,
-% Matrix Tensor Notation Part II. Skew and Curved Coordinates.
-% \emph{Comput. Math. Appl.}, vol.\ 29, no.\ 11, 1993, pp. 1--103.}
%
-% \medskip
-% \noindent\slshape{\bfseries Keywords:} vector, matrix, tensor, notation.
-% \end{abstract}
-%
-% \clearpage
-% {\parskip0pt\tableofcontents}
+% \section{Introduction}
%
-% \clearpage
-% \section{Background}
+% \subsection{Background}
%
% A browse through journals and handbooks, in particular those concerned with
% dynamics, reveals an amazing array of private notations for vectors and
% tensors. Every author has his or her own notation, making it very difficult
% to comprehend what is going on in complex multi reference axes environments.
%
-% This package is based on the notation of \Hass\cite{Hass93a,Hass93b}. It was
-% developed and refined by Dr.~\Hass{} over many years of teaching engineering,
-% and as stated by him\cite{Hass93a}:
-%
+% The \MT\ package contains the definitions to typeset vectors and
+% tensors such as $\aS{e}_i$, $\bS[\dot]{x}^r$, $\bSb{E}^s_r$, etc., for the
+% representation of common vectors and tensors such as forces, velocities,
+% moments of inertia, etc. It is based on the well defined notation of
+% \Hass\cite{Hass93a,Hass93b}. It was developed and over many years of
+% teaching engineering:
% \begin{quote}\slshape
% ``It is designed particulary to distinguish between vectors and tensors
% and their representation as vectors and matrices in different coordinate
@@ -210,25 +191,25 @@
% for a good notation for tensor quantities and operations, to which his
% notation conforms. A notation must:
% \begin{itemize}
-% \item be easily written by hand;
-% \item distinguish between vector and scalar quantities;
-% \item distinguish between (second order) tensors and vectors;
-% \item distinguish between physical vectors and their representation
+% \item Be easily written by hand;
+% \item Distinguish between vector and scalar quantities;
+% \item Distinguish between (second order) tensors and vectors;
+% \item Distinguish between physical vectors and their representation
% by vector arrays, and between physical (second order) tensors and
% their representation by matrices;
-% \item distinguish between row and column vectors;
-% \item use the same symbol as name for the same vector or tensor in
+% \item Distinguish between row and column vectors;
+% \item Use the same symbol as name for the same vector or tensor in
% either its physical sense or its representation by a vector array
% or matrix in different coordinate axes;
-% \item distinguish between matrix/vector representation of the same
+% \item Distinguish between matrix/vector representation of the same
% vector/tensor in different coordinate axes;
-% \item be equally valid in orthonormal and skew coordinate axes;
-% \item indicate all intended operations uniquely;
-% \item be equally valid in all dimensions;
-% \item be equally valid for algebraic vector/matrix algebra which has
+% \item Be equally valid in orthonormal and skew coordinate axes;
+% \item Indicate all intended operations uniquely;
+% \item Be equally valid in all dimensions;
+% \item Be equally valid for algebraic vector/matrix algebra which has
% no connection to any metric space;
-% \item be applicable to differentials;
-% \item allow for defaults to avoid repetitive elaborate symbols, i.e.,
+% \item Be applicable to differentials;
+% \item Allow for defaults to avoid repetitive elaborate symbols, i.e.,
% not all the symbols need to be written down explicitly if it is
% clear from the context.
% \item It must be well documented (own addition).
@@ -237,43 +218,42 @@
% \noindent The \MT\ package was developed to typeset the \Hass{} matrix
% tensor symbols in a consistent manner.
%
-% An appeal is made to the engineering and scientific community to adopt this
-% notation, because of its consistency and ease of use.
+% \subsection{Why the \MT\ package?}
+%
+% The \Hass{} notation contains symbols such as, $\aS{e}_i$,
+% $\bS[\dot]{x}^{r}_{\alpha}$, $\bSa[\dot]{E}^s$, etc. These symbols
+% are quite common and variants thereof are found on many
+% blackboards of engineering schools. Based on the reputation of
+% \TeX{} it would seem trivial to typeset them, but to the contrary
+% ...
+% \SetSymbFont{\relax}
+% \begin{sample}
+% |$\bS[\dot]{f}^a_b$| \> $\bS[\dot]{f}^a_b$ ~~~(correct typesetting)\\[.75ex]
+% |$\dot{\overline{f}}^a_b$| \> \AccentBox\\[.75ex]
+% |$\dot{\overline{f}}{}^a_b$| \> $\dot{\overline{f}}{}^a_b$\\[.75ex]
+% |$\dot{\overline{f}^a_b}$| \> $\dot{\overline{f}^a_b}$
+% \end{sample}
+% \SetSymbFont{\bm}
%
% \section{Usage of \MT\ package}
%
% The \MT\ package is loaded in the document preamble with:
-% \begin{quote}
-% \begin{tabbing}
-% \hskip14pc\=\kill
-% \qquad$\vdots$\\
-% \cmd{\usepackage}\oarg{options}|{mattens}| \>|% amsmath loaded internally|\\
-% \qquad$\vdots$\\
-% \cmd{\usepackage}\marg{font packages} \>|%|\\
-% \cmd{\DeclareSymbolFont}... \>|% All the font changes|\\
-% \cmd{\SetSymbolFont}... \>|%|\\
-% \cmd{\DeclareSymbolFontAlphabet}... \>|%|\\
-% \qquad$\vdots$\\
-% \cmd{\usepackage}|{bm} %\boldsymbol redirected to call \bm|\\
-% \qquad$\vdots$
-% \end{tabbing}
-% \end{quote}
+% \begin{sample}
+% \cmd{\usepackage}\oarg{options}|{mattens}|
+% \end{sample}
%
% \noindent When \MT\ is loaded, the \pkg{amsmath} package is loaded
% automatically, because it is needed for the redefined \cmd{\overrightarrow}
% and \cmd{\underrightarrow} commands, as well as the \cmd{\boldsymbol}
% command. It must be loaded before any font packages that redefine some of the
-% \pkg{amsmath} symbols or commands.
-%
-% On the other hand, the preferred method for obtaining bold italic math
-% symbols is the \cmd{\bm} command of the \pkg{bm} package.\footnote{In the
-% \pkg{amsmath} documentation, \AmS{} recommends the \cmd{\bm} command of the
-% \pkg{bm} package instead of the \cmd{\boldsymbol} command for bold italic
-% math symbols. The \cmd{\boldsymbol} puts its contents in a box,
-% \cmd{\mbox\{}\cmd{\boldmath\$}\meta{contents}\texttt{\$\}}, while \cmd{\bm}
-% is a font changing command that uses the appropriate bold math font.} The
-% \pkg{bm} package must be loaded after all the font packages in order for it
-% to recognize the bold math versions. The \pkg{bm} package reroutes the
+% \pkg{amsmath} symbols or commands.
+
+% \AmS{} recommends the \pkg{bm} package instead of the \cmd{\boldsymbol}
+% command for bold italic math symbols\footnote{The \cmd{\boldsymbol} puts
+% its contents in a box,
+% \cmd{\mbox\{}\cmd{\boldmath\$}\meta{contents}\texttt{\$\}},
+% while \cmd{\bm} is a font changing command that uses the appropriate
+% bold math font.}. The \pkg{bm} package reroutes the
% \cmd{\boldsymbol} command to point to \cmd{\bm}. If \cmd{\boldsymbol} is
% called after the \pkg{bm} package is loaded, it is equivalent to \cmd{\bm}.
% If the \pkg{bm} package is not loaded, \MT\ defaults to the \cmd{\boldsymbol}
@@ -284,13 +264,14 @@
% symbols then indicates the fact that it is a vector/tensor and the lines,
% arrows and sub- and superscripts indicate the specific type and reference
% axes.
+% \pagebreak[2]
%
-% The following options are recognized by \MT:
+% \noindent The following options are recognized by \MT:
%
% \begin{description}
% \item[\normalfont\opt{noformat}:] No symbol formatting is performed,
% otherwise symbols are set by default in bold italics with the
-% \cmd{\boldsymbol} or \cmd{\bm} command.
+% \cmd{\boldsymbol} command.
%
% It is important to note that the \Hass{} requirement of easily
% written by hand is not fulfilled if the symbols are formatted
@@ -301,7 +282,6 @@
% depth. The default is no mathstrut.
% \end{description}
%
-% \clearpage
% \section{List of \MT\ commands}
%
% \begin{table}[htbp]
@@ -387,15 +367,19 @@
% \subsection{General syntax}
%
% The general syntax of the \MT\ commands is
-% \begin{Decl}
-% |\|\m|S|\m\,| |\oarg{accent}\marg{Symbol} ~~
-% |\|\m|CS|\m\,| |\oarg{accent}\marg{Symbol}\\[1ex]
-% |\|\m|S|\m\,|*|\oarg{accent}\marg{Symbol}~~~
+% \begin{Decl}[ll]
+% |\|\m|S|\,\oarg{accent}\marg{Symbol} &
+% |\|\m|S|\,|*|\oarg{accent}\marg{Symbol} \\
+% |\S|\m\,\oarg{accent}\marg{Symbol} &
+% |\S|\m\,|*|\oarg{accent}\marg{Symbol} \\[1ex]
+%
+% |\|\m|S|\m\,\oarg{accent}\marg{Symbol} &
+% |\|\m|S|\m\,|*|\oarg{accent}\marg{Symbol}\\[1ex]
+%
+% |\|\m|CS|\m\,\oarg{accent}\marg{Symbol} &
% |\|\m|CS|\m\,|*|\oarg{accent}\marg{Symbol}
% \end{Decl}
-% \noindent with command names $\cmd{\bS}$, $\cmd{\aS}$, $\cmd{\aSa}$,
-% $\cmd{\aSb}$, etc. See table\:\ref{tab:1} for a full list of all the
-% commands. The ``starred'' form is used to set the symbol in normal math.
+% The ``starred'' form is used to set the symbol in normal math.
% This can be used for compound tensors or for pre-declared symbols (see
% \pkg{bm} documentation). An example of the usage is
% \begin{sample}
@@ -404,9 +388,10 @@
% \cmd{\Sb}|{x}| \> \cmd{\Sb*}|{x}| \> $\Sb{x}$ \> $\Sb*{x}$\\[0.75ex]
% \cmd{\aCSa}|{z}|\> \cmd{\aCSa*}|{z}| \> $\aCSa{z}$\> $\aCSa*{z}$
% \end{sample}
-% The optional argument \meta{accent} is intended for \LaTeX{} accent commands
-% such as $\cmd{\dot}$, $\cmd{\ddot}$, etc., or their $\AmS$ equivalents,
-% $\cmd{\Dot}$, $\cmd{\Ddot}$.
+%
+% The optional argument \meta{accent} is intended for \LaTeX{}
+% accent commands % such as $\cmd{\dot}$, $\cmd{\ddot}$, etc., or
+% their $\AmS$ equivalents, $\cmd{\Dot}$, $\cmd{\Ddot}$.
% \begin{sample}
% |\bS[\Ddot]{x}| \> $\bS[\Ddot]{x}$
% \end{sample}
@@ -460,13 +445,23 @@
% \cmd{\SetSymbFont}\marg{font-command}^^A
% \SpecialUsageIndex{\SetSymbFont}
% \end{Decl}
-% \noindent The \pkg{bm} package reroutes the \cmd{\boldsymbol} command to
-% point to \cmd{\bm}. If \cmd{\SetSymbFont}|{\boldsymbol}| is called after the
-% \pkg{bm} package is loaded, it is equivalent to \cmd{\SetSymbFont}|{\bm}|.
-% Bold formatting of individual tensors can also be switched off with the use
-% of the starred forms of the tensor commands.
%
-% If the symbols are interpreted as tensors, then according to the ISO, it can
+% \pagebreak[2]
+% \noindent In general a typical setup to include unicode math
+% \begin{sample}
+% |\usepackage{ifxetex} |\\
+% |\ifxetex |\\
+% | ... Unicode-math and font selection ...|\\
+% | \SetSymbFont{\symbfit} |\\
+% |\else |\\
+% | ... Font selection ... |\\
+% | \usepackage{bm} |\\
+% | \SetSymbFont{\bm} |\\
+% |\fi |
+% \end{sample}
+%
+%
+% \noindent If the symbols are interpreted as tensors, then according to the ISO, it can
% be typeset in a slanted sans serif font (if you are fond of fonts). For the
% Computer Modern fonts with an \texttt{OT1} encoding, you can put in the
% preamble
@@ -520,21 +515,23 @@
% \SpecialUsageIndex{\SetSymbStrut}^^A
% \cmd{\SetSymbStrut}\marg{strut}
% \end{Decl}
+%
+% \pagebreak[2]
% \noindent For example
% \SetSymbStrut{\relax}
% \begin{sample}
% |\SetSymbStrut{\relax}| \\
-% |\bSb{E}|, |\bS{f}|, |\Sb{y}| \>$\bSb{E}$, $\bS{x}$, $\Sb{y}$
+% |\bSb{E}|, |\bS{x}|, |\Sb{y}| \>$\bSb{E}$, $\bS{x}$, $\Sb{y}$
% \end{sample}
% \SetSymbStrut{\mathstrut}
% \begin{sample}
% |\SetSymbStrut{\mathstrut}| \\
-% |\bSb{E}|, |\bS{f}|, |\Sb{y}| \>$\bSb{E}$, $\bS{x}$, $\Sb{y}$
+% |\bSb{E}|, |\bS{x}|, |\Sb{y}| \>$\bSb{E}$, $\bS{x}$, $\Sb{y}$
% \end{sample}
% \SetSymbStrut{\vphantom{E}}
% \begin{sample}
% |\SetSymbStrut{\vphantom{E}}| \\
-% |\bSb{E}|, |\bS{f}|, |\Sb{y}| \>$\bSb{E}$, $\bS{x}$, $\Sb{y}$
+% |\bSb{E}|, |\bS{x}|, |\Sb{y}| \>$\bSb{E}$, $\bS{x}$, $\Sb{y}$
% \end{sample}
% \SetSymbStrut{\relax}
%
@@ -584,19 +581,6 @@
% |$\aSb{{{\color{red}E}}}_i$| \> $\aSb{{{\color{red}E}}}_i$
% \end{sample}
%
-% \item[\normalfont\pkg{slide}, \pkg{foils}:~~] The Euler math fonts
-% are definitely compulsory. The ratio of the sub- and superscript
-% sizes to normal math font sizes is too big inside the \pkg{slide}
-% class. For tensors such as $\bS{x}^j_k$, you may find that the
-% sub- and superscripts overlap. Choose your script characters
-% carefully.
-%
-% \item[\normalfont\pkg{eulervm}:\quad] The \Hass{} ideal of symbols
-% that are easily written by hand is satisfied with the beautiful
-% letters of the Euler fonts. This package is a must for
-% presentation material, but \myemph{please do not use bold Euler
-% symbols}, they just do not look right!
-%
% \item[\normalfont\pkg{accents}:\quad] For the creation of alternative
% accents the \MT\ package is fully compatible with the
% \pkg{accents}\ package. As an example of its usage, the equation
@@ -633,127 +617,7 @@
% \end{description}
% ^^A\clearpage
%
-% \section{Typesetting the \Hass{} notation in \LaTeX}
-% \subsection{Why?}
-%
-% The \Hass{} notation contains symbols such as, $\aS{e}_i$,
-% $\bS[\dot]{x}^{r}_{\alpha}$, $\bSa[\dot]{E}^s$, etc. These symbols
-% are quite common and variants thereof are found on many
-% blackboards of engineering schools. Based on the reputation of
-% \TeX{} it would seem trivial to typeset them, but to the contrary
-% ...
-% \SetSymbFont{\relax}
-% \begin{sample}
-% |\bS[\dot]{f}^a_b| \> $\bS[\dot]{f}^a_b$ ~~~(correct typesetting)\\[.75ex]
-% |$\dot{\overline{f}}^a_b$| \> \AccentBox\\[.75ex]
-% |$\dot{\overline{f}}{}^a_b$| \> $\dot{\overline{f}}{}^a_b$\\[.75ex]
-% |$\dot{\overline{f}^a_b}$| \> $\dot{\overline{f}^a_b}$
-% \end{sample}
-% \SetSymbFont{\bm}
-%
-% When a subscript is inserted for slanted characters, e.g.,
-% $f^a_b$, the subscript is kerned closer to the symbol.
-% This subscript kerning as well as the superscript height is
-% retained for math accents, e.g., $\dot{f}^a_b$. When
-% the \cmd{\overline} or \cmd{\overrightarrow} commands are used together
-% with math accents, the problems begin\footnote{If you are using
-% Equation Editor or MathType inside word processors in the Windows environment,
-% you end up with the same problems and have to fiddle \myemph{every}
-% sub- and superscript individually. A browse through the accompanying
-% sample document, \pkg{mtsample.tex}, will show that this can amount to
-% hundreds of little equations. I challenge anyone to rewrite that
-% document with one of the popular wordprocessors and still be sane
-% afterwards :-)}:
-%
-% \begin{itemize}
-%
-% \item For an \cmd{\overline}, $\overline{f}^a_b$, the superscript moves up to
-% the height of the overline, which is fine for vector notation, but the
-% subscript kerning is lost, because the symbol is set inside a box with
-% italic correction added (App. G of the \TeX{}book). If the subscript is
-% added inside the \cmd{\overline} construct, $\overline{f_b}^a$, the
-% overline is stretched, which is acceptable only when the subscript is
-% part of the symbol itself. The subscript kerning can be corrected by
-% attaching the subscript to the symbol and the superscript to the overline
-% and then overtyping (\cmd{\rlap} or \cmd{\llap}) them while using a
-% phantom symbol (without subscript) for the overline,
-% \begin{sample}
-% |\leavevmode\rlap{$\overline{\phantom{f}}^a$}%|\\
-% | {$f^{}_b$}|
-% \end{sample}
-% which gives \leavevmode\rlap{$\overline{\phantom{f}}^a$}{$f^{}_b$}.
-%
-% The \cmd{\leavevmode} command is nessesary to prevent the symbol being
-% spread over two lines when it is the first token in a new paragraph
-% (\TeX{} in vertical mode).
-%
-% Care must be taken with the sequence in which the two parts overlap when
-% the one is wider than the other,
-% \leavevmode\rlap{$\overline{\phantom{f}}^{abcde}$}{$f^{}_a$},
-% because the superscript will then run into the following text.
-%
-% \item If a math accent is added to the overline, \AccentBox, the superscript
-% goes to the level of the accent (except if the \pkg{accents}\ package is
-% loaded). This can be remedied by controlling the height of the accented
-% overline construction with a \cmd{\vphantom} commands as a strut,
-% \begin{sample}
-% |\leavevmode\rlap%|\\
-% | {$\dot{\overline{\phantom{f}}}{\vphantom{\overline{f}}}^a$}%|\\
-% | {$f^{}_b$}|
-% \end{sample}
-% which gives
-% \rlap{$\dot{\overline{\phantom{f}}}{\vphantom{\overline{f}}}^a$}^^A
-% {$f^{}_b$}.
-%
-% \item For an |\overrightarrow| in vector notation, ($\overrightarrow{i}_a$,
-% ~$\overrightarrow{iiii}_a\,$), the construction of the stretchable arrow
-% results in an arrow wider than most symbols, with the symbol centred
-% below it. The subscript ended up far removed from the symbol. For
-% multiple symbols, the arrow width is equal to the box containing the
-% letters, resulting in better-looking subscripts (but still without the
-% subscript kerning). The previous procedure can be used to correct the
-% subscript kerning, except that additional white space must be inserted
-% before the symbol to centre it beneath the arrow.
-% \begin{sample}
-% |\newlength{\Wspace}\settowidth{\Wspace}{$\overrightarrow{i}$}|\\
-% |\newlength{\SymWdth}\settowidth{\SymWdth}{$i$}|\\
-% |\addtolength{\Wspace}{-\SymWdth} |\\
-% |\leavevmode\rlap{$\dot{\overrightarrow{\phantom{i}}}$}% |\\
-% | {\hspace*{.5\Wspace}$i^{}_b$} |
-% \end{sample}
-% \newlength{\Wspace}\settowidth{\Wspace}{$\overrightarrow{i}$}
-% \newlength{\SymWdth}\settowidth{\SymWdth}{$i$}
-% \addtolength{\Wspace}{-\SymWdth}
-% which gives \rlap{$\dot{\overrightarrow{\phantom{i}}}$}{\hspace*{.5\Wspace}$i^{}_b$}.
-%
-% The commands can be optimized by using saveboxes, \myemph{but} the
-% symbols will not scale correctly when used as sub- or superscripts or in
-% the \cmd{\tfrac} macro. A solution is to nest the commands inside a
-% \cmd{\mathpalette} environment, but be warned, this is very expensive!
-% The commands \cmd{\phantom}, \cmd{\smash}, \cmd{\overrightarrow} (in
-% \pkg{amsmath}) are already inside \cmd{\mathpalette} macros, and \TeX{}
-% calls the arguments of a \cmd{\mathpalette} macro four times before
-% deciding on the dimensions.
-%
-% \item The shape of the arrow tip of the |\overrightarrow| command was
-% probably not designed for this type of application and is much too broad
-% in the final CM font version. This broad arrow shape is incidentally one
-% of last changes by Prof.~Knuth to the CM font symbols. The PostScript
-% version of the CM fonts typesets the arrow much better, but it is highly
-% likely that it is still the old outdated version of the symbol.
-%
-% \item The subscript heights differ for the cases with and without
-% superscripts, $x_b,\; x_b^a$. This is not very satisfactory for a
-% consistent matrix-tensor notation, but it can be remedied by inserting a
-% dummy superscript, |$x^{}_b$|, which then gives $x^{}_b$, $x_b^a$.
-%
-% \end{itemize}
-% The \MT\ package was developed to overcome (some of) the above-mentioned
-% problems and to typeset the \Hass{} matrix tensor symbols in a consistent
-% manner.
-%
-%
-% \subsection{To do's}
+% \section{To do's}
%
% \begin{itemize}
% \item The vertical spacing between the symbols and the lines and
@@ -764,6 +628,14 @@
% \item For the purists: The ends of the |\overrightarrow| are rounded
% (ligature of symbols), while the ends of the |\overline| are
% squared (\TeX{} line drawing).
+% \item The shape of the arrow tip of the |\overrightarrow| command was
+% probably not designed for this type of application and is much too broad
+% in the final CM font version. This broad arrow shape is incidentally one
+% of last changes by Prof.~Knuth to the CM font symbols. The PostScript
+% version of the CM fonts typesets the arrow much better, but it is highly
+% likely that it is still the old outdated version of the symbol.
+% The \pkg{esvect} provides alternative vector symbols that can
+% be used in \cmd{\overrightarrow}.
% \end{itemize}
% \bigskip
%
@@ -799,8 +671,8 @@
%
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{mattens}[2010/03/26
- v1.3a
+\ProvidesPackage{mattens}[2022/03/01
+ v1.3b
Matrix/Tensors (DNJ Els)]
% \end{macrocode}
%
diff --git a/macros/latex/contrib/mattens/mattens.ins b/macros/latex/contrib/mattens/mattens.ins
index a4ad740171..85af205dac 100644
--- a/macros/latex/contrib/mattens/mattens.ins
+++ b/macros/latex/contrib/mattens/mattens.ins
@@ -1,5 +1,5 @@
% mattens.ins
-% Copyright (C) 2001--2010 Danie Els
+% Copyright (C) 2001--2022 Danie Els
%
% -------------------------------------------------------------------
% The mattens package
@@ -11,11 +11,11 @@
% of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
+% version 2008/12/01 or later.
%
% This work has the LPPL maintenance status 'maintained'.
%
-% This Current Maintainer of this work is Danie Els (dnjels@sun.ac.za)
+% This Current Maintainer of this work is Danie Els (dnjels@gmail.com)
%
% This package consists of the files: mattens.dtx
% mattens.ins
@@ -23,13 +23,13 @@
% -------------------------------------------------------------------
\def\batchfile{mattens.ins}
-\def\filedate{2010/03/26}
+\def\filedate{2022/03/01}
\input docstrip.tex
\keepsilent
\declarepreamble\DNJEpreamble
-Copyright (C) 2001--2010 Danie Els
+Copyright (C) 2001--2022 Danie Els
-------------------------------------------------------------------
The mattens package
@@ -41,11 +41,11 @@ license or (at your option) any later version. The latest version
of this license is in
http://www.latex-project.org/lppl.txt
and version 1.3c or later is part of all distributions of LaTeX
-version 2005/12/01 or later.
+version 2008/12/01 or later.
This work has the LPPL maintenance status 'maintained'.
-This Current Maintainer of this work is Danie Els (dnjels@sun.ac.za)
+This Current Maintainer of this work is Danie Els (dnjels@gmail.com)
-------------------------------------------------------------------
\endpreamble
diff --git a/macros/latex/contrib/mattens/mattens.pdf b/macros/latex/contrib/mattens/mattens.pdf
index 5a651a3ac5..806d8e764a 100644
--- a/macros/latex/contrib/mattens/mattens.pdf
+++ b/macros/latex/contrib/mattens/mattens.pdf
Binary files differ
diff --git a/macros/latex/contrib/mattens/mattens_sample.pdf b/macros/latex/contrib/mattens/mattens_sample.pdf
index 321d16aa7c..3fb0eba780 100644
--- a/macros/latex/contrib/mattens/mattens_sample.pdf
+++ b/macros/latex/contrib/mattens/mattens_sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/tabularray/README b/macros/latex/contrib/tabularray/README.txt
index c2a7000e2d..71d8543b2a 100644
--- a/macros/latex/contrib/tabularray/README
+++ b/macros/latex/contrib/tabularray/README.txt
@@ -1,5 +1,5 @@
Package: Typeset tabulars and arrays with LaTeX3
-Author: Jianrui Lyu <tolvjr@163.com>
+Copyright: 2021-2022 (c) Jianrui Lyu <tolvjr@163.com>
CTAN: https://ctan.org/pkg/tabularray
Repository: https://github.com/lvjr/tabularray
Repository: https://bitbucket.org/lvjr/tabularray
diff --git a/macros/latex/contrib/tabularray/tabularray-2021.sty b/macros/latex/contrib/tabularray/tabularray-2021.sty
index 8e5c2b9369..f5ad547d71 100644
--- a/macros/latex/contrib/tabularray/tabularray-2021.sty
+++ b/macros/latex/contrib/tabularray/tabularray-2021.sty
@@ -12,13 +12,12 @@
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\ProvidesExplPackage{tabularray}{2021-06-05}{2021K}
+\ProvidesExplPackage{tabularray}{2021-12-01}{2021Q}
{Typeset tabulars and arrays with LaTeX3}
\RequirePackage{xparse}
-\AtBeginDocument{\@ifpackageloaded{xcolor}{\RequirePackage{ninecolors}}{}}
-\ExplSyntaxOn
+\AtBeginDocument{\@ifpackageloaded{xcolor}{\RequirePackage{ninecolors}}{}}
%% Backport \tl_if_eq:NnTF for old texlive 2020
\cs_if_exist:NF \tl_if_eq:NnTF
@@ -53,10 +52,12 @@
\cs_generate_variant:Nn \tl_const:Nn { ce }
\cs_generate_variant:Nn \tl_log:n { x }
\cs_generate_variant:Nn \tl_gput_right:Nn { Nf }
+\cs_generate_variant:Nn \tl_put_left:Nn { Nv }
\prg_generate_conditional_variant:Nnn \clist_if_in:Nn { Nx } { TF }
\prg_generate_conditional_variant:Nnn \prop_if_in:Nn { c } { T }
\prg_generate_conditional_variant:Nnn \str_if_eq:nn { xn } { TF }
\prg_generate_conditional_variant:Nnn \tl_if_eq:nn { en } { T, TF }
+\prg_generate_conditional_variant:Nnn \tl_if_head_eq_catcode:nN { VN } { TF }
\prg_generate_conditional_variant:Nnn \tl_if_head_eq_meaning:nN { VN } { T, TF }
\tl_new:N \l__tblr_a_tl
@@ -97,11 +98,33 @@
\box_new:N \l__tblr_c_box % for cell box
\box_new:N \l__tblr_d_box
-%% Some counters for row and column numbering
-\newcounter{rownum}
-\newcounter{colnum}
-\newcounter{rowcount}
-\newcounter{colcount}
+%% Total number of tblr tables
+\int_new:N \g__tblr_table_count_int
+
+%% Some commands for horizontal alignment
+\cs_new_eq:NN \__tblr_halign_command_l: \raggedright
+\cs_new_eq:NN \__tblr_halign_command_c: \centering
+\cs_new_eq:NN \__tblr_halign_command_r: \raggedleft
+
+%% Some counters for row and column numbering.
+%% We may need to restore all LaTeX counters in measuring and building cells,
+%% so we must not define these counters with \newcounter command.
+\int_new:N \c@rownum
+\int_new:N \c@colnum
+\int_new:N \c@rowcount
+\int_new:N \c@colcount
+
+%% Add missing \therownum, \thecolnum, \therowcount, \thecolcount (issue #129)
+\NewExpandableDocumentCommand \therownum {} { \@arabic \c@rownum }
+\NewExpandableDocumentCommand \thecolnum {} { \@arabic \c@colnum }
+\NewExpandableDocumentCommand \therowcount {} { \@arabic \c@rowcount }
+\NewExpandableDocumentCommand \thecolcount {} { \@arabic \c@colcount }
+
+%% Some dimensions for row and column spacing
+\dim_new:N \abovesep
+\dim_new:N \belowsep
+\dim_new:N \leftsep
+\dim_new:N \rightsep
%%% --------------------------------------------------------
%% \section{Data Structures Based on Property Lists}
@@ -113,7 +136,10 @@
{
\prop_gclear_new:c { g__tblr_text_ \int_use:N \g_tblr_level_int _prop }
\prop_gclear_new:c { g__tblr_command_ \int_use:N \g_tblr_level_int _prop }
- \prop_gclear_new:c { g__tblr_table_ \int_use:N \g_tblr_level_int _prop }
+ \prop_gclear_new:c { g__tblr_inner_ \int_use:N \g_tblr_level_int _prop }
+ \prop_gclear_new:c { g__tblr_note_ \int_use:N \g_tblr_level_int _prop }
+ \prop_gclear_new:c { g__tblr_remark_ \int_use:N \g_tblr_level_int _prop }
+ \prop_gclear_new:c { g__tblr_more_ \int_use:N \g_tblr_level_int _prop }
\prop_gclear_new:c { g__tblr_row_ \int_use:N \g_tblr_level_int _prop }
\prop_gclear_new:c { g__tblr_column_ \int_use:N \g_tblr_level_int _prop }
\prop_gclear_new:c { g__tblr_cell_ \int_use:N \g_tblr_level_int _prop }
@@ -184,7 +210,7 @@
{ \dim_compare_p:nNn { #3 } > { \l__tblr_put_if_larger_tl } }
{ \prop_put:Nnn #1 { #2 } { #3 } }
}
-\cs_generate_variant:Nn \__tblr_put_if_larger:Nnn { Nnx, Nxn, Nxx }
+\cs_generate_variant:Nn \__tblr_put_if_larger:Nnn { Nnx, Nxn, Nxx, NnV }
\cs_new_protected:Npn \__tblr_gput_if_larger:Nnn #1 #2 #3
{
@@ -215,63 +241,78 @@
%% \section{Data Structures Based on Token Lists}
%%% --------------------------------------------------------
-\cs_new_protected:Npn \__tblr_clear_text_lists:
+\cs_new_protected:Npn \__tblr_clear_spec_lists:
{
- \__tblr_clear_one_text_lists:n { text }
- \__tblr_clear_one_text_lists:n { hline }
- \__tblr_clear_one_text_lists:n { vline }
+ %\__tblr_clear_one_spec_lists:n { row }
+ %\__tblr_clear_one_spec_lists:n { column }
+ %\__tblr_clear_one_spec_lists:n { cell }
+ \__tblr_clear_one_spec_lists:n { text }
+ \__tblr_clear_one_spec_lists:n { hline }
+ \__tblr_clear_one_spec_lists:n { vline }
+ \__tblr_clear_one_spec_lists:n { outer }
}
-\cs_new_protected:Npn \__tblr_clear_one_text_lists:n #1
+\cs_new_protected:Npn \__tblr_clear_one_spec_lists:n #1
{
\clist_if_exist:cTF { g__tblr_#1_ \int_use:N \g_tblr_level_int _clist }
{
\clist_map_inline:cn { g__tblr_#1_ \int_use:N \g_tblr_level_int _clist }
{
- \tl_gclear:c { g__tblr_text_ \int_use:N \g_tblr_level_int _#1_##1_tl }
+ \tl_gclear:c { g__tblr_spec_ \int_use:N \g_tblr_level_int _#1_##1_tl }
}
}
{ \clist_new:c { g__tblr_#1_ \int_use:N \g_tblr_level_int _clist } }
}
-\cs_new_protected:Npn \__tblr_text_gput:nnn #1 #2 #3
+\cs_new_protected:Npn \__tblr_spec_gput:nnn #1 #2 #3
{
\tl_gset:cn
- { g__tblr_text_ \int_use:N \g_tblr_level_int _#1_#2_tl } {#3}
+ { g__tblr_spec_ \int_use:N \g_tblr_level_int _#1_#2_tl } {#3}
\clist_gput_right:cx { g__tblr_#1_ \int_use:N \g_tblr_level_int _clist } {#2}
}
-\cs_generate_variant:Nn \__tblr_text_gput:nnn { nne, nnV, nen, nee, neV }
+\cs_generate_variant:Nn \__tblr_spec_gput:nnn { nne, nnV, nen, nee, neV }
-\cs_new:Npn \__tblr_text_item:nn #1 #2
+\cs_new:Npn \__tblr_spec_item:nn #1 #2
{
- \tl_if_exist:cT { g__tblr_text_ \int_use:N \g_tblr_level_int _#1_#2_tl }
+ \tl_if_exist:cT { g__tblr_spec_ \int_use:N \g_tblr_level_int _#1_#2_tl }
{
\exp_args:Nv \exp_not:n
- { g__tblr_text_ \int_use:N \g_tblr_level_int _#1_#2_tl }
+ { g__tblr_spec_ \int_use:N \g_tblr_level_int _#1_#2_tl }
}
}
-\cs_generate_variant:Nn \__tblr_text_item:nn { ne }
+\cs_generate_variant:Nn \__tblr_spec_item:nn { ne }
-\cs_new_protected:Npn \__tblr_text_gput_if_larger:nnn #1 #2 #3
+\cs_new_protected:Npn \__tblr_spec_gput_if_larger:nnn #1 #2 #3
{
- \tl_set:Nx \l__tblr_put_if_larger_tl { \__tblr_text_item:nn {#1} {#2} }
+ \tl_set:Nx \l__tblr_put_if_larger_tl { \__tblr_spec_item:nn {#1} {#2} }
\bool_lazy_or:nnT
{ \tl_if_empty_p:N \l__tblr_put_if_larger_tl }
{ \dim_compare_p:nNn {#3} > { \l__tblr_put_if_larger_tl } }
- { \__tblr_text_gput:nnn {#1} {#2} {#3} }
+ { \__tblr_spec_gput:nnn {#1} {#2} {#3} }
}
-\cs_generate_variant:Nn \__tblr_text_gput_if_larger:nnn { nne, nnV, nen, nee, neV }
+\cs_generate_variant:Nn \__tblr_spec_gput_if_larger:nnn { nne, nnV, nen, nee, neV }
-\cs_new_protected:Npn \__tblr_text_log:n #1
+\cs_new_protected:Npn \__tblr_spec_gadd_dimen_value:nnn #1 #2 #3
+ {
+ \__tblr_spec_gput:nne {#1} {#2}
+ { \dim_eval:n { \__tblr_spec_item:ne {#1} {#2} + #3 } }
+ }
+\cs_generate_variant:Nn \__tblr_spec_gadd_dimen_value:nnn { nne, nnV, nen, nee }
+
+\cs_new_protected:Npn \__tblr_spec_log:n #1
{
\clist_gremove_duplicates:c
{ g__tblr_#1_ \int_use:N \g_tblr_level_int _clist }
- \tl_log:n { ----------~----------~----------~----------~---------- }
+ \tl_log:x
+ {
+ The ~ spec ~ list ~ #1 _ \int_use:N \g_tblr_level_int
+ \space contains ~ the ~ pairs:
+ }
\clist_map_inline:cn { g__tblr_#1_ \int_use:N \g_tblr_level_int _clist }
{
\tl_log:x
{
- \space { #1 ##1 } ~\space=>~\space { \__tblr_text_item:nn {#1} {##1} }
+ \space { ##1 } ~\space=>~\space { \__tblr_spec_item:nn {#1} {##1} }
}
}
}
@@ -321,6 +362,7 @@
\__tblr_data_new_key:nnn { row } { @row-foot } { dim }
\__tblr_data_new_key:nnn { row } { @row-upper } { dim }
\__tblr_data_new_key:nnn { row } { @row-lower } { dim }
+\__tblr_data_new_key:nnn { row } { break } { int }
\int_new:N \g__tblr_data_column_key_count_int
\__tblr_data_new_key:nnn { column } { width } { dim }
@@ -336,6 +378,10 @@
\__tblr_data_new_key:nnn { cell } { halign } { str }
\__tblr_data_new_key:nnn { cell } { valign } { str }
\__tblr_data_new_key:nnn { cell } { background } { str }
+\__tblr_data_new_key:nnn { cell } { foreground } { str }
+\__tblr_data_new_key:nnn { cell } { font } { str }
+\__tblr_data_new_key:nnn { cell } { mode } { str }
+\__tblr_data_new_key:nnn { cell } { cmd } { str }
\__tblr_data_new_key:nnn { cell } { omit } { int }
\__tblr_data_new_key:nnn { cell } { @cell-width } { dim }
\__tblr_data_new_key:nnn { cell } { @cell-height } { dim }
@@ -350,12 +396,12 @@
\tl_const:Nn \g__tblr_data_cell_index_number_tl {2}
\int_new:N \g__tblr_array_int
-\cs_new_protected:Npn \__tblr_initial_table_data:
+\cs_new_protected:Npn \__tblr_init_table_data:
{
- \clist_map_function:NN \g__tblr_data_clist \__tblr_initial_one_data:n
+ \clist_map_function:NN \g__tblr_data_clist \__tblr_init_one_data:n
}
-\cs_new_protected:Npn \__tblr_initial_one_data:n #1
+\cs_new_protected:Npn \__tblr_init_one_data:n #1
{
\int_gincr:N \g__tblr_array_int
\intarray_new:cn { g__tblr_#1_ \int_use:N \g__tblr_array_int _intarray }
@@ -507,18 +553,18 @@
\cs_new_protected:Npn \__tblr_data_int_from_str:n #1
{
- \tl_if_exist:cTF { g__tblr_data_#1_to_int_tl }
+ \tl_if_exist:cTF { g__tblr_data_ \tl_to_str:n {#1} _to_int_tl }
{
\tl_gset_eq:Nc \g__tblr_data_int_from_value_tl
- { g__tblr_data_#1_to_int_tl }
+ { g__tblr_data_ \tl_to_str:n {#1} _to_int_tl }
}
{
\int_gincr:N \g__tblr_data_str_value_count_int
- \tl_gset:cx { g__tblr_data_#1_to_int_tl }
+ \tl_gset:cx { g__tblr_data_ \tl_to_str:n {#1} _to_int_tl }
{ \int_use:N \g__tblr_data_str_value_count_int }
- \tl_gset:cx
+ \tl_gset:cn
{ g__tblr_data_ \int_use:N \g__tblr_data_str_value_count_int _to_str_tl }
- { #1 }
+ { \exp_not:n {#1} }
\tl_gset:Nx \g__tblr_data_int_from_value_tl
{ \int_use:N \g__tblr_data_str_value_count_int }
}
@@ -661,7 +707,8 @@
{ \__tblr_data_key_to_int:nnn {#1} {#2} {#3} }
{ \g__tblr_data_int_from_value_tl }
}
-\cs_generate_variant:Nn \__tblr_data_gadd_dimen_value:nnnn { nnne, nnnV, nene }
+\cs_generate_variant:Nn \__tblr_data_gadd_dimen_value:nnnn
+ { nnne, nnnV, nenn, nene }
\cs_new_protected:Npn \__tblr_array_gadd_value:Nnn #1 #2 #3
{
@@ -678,39 +725,39 @@
{
\cs_set_protected:Npn \__tblr_data_gput:nnnn #1 #2 #3 #4
{
- \__tblr_prop_gput:nnn {#1} { [#2] / #3 } {#4}
+ \__tblr_spec_gput:nnn {#1} { [#2] / #3 } {#4}
}
\cs_set_protected:Npn \__tblr_data_gput:nnnnn #1 #2 #3 #4 #5
{
- \__tblr_prop_gput:nnn {#1} { [#2][#3] / #4 } {#5}
+ \__tblr_spec_gput:nnn {#1} { [#2][#3] / #4 } {#5}
}
\cs_set:Npn \__tblr_data_item:nnn #1 #2 #3
{
- \__tblr_prop_item:nn {#1} { [#2] / #3 }
+ \__tblr_spec_item:nn {#1} { [#2] / #3 }
}
\cs_set:Npn \__tblr_data_item:nnnn #1 #2 #3 #4
{
- \__tblr_prop_item:nn {#1} { [#2][#3] / #4 }
+ \__tblr_spec_item:nn {#1} { [#2][#3] / #4 }
}
\cs_set_protected:Npn \__tblr_data_log:n #1
{
- \__tblr_prop_log:n {#1}
+ \__tblr_spec_log:n {#1}
}
\cs_set_protected:Npn \__tblr_data_gput_if_larger:nnnn #1 #2 #3 #4
{
- \__tblr_prop_gput_if_larger:nnn {#1} { [#2] / #3 } {#4}
+ \__tblr_spec_gput_if_larger:nnn {#1} { [#2] / #3 } {#4}
}
\cs_set_protected:Npn \__tblr_data_gput_if_larger:nnnnn #1 #2 #3 #4 #5
{
- \__tblr_prop_gput_if_larger:nnn {#1} { [#2][#3] / #4 } {#5}
+ \__tblr_spec_gput_if_larger:nnn {#1} { [#2][#3] / #4 } {#5}
}
\cs_set_protected:Npn \__tblr_data_gadd_dimen_value:nnnn #1 #2 #3 #4
{
- \__tblr_prop_gadd_dimen_value:nnn {#1} { [#2] / #3 } {#4}
+ \__tblr_spec_gadd_dimen_value:nnn {#1} { [#2] / #3 } {#4}
}
\cs_set_protected:Npn \__tblr_data_gadd_dimen_value:nnnnn #1 #2 #3 #4 #5
{
- \__tblr_prop_gadd_dimen_value:nnn {#1} { [#2][#3] / #4 } {#5}
+ \__tblr_spec_gadd_dimen_value:nnn {#1} { [#2][#3] / #4 } {#5}
}
}
}
@@ -818,12 +865,30 @@
}
}
+\tl_new:N \l__tblr_child_from_tl
+\tl_new:N \l__tblr_child_to_tl
+
\cs_new_protected_nopar:Npn \__tblr_get_childs_normal_aux:w #1 - #2 \scan_stop
{
- \int_step_inline:nnn {#1} {#2}
+ \__tblr_child_name_to_index:nN {#1} \l__tblr_child_from_tl
+ \__tblr_child_name_to_index:nN {#2} \l__tblr_child_to_tl
+ \int_step_inline:nnn { \l__tblr_child_from_tl } { \l__tblr_child_to_tl }
{ \clist_put_right:Nn \l_tblr_childs_clist {##1} }
}
+\regex_const:Nn \c__tblr_child_name_regex { ^ [X-Z] $ }
+
+%% Convert X, Y, Z to the indexes of the last three childs, respectively
+\cs_new_protected_nopar:Npn \__tblr_child_name_to_index:nN #1 #2
+ {
+ \regex_match:NnTF \c__tblr_child_name_regex {#1}
+ {
+ \tl_set:Nx #2
+ { \int_eval:n { \l_tblr_childs_total_tl + \int_from_alph:n {#1} - 26 } }
+ }
+ { \tl_set:Nx #2 { #1 } }
+ }
+
%%% --------------------------------------------------------
%% \section{New Table Commands}
%%% --------------------------------------------------------
@@ -889,6 +954,54 @@
\int_set:Nn \c@colnum {#2}
}
+%% Table commands are defined only inside tblr environments,
+%% but some packages such as csvsimple need to use them outside tblr environments,
+%% therefore we define some of them first here.
+\ProvideDocumentCommand \SetHlines { o m m } {}
+\ProvideDocumentCommand \SetHline { o m m } {}
+\ProvideDocumentCommand \SetVlines { o m m } {}
+\ProvideDocumentCommand \SetVline { o m m } {}
+\ProvideDocumentCommand \SetCells { o m } {}
+\ProvideDocumentCommand \SetCell { o m } {}
+\ProvideDocumentCommand \SetRows { o m } {}
+\ProvideDocumentCommand \SetRow { o m } {}
+\ProvideDocumentCommand \SetColumns { o m } {}
+\ProvideDocumentCommand \SetColumn { o m } {}
+
+%%% --------------------------------------------------------
+%%> \section{New Content Commands}
+%%% --------------------------------------------------------
+
+%% We need to emulate or fix some commands such as \diagbox in other packages
+%% These commands must be defined with \NewContentCommand command
+%% We only enable them inside tblr environment to avoid potential conflict
+
+\clist_new:N \g__tblr_content_commands_clist
+
+\msg_new:nnn { tabularray } { defined-content-command }
+ { Content ~ commnad ~ #1 has ~ been ~ defined! }
+
+\NewDocumentCommand \NewContentCommand { m O{0} o m }
+ {
+ \clist_if_in:NnTF \g__tblr_content_commands_clist { #1 }
+ {
+ \msg_warning:nnn { tabularray } { defined-content-command } { #1 }
+ \clist_log:N \g__tblr_content_commands_clist
+ }
+ {
+ \__tblr_make_xparse_arg_spec:nnN { #2 } { #3 } \l__tblr_a_tl
+ \exp_args:NcV \NewDocumentCommand
+ { __tblr_content_command_ \cs_to_str:N #1 :w } \l__tblr_a_tl { #4 }
+ \clist_gput_right:Nn \g__tblr_content_commands_clist { #1 }
+ }
+ }
+
+\cs_new_protected:Npn \__tblr_enable_content_commands:
+ {
+ \clist_map_inline:Nn \g__tblr_content_commands_clist
+ { \cs_set_eq:Nc ##1 { __tblr_content_command_ \cs_to_str:N ##1 :w } }
+ }
+
%%% --------------------------------------------------------
%% \section{New Dash Styles}
%%% --------------------------------------------------------
@@ -1007,11 +1120,18 @@
\tl_new:N \l__tblr_hline_dash_tl % dash style
\tl_new:N \l__tblr_hline_fg_tl % dash foreground
\tl_new:N \l__tblr_hline_wd_tl % dash width
+\tl_new:N \l__tblr_hline_leftpos_tl % left position
+\tl_new:N \l__tblr_hline_rightpos_tl % right position
+\bool_new:N \l__tblr_hline_endpos_bool % whether set positions only for both ends
\NewTableCommand \cline [2] [] { \SetHline [=] {#2} {#1} }
\NewTableCommand \hline [1] [] { \SetHline [+] {-} {#1} }
+%% Some keys can be set by any hline, such as abovespace and belowspace keys.
+%% Using special hline of index 0, you can set these keys without adding any hlines.
+\NewTableCommand \SetVspace [1] { \SetHline [0] {-} {#1} }
+
%% #1: the index of the hline (may be + or =)
%% #2: which columns of the hline, separate by commas
%% #3: key=value pairs
@@ -1025,13 +1145,19 @@
\cs_new_protected:Npn \tblr_set_hline:nnn #1 #2 #3
{
\group_begin:
- \keys_set_groups:nnn { tblr-hline } { text } {#3}
- \tl_if_eq:NnF \l__tblr_hline_dash_tl { \exp_not:N \@tblr@text }
+ %% We can not use \int_compare:nNnTF here since #1 may be + or = .
+ %% Also we treat hline of index 0 specially, not adding hline count.
+ \tl_if_eq:nnTF {#1} {0}
+ { \keys_set:nn { tblr-hline } {#3} }
{
- \__tblr_set_hline_num:n {#1}
- \tl_clear:N \l__tblr_hline_dash_tl
- \keys_set:nn { tblr-hline } { dash = solid, #3 }
- \__tblr_set_hline_cmd:n {#2}
+ \keys_set_groups:nnn { tblr-hline } { text } {#3}
+ \tl_if_eq:NnF \l__tblr_hline_dash_tl { \exp_not:N \@tblr@text }
+ {
+ \__tblr_set_hline_num:n {#1}
+ \tl_clear:N \l__tblr_hline_dash_tl
+ \keys_set:nn { tblr-hline } { dash = solid, #3 }
+ \__tblr_set_hline_cmd:n {#2}
+ }
}
\group_end:
}
@@ -1068,12 +1194,12 @@
{
\tl_clear:N \l__tblr_hline_num_tl
\tl_set:Nx \l__tblr_hline_count_tl
- { \__tblr_text_item:ne { hline } { [\int_use:N \c@rownum] / @hline-count } }
+ { \__tblr_spec_item:ne { hline } { [\int_use:N \c@rownum] / @hline-count } }
%% \l__tblr_hline_count_tl may be empty when rowspec has extra |'s
\int_compare:nNnTF { \l__tblr_hline_count_tl + 0 } = {0}
{
\tl_set:Nx \l__tblr_hline_num_tl { 1 }
- \__tblr_text_gput:nen { hline }
+ \__tblr_spec_gput:nen { hline }
{ [\int_use:N \c@rownum] / @hline-count } { 1 }
}
{
@@ -1095,7 +1221,7 @@
{
\tl_set:Nx \l__tblr_hline_count_tl
{ \int_eval:n { \l__tblr_hline_count_tl + 1 } }
- \__tblr_text_gput:nee { hline }
+ \__tblr_spec_gput:nee { hline }
{ [\int_use:N \c@rownum] / @hline-count } { \l__tblr_hline_count_tl }
\tl_set_eq:NN \l__tblr_hline_num_tl \l__tblr_hline_count_tl
}
@@ -1108,6 +1234,21 @@
wd .code:n = \tl_set:Nn \l__tblr_hline_wd_tl { \dim_eval:n {#1} },
fg .code:n = \tl_set:Nn \l__tblr_hline_fg_tl {#1},
baseline .code:n = \__tblr_hline_set_baseline:n {#1},
+ leftpos .code:n = \tl_set:Nx \l__tblr_hline_leftpos_tl {#1},
+ rightpos .code:n = \tl_set:Nx \l__tblr_hline_rightpos_tl {#1},
+ l .meta:n = { leftpos = #1 },
+ l .default:n = { -0.8 },
+ r .meta:n = { rightpos = #1 },
+ r .default:n = { -0.8 },
+ lr .meta:n = { leftpos = #1, rightpos = #1 },
+ lr .default:n = { -0.8 },
+ endpos .bool_set:N = \l__tblr_hline_endpos_bool,
+ abovespace .code:n = \__tblr_row_gput_above:ne { belowsep } { \dim_eval:n {#1} },
+ belowspace .code:n = \__tblr_row_gput:ne { abovesep } { \dim_eval:n {#1} },
+ abovespace+ .code:n = \__tblr_row_gadd_dimen_above:ne
+ { belowsep } { \dim_eval:n {#1} },
+ belowspace+ .code:n = \__tblr_row_gadd_dimen:ne
+ { abovesep } { \dim_eval:n {#1} },
unknown .code:n = \__tblr_hline_unknown_key:V \l_keys_key_str,
}
@@ -1131,24 +1272,59 @@
\__tblr_get_childs:nx {#1} { \int_use:N \c@colcount }
\clist_map_inline:Nn \l_tblr_childs_clist
{
- \__tblr_text_gput:nee { hline }
- { [\int_use:N \c@rownum][##1](\l__tblr_hline_num_tl) / @dash }
- { \l__tblr_hline_dash_tl }
+ \__tblr_set_hline_option:nnn { ##1 } { @dash } { \l__tblr_hline_dash_tl }
\tl_if_empty:NF \l__tblr_hline_wd_tl
{
- \__tblr_text_gput:nee { hline }
- { [\int_use:N \c@rownum][##1](\l__tblr_hline_num_tl) / wd }
- { \l__tblr_hline_wd_tl }
+ \__tblr_set_hline_option:nnn { ##1 } { wd } { \l__tblr_hline_wd_tl }
}
\tl_if_empty:NF \l__tblr_hline_fg_tl
{
- \__tblr_text_gput:nee { hline }
- { [\int_use:N \c@rownum][##1](\l__tblr_hline_num_tl) / fg }
- { \l__tblr_hline_fg_tl }
+ \__tblr_set_hline_option:nnn { ##1 } { fg } { \l__tblr_hline_fg_tl }
+ }
+ }
+ \tl_if_empty:NF \l__tblr_hline_leftpos_tl
+ {
+ \bool_if:NTF \l__tblr_hline_endpos_bool
+ {
+ \__tblr_set_hline_option:nnn
+ { \clist_item:Nn \l_tblr_childs_clist {1} }
+ { leftpos }
+ { \l__tblr_hline_leftpos_tl }
+ }
+ {
+ \clist_map_inline:Nn \l_tblr_childs_clist
+ {
+ \__tblr_set_hline_option:nnn
+ { ##1 } { leftpos } { \l__tblr_hline_leftpos_tl }
+ }
+ }
+ }
+ \tl_if_empty:NF \l__tblr_hline_rightpos_tl
+ {
+ \bool_if:NTF \l__tblr_hline_endpos_bool
+ {
+ \__tblr_set_hline_option:nnn
+ { \clist_item:Nn \l_tblr_childs_clist {-1} }
+ { rightpos }
+ { \l__tblr_hline_rightpos_tl }
+ }
+ {
+ \clist_map_inline:Nn \l_tblr_childs_clist
+ {
+ \__tblr_set_hline_option:nnn
+ { ##1 } { rightpos } { \l__tblr_hline_rightpos_tl }
+ }
}
}
}
+%% #1: column; #2: key; #3: value
+\cs_new_protected_nopar:Npn \__tblr_set_hline_option:nnn #1 #2 #3
+ {
+ \__tblr_spec_gput:nee { hline }
+ { [\int_use:N \c@rownum][#1](\l__tblr_hline_num_tl) / #2 } { #3 }
+ }
+
\NewTableCommand \firsthline [1] [] { \SetHline [+] {-} { #1, baseline=below } }
\NewTableCommand \lasthline [1] [] { \SetHline [+] {-} { #1, baseline=above } }
@@ -1156,13 +1332,13 @@
{
\tl_if_eq:nnTF {#1} {above}
{
- \__tblr_prop_gput:nnx { table }
+ \__tblr_prop_gput:nnx { inner }
{ baseline } { \int_eval:n { \c@rownum - 1 } }
}
{
\tl_if_eq:nnT {#1} {below}
{
- \__tblr_prop_gput:nnx { table } { baseline } { \int_use:N \c@rownum }
+ \__tblr_prop_gput:nnx { inner } { baseline } { \int_use:N \c@rownum }
}
}
}
@@ -1206,6 +1382,8 @@
\tl_new:N \l__tblr_vline_dash_tl % dash style
\tl_new:N \l__tblr_vline_fg_tl % dash foreground
\tl_new:N \l__tblr_vline_wd_tl % dash width
+\tl_new:N \l__tblr_vline_abovepos_tl % above position
+\tl_new:N \l__tblr_vline_belowpos_tl % below position
\NewTableCommand \rline [2] [] { \SetVline [=] {#2} {#1} }
@@ -1267,12 +1445,12 @@
{
\tl_clear:N \l__tblr_vline_num_tl
\tl_set:Nx \l__tblr_vline_count_tl
- { \__tblr_text_item:ne { vline } { [\int_use:N \c@colnum] / @vline-count } }
+ { \__tblr_spec_item:ne { vline } { [\int_use:N \c@colnum] / @vline-count } }
%% \l__tblr_vline_count_tl may be empty when colspec has extra |'s
\int_compare:nNnTF { \l__tblr_vline_count_tl + 0 } = {0}
{
\tl_set:Nx \l__tblr_vline_num_tl { 1 }
- \__tblr_text_gput:nen { vline }
+ \__tblr_spec_gput:nen { vline }
{ [\int_use:N \c@colnum] / @vline-count } { 1 }
}
{
@@ -1294,7 +1472,7 @@
{
\tl_set:Nx \l__tblr_vline_count_tl
{ \int_eval:n { \l__tblr_vline_count_tl + 1 } }
- \__tblr_text_gput:nee { vline }
+ \__tblr_spec_gput:nee { vline }
{ [\int_use:N \c@colnum] / @vline-count } { \l__tblr_vline_count_tl }
\tl_set_eq:NN \l__tblr_vline_num_tl \l__tblr_vline_count_tl
}
@@ -1306,6 +1484,8 @@
text .groups:n = { text },
wd .code:n = \tl_set:Nn \l__tblr_vline_wd_tl { \dim_eval:n {#1} },
fg .code:n = \tl_set:Nn \l__tblr_vline_fg_tl {#1},
+ abovepos .code:n = \tl_set:Nx \l__tblr_vline_abovepos_tl {#1},
+ belowpos .code:n = \tl_set:Nx \l__tblr_vline_belowpos_tl {#1},
unknown .code:n = \__tblr_vline_unknown_key:V \l_keys_key_str,
}
@@ -1329,21 +1509,33 @@
\__tblr_get_childs:nx {#1} { \int_use:N \c@rowcount }
\clist_map_inline:Nn \l_tblr_childs_clist
{
- \__tblr_text_gput:nee { vline }
+ \__tblr_spec_gput:nee { vline }
{ [##1][\int_use:N \c@colnum](\l__tblr_vline_num_tl) / @dash }
{ \l__tblr_vline_dash_tl }
\tl_if_empty:NF \l__tblr_vline_wd_tl
{
- \__tblr_text_gput:nee { vline }
+ \__tblr_spec_gput:nee { vline }
{ [##1][\int_use:N \c@colnum](\l__tblr_vline_num_tl) / wd }
{ \l__tblr_vline_wd_tl }
}
\tl_if_empty:NF \l__tblr_vline_fg_tl
{
- \__tblr_text_gput:nee { vline }
+ \__tblr_spec_gput:nee { vline }
{ [##1][\int_use:N \c@colnum](\l__tblr_vline_num_tl) / fg }
{ \l__tblr_vline_fg_tl }
}
+ \tl_if_empty:NF \l__tblr_vline_abovepos_tl
+ {
+ \__tblr_spec_gput:nee { vline }
+ { [##1][\int_use:N \c@colnum](\l__tblr_vline_num_tl) / abovepos }
+ { \l__tblr_vline_abovepos_tl }
+ }
+ \tl_if_empty:NF \l__tblr_vline_belowpos_tl
+ {
+ \__tblr_spec_gput:nee { vline }
+ { [##1][\int_use:N \c@colnum](\l__tblr_vline_num_tl) / belowpos }
+ { \l__tblr_vline_belowpos_tl }
+ }
}
}
@@ -1440,36 +1632,45 @@
\keys_define:nn { tblr-cell-spec }
{
- l .code:n = \__tblr_data_gput:neenn { cell }
- { \int_use:N \c@rownum } { \int_use:N \c@colnum } { halign } {l},
- c .code:n = \__tblr_data_gput:neenn { cell }
- { \int_use:N \c@rownum } { \int_use:N \c@colnum } { halign } {c},
- r .code:n = \__tblr_data_gput:neenn { cell }
- { \int_use:N \c@rownum } { \int_use:N \c@colnum } { halign } {r},
- t .code:n = \__tblr_data_gput:neenn { cell }
- { \int_use:N \c@rownum } { \int_use:N \c@colnum } { valign} {t},
- p .code:n = \__tblr_data_gput:neenn { cell }
- { \int_use:N \c@rownum } { \int_use:N \c@colnum } { valign} {t},
- m .code:n = \__tblr_data_gput:neenn { cell }
- { \int_use:N \c@rownum } { \int_use:N \c@colnum } { valign} {m},
- b .code:n = \__tblr_data_gput:neenn { cell }
- { \int_use:N \c@rownum } { \int_use:N \c@colnum } { valign} {b},
- h .code:n = \__tblr_data_gput:neenn { cell }
- { \int_use:N \c@rownum } { \int_use:N \c@colnum } { valign} {h},
- f .code:n = \__tblr_data_gput:neenn { cell }
- { \int_use:N \c@rownum } { \int_use:N \c@colnum } { valign} {f},
- wd .code:n = \__tblr_data_gput:neene { cell }
- { \int_use:N \c@rownum } { \int_use:N \c@colnum } { width } {#1},
- bg .code:n = \__tblr_data_gput:neene { cell }
- { \int_use:N \c@rownum } { \int_use:N \c@colnum }
- { background } {#1},
- preto .code:n = \__tblr_cell_preto_text:n {#1},
- appto .code:n = \__tblr_cell_appto_text:n {#1},
- fg .code:n = \__tblr_cell_preto_text:n { \color{#1} },
- font .code:n = \__tblr_cell_preto_text:n { #1 \selectfont },
+ halign .code:n = \__tblr_cell_gput:nn { halign } {#1},
+ valign .code:n = \__tblr_cell_gput:nn { valign } {#1},
+ j .meta:n = { halign = j },
+ l .meta:n = { halign = l },
+ c .meta:n = { halign = c },
+ r .meta:n = { halign = r },
+ t .meta:n = { valign = t },
+ p .meta:n = { valign = t },
+ m .meta:n = { valign = m },
+ b .meta:n = { valign = b },
+ h .meta:n = { valign = h },
+ f .meta:n = { valign = f },
+ wd .code:n = \__tblr_cell_gput:ne { width } {#1},
+ bg .code:n = \__tblr_cell_gput:ne { background } {#1},
+ fg .code:n = \__tblr_cell_gput:ne { foreground } {#1},
+ font .code:n = \__tblr_cell_gput:nn { font } { #1 \selectfont },
+ mode .code:n = \__tblr_cell_gput:nn { mode } {#1},
+ $ .meta:n = { mode = math },
+ $$ .meta:n = { mode = dmath },
+ cmd .code:n = \__tblr_cell_gput:nn { cmd } {#1},
+ preto .code:n = \__tblr_cell_preto_text:n {#1},
+ appto .code:n = \__tblr_cell_appto_text:n {#1},
unknown .code:n = \__tblr_cell_unknown_key:V \l_keys_key_str,
}
+\cs_new_protected:Npn \__tblr_cell_gput:nn #1 #2
+ {
+ \__tblr_data_gput:neenn { cell }
+ { \int_use:N \c@rownum } { \int_use:N \c@colnum } {#1} {#2}
+ }
+\cs_generate_variant:Nn \__tblr_cell_gput:nn { ne }
+
+\cs_new_protected:Npn \__tblr_cell_gput:nnnn #1 #2 #3 #4
+ {
+ \__tblr_data_gput:nnnnn { cell } {#1} {#2} {#3} {#4}
+ }
+\cs_generate_variant:Nn \__tblr_cell_gput:nnnn
+ { nenn, ennn, eenn, nene, enne, eene }
+
\tl_new:N \l__tblr_cell_text_tl
\cs_new_protected:Npn \__tblr_cell_preto_text:n #1
@@ -1480,9 +1681,9 @@
\cs_new_protected:Npn \__tblr_cell_preto_text:nnn #1 #2 #3
{
- \tl_set:Nx \l__tblr_cell_text_tl { \__tblr_text_item:nn { text } { [#1][#2] } }
+ \tl_set:Nx \l__tblr_cell_text_tl { \__tblr_spec_item:nn { text } { [#1][#2] } }
\tl_put_left:Nn \l__tblr_cell_text_tl {#3}
- \__tblr_text_gput:nnV { text } { [#1][#2] } \l__tblr_cell_text_tl
+ \__tblr_spec_gput:nnV { text } { [#1][#2] } \l__tblr_cell_text_tl
}
\cs_generate_variant:Nn \__tblr_cell_preto_text:nnn { nen, enn, een }
@@ -1494,9 +1695,9 @@
\cs_new_protected:Npn \__tblr_cell_appto_text:nnn #1 #2 #3
{
- \tl_set:Nx \l__tblr_cell_text_tl { \__tblr_text_item:ne { text } { [#1][#2] } }
+ \tl_set:Nx \l__tblr_cell_text_tl { \__tblr_spec_item:ne { text } { [#1][#2] } }
\tl_put_right:Nn \l__tblr_cell_text_tl {#3}
- \__tblr_text_gput:neV { text } { [#1][#2] } \l__tblr_cell_text_tl
+ \__tblr_spec_gput:neV { text } { [#1][#2] } \l__tblr_cell_text_tl
}
\cs_generate_variant:Nn \__tblr_cell_appto_text:nnn { nen, enn, een }
@@ -1520,13 +1721,13 @@
{
\int_compare:nNnT { #1 } > { 1 }
{
- \__tblr_prop_gput:nnn {table} {rowspan} {true}
+ \__tblr_prop_gput:nnn { inner } { rowspan } { true }
\__tblr_data_gput:neenn { cell }
{ \int_use:N \c@rownum } { \int_use:N \c@colnum } { rowspan } {#1}
}
\int_compare:nNnT { #2 } > { 1 }
{
- \__tblr_prop_gput:nnn {table} {colspan} {true}
+ \__tblr_prop_gput:nnn { inner } { colspan } { true }
\__tblr_data_gput:neenn { cell }
{ \int_use:N \c@rownum } { \int_use:N \c@colnum } { colspan } {#2}
}
@@ -1546,16 +1747,33 @@
}
\int_compare:nNnF { \l__tblr_i_tl } = { \c@rownum }
{
- \__tblr_text_gput:nen { hline }
+ \__tblr_spec_gput:nen { hline }
{ [\l__tblr_i_tl][\l__tblr_j_tl] / omit } {true}
}
\int_compare:nNnF { \l__tblr_j_tl } = { \c@colnum }
{
- \__tblr_text_gput:nee { vline }
+ \__tblr_spec_gput:nee { vline }
{ [\l__tblr_i_tl][\l__tblr_j_tl] / omit } {true}
}
}
}
+ %% Make continuous borders for multirow cells
+ \tl_set:Nx \l__tblr_n_tl
+ {
+ \int_max:nn
+ {
+ \__tblr_spec_item:ne { vline } { [\int_use:N \c@colnum] / @vline-count }
+ }
+ { 1 }
+ }
+ \int_step_variable:nnNn
+ { \c@rownum } { \int_eval:n { \c@rownum + #1 -1 } } \l__tblr_i_tl
+ {
+ \__tblr_spec_gput:nee { vline }
+ { [\l__tblr_i_tl][\int_use:N \c@colnum](\l__tblr_n_tl) / belowpos } {1}
+ \__tblr_spec_gput:nee { vline }
+ { [\l__tblr_i_tl][\int_eval:n {\c@colnum + #2}](1) / belowpos } {1}
+ }
}
\cs_generate_variant:Nn \__tblr_set_span_spec:nn { VV }
@@ -1678,53 +1896,63 @@
\keys_define:nn { tblr-column }
{
- l .code:n = \__tblr_set_key_for_every_column_cell:nnn
- { \int_use:N \c@colnum } { halign } {l},
- c .code:n = \__tblr_set_key_for_every_column_cell:nnn
- { \int_use:N \c@colnum } { halign } {c},
- r .code:n = \__tblr_set_key_for_every_column_cell:nnn
- { \int_use:N \c@colnum } { halign } {r},
- t .code:n = \__tblr_set_key_for_every_column_cell:nnn
- { \int_use:N \c@colnum } { valign } {t},
- p .code:n = \__tblr_set_key_for_every_column_cell:nnn
- { \int_use:N \c@colnum } { valign } {t},
- m .code:n = \__tblr_set_key_for_every_column_cell:nnn
- { \int_use:N \c@colnum } { valign } {m},
- b .code:n = \__tblr_set_key_for_every_column_cell:nnn
- { \int_use:N \c@colnum } { valign } {b},
- h .code:n = \__tblr_set_key_for_every_column_cell:nnn
- { \int_use:N \c@colnum } { valign } {h},
- f .code:n = \__tblr_set_key_for_every_column_cell:nnn
- { \int_use:N \c@colnum } { valign } {f},
- bg .code:n = \__tblr_set_key_for_every_column_cell:nnn
- { \int_use:N \c@colnum } { background } {#1},
- fg .code:n = \__tblr_preto_text_for_every_column_cell:n { \color{#1} },
- font .code:n = \__tblr_preto_text_for_every_column_cell:n { #1 \selectfont },
- wd .code:n = \__tblr_data_gput:nene { column }
- { \int_use:N \c@colnum } { width } { \dim_eval:n {#1} },
- co .code:n = \__tblr_data_gput:nene { column }
- { \int_use:N \c@colnum } { coefficient } {#1},
- leftsep .code:n = \__tblr_data_gput:nene { column }
- { \int_use:N \c@colnum } { leftsep } { \dim_eval:n {#1} },
- rightsep .code:n = \__tblr_data_gput:nene { column }
- { \int_use:N \c@colnum } { rightsep } { \dim_eval:n {#1} },
- colsep .meta:n = { leftsep = #1, rightsep = #1},
- leftsep+ .code:n = \__tblr_data_gadd_dimen_value:nene { column }
- { \int_use:N \c@colnum } { leftsep } { \dim_eval:n {#1} },
- rightsep+ .code:n = \__tblr_data_gadd_dimen_value:nene { column }
- { \int_use:N \c@colnum } { rightsep } { \dim_eval:n {#1} },
- colsep+ .meta:n = { leftsep+ = #1, rightsep+ = #1},
- unknown .code:n = \__tblr_column_unknown_key:V \l_keys_key_str,
- }
-
-%% #1: column number; #2: key; #3: value
-\cs_new_protected:Npn \__tblr_set_key_for_every_column_cell:nnn #1 #2 #3
+ halign .code:n = \__tblr_column_gput_cell:nn { halign } {#1},
+ valign .code:n = \__tblr_column_gput_cell:nn { valign } {#1},
+ j .meta:n = { halign = j },
+ l .meta:n = { halign = l },
+ c .meta:n = { halign = c },
+ r .meta:n = { halign = r },
+ t .meta:n = { valign = t },
+ p .meta:n = { valign = t },
+ m .meta:n = { valign = m },
+ b .meta:n = { valign = b },
+ h .meta:n = { valign = h },
+ f .meta:n = { valign = f },
+ bg .code:n = \__tblr_column_gput_cell:nn { background } {#1},
+ fg .code:n = \__tblr_column_gput_cell:nn { foreground } {#1},
+ font .code:n = \__tblr_column_gput_cell:nn { font } { #1 \selectfont },
+ mode .code:n = \__tblr_column_gput_cell:nn { mode } {#1},
+ $ .meta:n = { mode = math },
+ $$ .meta:n = { mode = dmath },
+ cmd .code:n = \__tblr_column_gput_cell:nn { cmd } {#1},
+ wd .code:n = \__tblr_column_gput:ne { width } { \dim_eval:n {#1} },
+ co .code:n = \__tblr_column_gput:ne { coefficient } {#1},
+ preto .code:n = \__tblr_preto_text_for_every_column_cell:n {#1},
+ appto .code:n = \__tblr_appto_text_for_every_column_cell:n {#1},
+ leftsep .code:n = \__tblr_column_gput:ne { leftsep } { \dim_eval:n {#1} },
+ rightsep .code:n = \__tblr_column_gput:ne { rightsep } { \dim_eval:n {#1} },
+ colsep .meta:n = { leftsep = #1, rightsep = #1},
+ leftsep+ .code:n = \__tblr_column_gadd_dimen:ne
+ { leftsep } { \dim_eval:n {#1} },
+ rightsep+ .code:n = \__tblr_column_gadd_dimen:ne
+ { rightsep } { \dim_eval:n {#1} },
+ colsep+ .meta:n = { leftsep+ = #1, rightsep+ = #1},
+ unknown .code:n = \__tblr_column_unknown_key:V \l_keys_key_str,
+ }
+
+%% #1: key; #2: value
+\cs_new_protected:Npn \__tblr_column_gput:nn #1 #2
+ {
+ \__tblr_data_gput:nenn { column } { \int_use:N \c@colnum } {#1} {#2}
+ }
+\cs_generate_variant:Nn \__tblr_column_gput:nn { ne }
+
+\cs_new_protected:Npn \__tblr_column_gadd_dimen:nn #1 #2
+ {
+ \__tblr_data_gadd_dimen_value:nenn { column }
+ { \int_use:N \c@colnum } {#1} {#2}
+ }
+\cs_generate_variant:Nn \__tblr_column_gadd_dimen:nn { ne }
+
+%% #1: key; #2: value
+\cs_new_protected:Npn \__tblr_column_gput_cell:nn #1 #2
{
\int_step_inline:nn { \c@rowcount }
{
- \__tblr_data_gput:neenn { cell } {##1} {#1} {#2} {#3}
+ \__tblr_cell_gput:nenn {##1} { \int_use:N \c@colnum } {#1} {#2}
}
}
+\cs_generate_variant:Nn \__tblr_column_gput_cell:nn { ne }
\cs_new_protected:Npn \__tblr_preto_text_for_every_column_cell:n #1
{
@@ -1747,20 +1975,13 @@
\cs_new_protected:Npn \__tblr_column_unknown_key:n #1
{
\regex_match:NnTF \c__tblr_is_number_key_regex {#1}
- {
- \__tblr_data_gput:nene { column }
- { \int_use:N \c@colnum } { coefficient } {#1}
- }
+ { \__tblr_column_gput:ne { coefficient } {#1} }
{
\regex_match:NnTF \c__tblr_is_color_key_regex {#1}
- {
- \__tblr_set_key_for_every_column_cell:nnn
- { \int_use:N \c@colnum } { background } {#1}
- }
+ { \__tblr_column_gput_cell:nn { background } {#1} }
{
\tl_set_rescan:Nnn \l__tblr_v_tl {} {#1}
- \__tblr_data_gput:nene { column }
- { \int_use:N \c@colnum } { width } { \dim_eval:n { \l__tblr_v_tl } }
+ \__tblr_column_gput:ne { width } { \dim_eval:n { \l__tblr_v_tl } }
}
}
}
@@ -1830,55 +2051,76 @@
\keys_define:nn { tblr-row }
{
- l .code:n = \__tblr_set_key_for_every_row_cell:nnn
- { \int_use:N \c@rownum } { halign } {l},
- c .code:n = \__tblr_set_key_for_every_row_cell:nnn
- { \int_use:N \c@rownum } { halign } {c},
- r .code:n = \__tblr_set_key_for_every_row_cell:nnn
- { \int_use:N \c@rownum } { halign } {r},
- t .code:n = \__tblr_set_key_for_every_row_cell:nnn
- { \int_use:N \c@rownum } { valign } {t},
- p .code:n = \__tblr_set_key_for_every_row_cell:nnn
- { \int_use:N \c@rownum } { valign } {t},
- m .code:n = \__tblr_set_key_for_every_row_cell:nnn
- { \int_use:N \c@rownum } { valign } {m},
- b .code:n = \__tblr_set_key_for_every_row_cell:nnn
- { \int_use:N \c@rownum } { valign } {b},
- h .code:n = \__tblr_set_key_for_every_row_cell:nnn
- { \int_use:N \c@rownum } { valign } {h},
- f .code:n = \__tblr_set_key_for_every_row_cell:nnn
- { \int_use:N \c@rownum } { valign } {f},
- bg .code:n = \__tblr_set_key_for_every_row_cell:nnn
- { \int_use:N \c@rownum } { background } {#1},
- fg .code:n = \__tblr_preto_text_for_every_row_cell:n { \color{#1} },
- font .code:n = \__tblr_preto_text_for_every_row_cell:n { #1 \selectfont },
- ht .code:n = \__tblr_data_gput:nene { row } { \int_use:N \c@rownum }
- { height } { \dim_eval:n {#1} },
- co .code:n = \__tblr_data_gput:nene { row } { \int_use:N \c@rownum }
- { coefficient } {#1},
- abovesep .code:n = \__tblr_data_gput:nene { row } { \int_use:N \c@rownum }
- { abovesep } { \dim_eval:n {#1} },
- belowsep .code:n = \__tblr_data_gput:nene { row } { \int_use:N \c@rownum }
- { belowsep } { \dim_eval:n {#1} },
- rowsep .meta:n = { abovesep = #1, belowsep = #1},
- abovesep+ .code:n = \__tblr_data_gadd_dimen_value:nene { row }
- { \int_use:N \c@rownum } { abovesep } { \dim_eval:n {#1} },
- belowsep+ .code:n = \__tblr_data_gadd_dimen_value:nene { row }
- { \int_use:N \c@rownum } { belowsep } { \dim_eval:n {#1} },
- rowsep+ .meta:n = { abovesep+ = #1, belowsep+ = #1},
- nobreak .code:n = \__tblr_prop_gput:nxx { row }
- { [\int_eval:n {\c@rownum - 1}] / nobreak } { true },
- unknown .code:n = \__tblr_row_unknown_key:V \l_keys_key_str,
- }
-
-%% #1: row number; #2: key; #3: value
-\cs_new_protected:Npn \__tblr_set_key_for_every_row_cell:nnn #1 #2 #3
+ halign .code:n = \__tblr_row_gput_cell:nn { halign } {#1},
+ valign .code:n = \__tblr_row_gput_cell:nn { valign } {#1},
+ j .meta:n = { halign = j },
+ l .meta:n = { halign = l },
+ c .meta:n = { halign = c },
+ r .meta:n = { halign = r },
+ t .meta:n = { valign = t },
+ p .meta:n = { valign = t },
+ m .meta:n = { valign = m },
+ b .meta:n = { valign = b },
+ h .meta:n = { valign = h },
+ f .meta:n = { valign = f },
+ bg .code:n = \__tblr_row_gput_cell:nn { background } {#1},
+ fg .code:n = \__tblr_row_gput_cell:nn { foreground } {#1},
+ font .code:n = \__tblr_row_gput_cell:nn { font } { #1 \selectfont },
+ mode .code:n = \__tblr_row_gput_cell:nn { mode } {#1},
+ $ .meta:n = { mode = math },
+ $$ .meta:n = { mode = dmath },
+ cmd .code:n = \__tblr_row_gput_cell:nn { cmd } {#1},
+ ht .code:n = \__tblr_row_gput:ne { height } { \dim_eval:n {#1} },
+ co .code:n = \__tblr_row_gput:ne { coefficient } {#1},
+ preto .code:n = \__tblr_preto_text_for_every_row_cell:n {#1},
+ appto .code:n = \__tblr_appto_text_for_every_row_cell:n {#1},
+ abovesep .code:n = \__tblr_row_gput:ne { abovesep } { \dim_eval:n {#1} },
+ belowsep .code:n = \__tblr_row_gput:ne { belowsep } { \dim_eval:n {#1} },
+ rowsep .meta:n = { abovesep = #1, belowsep = #1},
+ abovesep+ .code:n = \__tblr_row_gadd_dimen:ne { abovesep } { \dim_eval:n {#1} },
+ belowsep+ .code:n = \__tblr_row_gadd_dimen:ne { belowsep } { \dim_eval:n {#1} },
+ rowsep+ .meta:n = { abovesep+ = #1, belowsep+ = #1},
+ break .code:n = \__tblr_row_gput:nn { break } {#1},
+ pagebreak .meta:n = { break = 1 },
+ nopagebreak .meta:n = { break = -1 },
+ unknown .code:n = \__tblr_row_unknown_key:V \l_keys_key_str,
+ }
+
+%% #1: key; #2: value
+\cs_new_protected:Npn \__tblr_row_gput:nn #1 #2
+ {
+ \__tblr_data_gput:nenn { row } { \int_use:N \c@rownum } {#1} {#2}
+ }
+\cs_generate_variant:Nn \__tblr_row_gput:nn { ne }
+
+\cs_new_protected:Npn \__tblr_row_gput_above:nn #1 #2
+ {
+ \__tblr_data_gput:nenn { row } { \int_eval:n { \c@rownum - 1 } } {#1} {#2}
+ }
+\cs_generate_variant:Nn \__tblr_row_gput_above:nn { ne }
+
+\cs_new_protected:Npn \__tblr_row_gadd_dimen:nn #1 #2
+ {
+ \__tblr_data_gadd_dimen_value:nenn { row } { \int_use:N \c@rownum } {#1} {#2}
+ }
+\cs_generate_variant:Nn \__tblr_row_gadd_dimen:nn { ne }
+
+\cs_new_protected:Npn \__tblr_row_gadd_dimen_above:nn #1 #2
+ {
+ \__tblr_data_gadd_dimen_value:nenn { row }
+ { \int_eval:n { \c@rownum - 1 } } {#1} {#2}
+ }
+\cs_generate_variant:Nn \__tblr_row_gadd_dimen_above:nn { ne }
+
+%% #1: key; #2: value
+\cs_new_protected:Npn \__tblr_row_gput_cell:nn #1 #2
{
\int_step_inline:nn { \c@colcount }
{
- \__tblr_data_gput:neenn { cell } {#1} {##1} {#2} {#3}
+ \__tblr_cell_gput:ennn { \int_use:N \c@rownum } {##1} {#1} {#2}
}
}
+\cs_generate_variant:Nn \__tblr_row_gput_cell:nn { ne }
\cs_new_protected:Npn \__tblr_preto_text_for_every_row_cell:n #1
{
@@ -1905,19 +2147,25 @@
}
{
\regex_match:NnTF \c__tblr_is_color_key_regex {#1}
+ { \__tblr_row_gput_cell:nn { background } {#1} }
{
- \__tblr_set_key_for_every_row_cell:nnn
- { \int_use:N \c@rownum } { background } {#1}
- }
- {
- \tl_set_rescan:Nnn \l__tblr_v_tl {} {#1}
- \__tblr_data_gput:nene { row } { \int_use:N \c@rownum }
- { height } { \dim_eval:n { \l__tblr_v_tl } }
+ \tl_set_rescan:Nnn \l__tblr_v_tl {} {#1}
+ \__tblr_row_gput:ne { height } { \dim_eval:n { \l__tblr_v_tl } }
}
}
}
\cs_generate_variant:Nn \__tblr_row_unknown_key:n { V }
+\NewTableCommand \pagebreak
+ {
+ \tblr_set_row:nn {} { break = 1 }
+ }
+
+\NewTableCommand \nopagebreak
+ {
+ \tblr_set_row:nn {} { break = -1 }
+ }
+
%%% --------------------------------------------------------
%% \section{Column Types and Row Types}
%%% --------------------------------------------------------
@@ -2117,6 +2365,7 @@
\NewColumnRowType { l } { Q[l] }
\NewColumnRowType { c } { Q[c] }
\NewColumnRowType { r } { Q[r] }
+\NewColumnRowType { j } { Q[j] }
\NewColumnType { t } [1] { Q[t,wd=#1] }
\NewColumnType { p } [1] { Q[p,wd=#1] }
@@ -2179,7 +2428,10 @@
}
{
\str_if_in:cnTF { g_tblr_used_ \g__tblr_column_or_row_tl _types_str } {#1}
- { \cs:w tblr_ \g__tblr_column_or_row_tl _type_ #1 \cs_end: }
+ {
+ %% Note that #1 may be an active character (see issue #58)
+ \cs:w tblr_ \g__tblr_column_or_row_tl _type_ \token_to_str:N #1 \cs_end:
+ }
{
\msg_error:nnVn { tabularray } { unknown-colrow-type }
\g__tblr_column_or_row_tl {#1}
@@ -2205,43 +2457,102 @@
}
%%% --------------------------------------------------------
-%% \section{Tabularray Environments}
+%% \section{Set Environments and New Environments}
%%% --------------------------------------------------------
+\tl_new:N \l__tblr_initial_tblr_outer_tl
+\tl_set:Nn \l__tblr_initial_tblr_outer_tl
+ {
+ halign = c, valign = m, headsep = 6pt, footsep = 6pt,
+ presep = 1.5\bigskipamount, postsep = 1.5\bigskipamount,
+ }
+
+%% #1: env name; #2: specifications
+\NewDocumentCommand \SetTblrInner { O{tblr} m }
+ {
+ \tl_put_right:cn { l__tblr_default_ #1 _inner_tl } { , #2 }
+ \ignorespaces
+ }
+\cs_new_eq:NN \SetTblrDefault \SetTblrInner
+
+%% #1: env name; #2: specifications
+\NewDocumentCommand \SetTblrOuter { O{tblr} m }
+ {
+ \tl_put_right:cn { l__tblr_default_ #1 _outer_tl } { , #2 }
+ \ignorespaces
+ }
+
+%% #1: env name
+\NewDocumentCommand \NewTblrEnviron { m }
+ {
+ \tl_new:c { l__tblr_default_ #1 _outer_tl }
+ \tl_set_eq:cN { l__tblr_default_ #1 _outer_tl } \l__tblr_initial_tblr_outer_tl
+ \tl_new:c { l__tblr_default_ #1 _inner_tl }
+ \NewDocumentEnvironment {#1} { O{c} m +b }
+ {
+ \__tblr_environ_code:nnnn {#1} {##1} {##2} {##3}
+ } { }
+ \ignorespaces
+ }
+
+%% Create tblr and longtblr environments
+\NewTblrEnviron { tblr }
+\NewTblrEnviron { longtblr }
+\SetTblrOuter [ longtblr ] { long }
+\NewTblrEnviron { talltblr }
+\SetTblrOuter [ talltblr ] { tall }
+
\tl_new:N \l__tblr_env_name_tl
\bool_new:N \l__tblr_math_mode_bool
-\NewDocumentEnvironment { tblr } { O{c} m +b }
+%% Main environment code
+\cs_new_protected:Npn \__tblr_environ_code:nnnn #1 #2 #3 #4
{
- \tl_set:Nn \l__tblr_env_name_tl { tblr }
+ \int_gincr:N \g__tblr_table_count_int
+ \tl_set:Nn \l__tblr_env_name_tl {#1}
\mode_if_math:TF
{ \bool_set_true:N \l__tblr_math_mode_bool }
{ \bool_set_false:N \l__tblr_math_mode_bool }
- \buildtblr {#1} {#2} {#3}
- } { }
+ \__tblr_builder:nnn {#2} {#3} {#4}
+ }
%% Read, split and build the table
-
-\cs_new_protected:Npn \buildtblr #1 #2 #3
+\cs_new_protected:Npn \__tblr_builder:nnn #1 #2 #3
{
- \mode_leave_vertical:
\int_gincr:N \g_tblr_level_int
\__tblr_clear_prop_lists:
- \__tblr_clear_text_lists:
+ \__tblr_clear_spec_lists:
+ \LogTblrTracing { step = init ~ table ~ outer ~ spec}
+ \__tblr_init_table_outer_spec:
+ \LogTblrTracing { step = parse ~ table ~ options }
+ \__tblr_parse_table_option:n {#1}
+ \LogTblrTracing { outer }
+ \LogTblrTracing { option }
\__tblr_enable_table_commands:
- \__tblr_split_table:n { #3 }
+ \LogTblrTracing { step = split ~ table}
+ \__tblr_split_table:n {#3}
\LogTblrTracing { command }
- \bool_if:NT \g__tblr_use_intarray_bool { \__tblr_initial_table_data: }
- \__tblr_initial_table_spec:
- \LogTblrTracing { table }
- \__tblr_parse_table_spec:n { #2 }
+ \bool_if:NT \g__tblr_use_intarray_bool { \__tblr_init_table_data: }
+ \LogTblrTracing { step = init ~ table ~ inner ~ spec}
+ \__tblr_init_table_inner_spec:
+ \LogTblrTracing { inner }
+ \LogTblrTracing { step = parse ~ table ~ inner ~ spec}
+ \__tblr_parse_table_spec:n {#2}
+ \LogTblrTracing { step = execute ~ table ~ commands}
\__tblr_execute_table_commands:
\__tblr_disable_table_commands:
+ \LogTblrTracing { step = calculate ~ cell ~ and ~ line ~ sizes}
+ \__tblr_enable_content_commands:
\__tblr_calc_cell_and_line_sizes:
- \__tblr_build_whole:n { #1 }
+ \LogTblrTracing { step = build ~ the ~ whole ~ table}
+ \__tblr_build_whole:
\int_gdecr:N \g_tblr_level_int
}
+%%% --------------------------------------------------------
+%% \section{Split Table Contents}
+%%% --------------------------------------------------------
+
%% Insert and remove braces for nesting environments inside cells
%% These make line split and cell split workable
%% We need to replace N times for N level nestings
@@ -2272,35 +2583,54 @@
\regex_replace_all:NVN \c__tblr_remove_braces_regex \c__tblr_remove_braces_tl #1
}
-%% Split table content to cells and store them
-%% #1: table content
+\tl_new:N \l__tblr_body_tl
+\tl_new:N \l__tblr_expand_tl
+\seq_new:N \l__tblr_lines_seq
-\seq_new:N \l_tblr_lines_seq
+%% Expand every occurrence of the specified macro once
+%% #1: table content; #2: macro to be expanded
+\cs_new_protected:Npn \__tblr_expand_table_body:nN #1 #2
+ {
+ \tl_clear:N \l__tblr_body_tl
+ \cs_set_protected:Npn \__tblr_expand_table_body_aux:w ##1 #2
+ {
+ \tl_put_right:Nn \l__tblr_body_tl {##1}
+ \peek_meaning:NTF \q_stop
+ { \use_none:n }
+ { \exp_last_unbraced:NV \__tblr_expand_table_body_aux:w #2 }
+ }
+ \__tblr_expand_table_body_aux:w #1 #2 \q_stop
+ }
+%% Split table content to cells and store them
+%% #1: table content
\cs_new_protected:Npn \__tblr_split_table:n #1
{
+ \tl_set:Nx \l__tblr_expand_tl { \__tblr_spec_item:nn { outer } { expand } }
+ \tl_set:Nx \l__tblr_expand_tl { \tl_head:N \l__tblr_expand_tl }
+ \tl_if_empty:NTF \l__tblr_expand_tl
+ { \tl_set:Nn \l__tblr_body_tl {#1} }
+ { \exp_args:NnV \__tblr_expand_table_body:nN {#1} \l__tblr_expand_tl }
\int_zero:N \c@rowcount
\int_zero:N \c@colcount
- \__tblr_split_table_to_lines:nN { #1 } \l_tblr_lines_seq
- \__tblr_split_lines_to_cells:N \l_tblr_lines_seq
+ \__tblr_split_table_to_lines:NN \l__tblr_body_tl \l__tblr_lines_seq
+ \__tblr_split_lines_to_cells:N \l__tblr_lines_seq
}
%% Split table content to a sequence of lines
-%% #1: table content, #2: resulting sequence of lines
-\cs_new_protected:Npn \__tblr_split_table_to_lines:nN #1 #2
+%% #1: tl with table contents, #2: resulting sequence of lines
+\cs_new_protected:Npn \__tblr_split_table_to_lines:NN #1 #2
{
- \tl_set:Nn \l_tmpa_tl { #1 }
- \__tblr_insert_braces:N \l_tmpa_tl
- \seq_set_split:NnV \l_tmpa_seq { \\ } \l_tmpa_tl
+ \__tblr_insert_braces:N #1
+ \seq_set_split:NnV \l_tmpa_seq { \\ } #1
\seq_clear:N #2
\seq_map_inline:Nn \l_tmpa_seq
{
\tl_if_head_eq_meaning:nNTF {##1} *
{
- \tl_set:Nn \l__tblr_b_tl { \SetRow{nobreak} }
+ \tl_set:Nn \l__tblr_b_tl { \SetRow { break = -1 } }
\tl_set:Nx \l__tblr_c_tl { \tl_tail:n {##1} }
\tl_trim_spaces:N \l__tblr_c_tl %% Ignore spaces between * and [dimen]
- \tl_log:N \l__tblr_c_tl
\tl_if_head_eq_meaning:VNT \l__tblr_c_tl [
{
\tl_put_right:Nn \l__tblr_b_tl { \RowBefore@AddBelowSep }
@@ -2346,16 +2676,21 @@
{
\tl_set:Nn \l_tmpa_tl { ##1 }
\__tblr_remove_braces:N \l_tmpa_tl
+ \__tblr_trim_par_space_tokens:N \l_tmpa_tl
\int_incr:N \c@colnum
\__tblr_extract_table_commands:N \l_tmpa_tl
- \__tblr_text_gput:neV { text } { [#1][\int_use:N \c@colnum] } \l_tmpa_tl
+ \__tblr_trim_par_space_tokens:N \l_tmpa_tl
+ \__tblr_spec_gput:neV { text } { [#1][\int_use:N \c@colnum] } \l_tmpa_tl
\__tblr_add_multicolumn_empty_cell:
}
%% Decrease row count by 1 if the last row has only one empty cell text
%% We need to do it here since the > or < column type may add text to cells
- \bool_lazy_and:nnTF
- { \int_compare_p:nNn {\c@colnum} = {1} }
- { \tl_if_empty_p:N \l_tmpa_tl }
+ \bool_lazy_all:nTF
+ {
+ { \int_compare_p:nNn {#1} = {\c@rowcount} }
+ { \int_compare_p:nNn {\c@colnum} = {1} }
+ { \tl_if_empty_p:N \l_tmpa_tl }
+ }
{ \int_decr:N \c@rowcount }
{
\__tblr_prop_gput:nnx
@@ -2367,13 +2702,22 @@
}
}
+\regex_const:Nn \c__tblr_trim_left_par_space_regex { ^ \c{par} ? \s * }
+\regex_const:Nn \c__tblr_trim_right_space_par_regex { \s * \c{par} ? $ }
+
+\cs_new_protected:Npn \__tblr_trim_par_space_tokens:N #1
+ {
+ \regex_replace_once:NnN \c__tblr_trim_left_par_space_regex {} #1
+ \regex_replace_once:NnN \c__tblr_trim_right_space_par_regex {} #1
+ }
+
%% Add empty cells after the \multicolumn span cell
\cs_new_protected:Npn \__tblr_add_multicolumn_empty_cell:
{
\int_step_inline:nn { \l__multicolumn_cell_number_int - 1 }
{
\int_incr:N \c@colnum
- \__tblr_text_gput:nen { text }
+ \__tblr_spec_gput:nen { text }
{ [\int_use:N \c@rownum][\int_use:N \c@colnum] } { }
}
}
@@ -2395,7 +2739,7 @@
\tl_clear:N \l__tblr_saved_table_commands_before_cell_text_tl
\tl_clear:N \l__tblr_saved_cell_text_after_table_commands_tl
\int_set:Nn \l__multicolumn_cell_number_int {1}
- \exp_last_unbraced:NV \__tblr_extract_table_commands_next:w #1 \scan_stop:
+ \exp_last_unbraced:NV \__tblr_extract_table_commands_next:n #1 \q_stop
\tl_if_empty:NF \l__tblr_saved_table_commands_before_cell_text_tl
{
\__tblr_prop_gput:nxV { command }
@@ -2405,26 +2749,26 @@
\tl_set_eq:NN #1 \l__tblr_saved_cell_text_after_table_commands_tl
}
-%% #1 maybe a single token or multiple tokens given in braces
-\cs_new_protected:Npn \__tblr_extract_table_commands_next:w #1
+%% #1 maybe a single token or multiple tokens from a pair of braces
+\cs_new_protected:Npn \__tblr_extract_table_commands_next:n #1
{
- \clist_if_in:NnTF \g__tblr_table_commands_clist { #1 }
+ \tl_if_single_token:nTF {#1}
{
- \clist_if_in:NnTF \g__tblr_table_commands_unbrace_next_clist { #1 }
- { \bool_set_true:N \l__tblr_table_command_unbrace_next_bool }
- { \bool_set_false:N \l__tblr_table_command_unbrace_next_bool }
- \token_if_eq_meaning:NNTF #1 \multicolumn
- { \__tblr_extract_multicolumn_command:Nn #1 }
- { \__tblr_extract_one_table_command:N #1 }
- }
- {
- \tl_if_single_token:nTF {#1}
+ \clist_if_in:NnTF \g__tblr_table_commands_clist { #1 }
+ {
+ \clist_if_in:NnTF \g__tblr_table_commands_unbrace_next_clist { #1 }
+ { \bool_set_true:N \l__tblr_table_command_unbrace_next_bool }
+ { \bool_set_false:N \l__tblr_table_command_unbrace_next_bool }
+ \token_if_eq_meaning:NNTF #1 \multicolumn
+ { \__tblr_extract_multicolumn_command:Nn #1 }
+ { \__tblr_extract_one_table_command:N #1 }
+ }
{
- \token_if_eq_meaning:NNF #1 \scan_stop:
+ \token_if_eq_meaning:NNF #1 \q_stop
{ \__tblr_save_real_cell_text:w #1 }
}
- { \__tblr_save_real_cell_text:w {#1} }
}
+ { \__tblr_save_real_cell_text:w {#1} }
}
\cs_new_protected:Npn \__tblr_extract_multicolumn_command:Nn #1 #2
@@ -2469,30 +2813,30 @@
}
{
\bool_if:NTF \l__tblr_table_command_unbrace_next_bool
- { \__tblr_last_unbraced:Nn \__tblr_extract_table_commands_next:w }
- { \__tblr_extract_table_commands_next:w }
+ { \__tblr_last_unbraced:Nn \__tblr_extract_table_commands_next:n }
+ { \__tblr_extract_table_commands_next:n }
}
}
\cs_new_protected:Npn \__tblr_last_unbraced:Nn #1 #2 { #1 #2 }
%% The outermost set of braces of cell text #1 will be removed
-\cs_new_protected:Npn \__tblr_save_real_cell_text:w #1 \scan_stop:
+\cs_new_protected:Npn \__tblr_save_real_cell_text:w #1 \q_stop
{
\tl_set:Nn \l__tblr_saved_cell_text_after_table_commands_tl {#1}
}
%%% --------------------------------------------------------
-%% \section{Initial Table Specifications}
+%% \section{Initialize Table Inner Specifications}
%%% --------------------------------------------------------
-\prop_gset_from_keyval:Nn \g__tblr_default_tblr_table_prop
+\prop_gset_from_keyval:Nn \g__tblr_initial_table_prop
{
stretch = 1,
rulesep = 2pt,
}
-\prop_gset_from_keyval:Nn \g__tblr_default_tblr_rows_prop
+\prop_gset_from_keyval:Nn \g__tblr_initial_rows_prop
{
abovesep = 2pt,
belowsep = 2pt,
@@ -2503,7 +2847,7 @@
@row-lower = 0pt,
}
-\prop_gset_from_keyval:Nn \g__tblr_default_tblr_columns_prop
+\prop_gset_from_keyval:Nn \g__tblr_initial_columns_prop
{
leftsep = 6pt,
rightsep = 6pt,
@@ -2512,7 +2856,7 @@
@col-width = 0pt,
}
-\prop_gset_from_keyval:Nn \g__tblr_default_tblr_cells_prop
+\prop_gset_from_keyval:Nn \g__tblr_initial_cells_prop
{
halign = l,
valign = t,
@@ -2522,97 +2866,93 @@
omit = 0,
}
-\prop_gset_from_keyval:Nn \g__tblr_default_tblr_hlines_prop
+\prop_gset_from_keyval:Nn \g__tblr_initial_hlines_prop
{
@hline-count = 0,
}
-\prop_gset_from_keyval:Nn \g__tblr_default_tblr_vlines_prop
+\prop_gset_from_keyval:Nn \g__tblr_initial_vlines_prop
{
@vline-count = 0,
}
-\cs_new_protected:Npn \__tblr_initial_table_spec:
+\tl_new:N \l__tblr_inner_spec_measure_tl
+\tl_new:N \l__tblr_inner_spec_verb_tl
+
+\cs_new_protected:Npn \__tblr_init_table_inner_spec:
{
- \prop_map_inline:cn { g__tblr_default_ \l__tblr_env_name_tl _table_prop }
+ \prop_map_inline:Nn \g__tblr_initial_table_prop
{
- \__tblr_prop_gput:nxn { table } { ##1 } {##2}
+ \__tblr_prop_gput:nxn { inner } { ##1 } {##2}
}
\int_step_variable:nNn { \c@rowcount } \l__tblr_i_tl
{
- \prop_map_inline:cn { g__tblr_default_ \l__tblr_env_name_tl _rows_prop }
+ \prop_map_inline:Nn \g__tblr_initial_rows_prop
{
\__tblr_data_gput:nVnn { row } \l__tblr_i_tl {##1} {##2}
}
- \prop_map_inline:cn { g__tblr_default_ \l__tblr_env_name_tl _hlines_prop }
+ \prop_map_inline:Nn \g__tblr_initial_hlines_prop
{
- \__tblr_text_gput:nen { hline } { [\l__tblr_i_tl] / ##1 } {##2}
+ \__tblr_spec_gput:nen { hline } { [\l__tblr_i_tl] / ##1 } {##2}
}
\int_step_variable:nNn { \c@colcount } \l__tblr_j_tl
{
- \prop_map_inline:cn
- { g__tblr_default_ \l__tblr_env_name_tl _cells_prop }
+ \prop_map_inline:Nn \g__tblr_initial_cells_prop
{
\__tblr_data_gput:neeen { cell }
{ \l__tblr_i_tl } { \l__tblr_j_tl } {##1} {##2}
}
}
}
- \prop_map_inline:cn { g__tblr_default_ \l__tblr_env_name_tl _hlines_prop }
+ \prop_map_inline:Nn \g__tblr_initial_hlines_prop
{
- \__tblr_text_gput:nen { hline }
+ \__tblr_spec_gput:nen { hline }
{ [\int_eval:n { \c@rowcount + 1}] / ##1 } {##2}
}
\int_step_variable:nNn { \c@colcount } \l__tblr_j_tl
{
- \prop_map_inline:cn { g__tblr_default_ \l__tblr_env_name_tl _columns_prop }
+ \prop_map_inline:Nn \g__tblr_initial_columns_prop
{
\__tblr_data_gput:nenn { column } { \l__tblr_j_tl } {##1} {##2}
}
- \prop_map_inline:cn { g__tblr_default_ \l__tblr_env_name_tl _vlines_prop }
+ \prop_map_inline:Nn \g__tblr_initial_vlines_prop
{
- \__tblr_text_gput:nen { vline } { [\l__tblr_j_tl] / ##1 } {##2}
+ \__tblr_spec_gput:nen { vline } { [\l__tblr_j_tl] / ##1 } {##2}
}
}
- \prop_map_inline:cn { g__tblr_default_ \l__tblr_env_name_tl _vlines_prop }
+ \prop_map_inline:Nn \g__tblr_initial_vlines_prop
{
- \__tblr_text_gput:nen { vline }
+ \__tblr_spec_gput:nen { vline }
{ [\int_eval:n { \c@colcount + 1}] / ##1 } {##2}
}
- \keys_set:nv { tblr } { l__tblr_default_ \l__tblr_env_name_tl _tl }
- }
-
-\tl_new:N \l__tblr_default_tblr_tl
-
-%% #1: env name; #2: options
-\NewDocumentCommand \SetTabularrayDefault { O{tblr} m }
- {
- \tl_put_right:cn { l__tblr_default_ #1 _tl } { , #2 }
+ \tl_clear:N \l__tblr_inner_spec_measure_tl
+ \tl_clear:N \l__tblr_inner_spec_verb_tl
+ \keys_set:nv { tblr } { l__tblr_default_ \l__tblr_env_name_tl _inner_tl }
}
-\cs_new_eq:NN \SetTblrDefault \SetTabularrayDefault
%%% --------------------------------------------------------
-%% \section{Parse Table Specifications}
+%%> \section{Parse Table Inner Specifications}
%%% --------------------------------------------------------
\clist_new:N \g__tblr_table_known_keys_clist
\clist_gset:Nn \g__tblr_table_known_keys_clist
{
- long, colspec, rowspec, width, hspan, stretch,
+ colspec, rowspec, width, hspan, vspan, stretch, verb,
column, row, cell, vline, hline, columns, rows, cells, vlines, hlines,
leftsep, rightsep, colsep, abovesep, belowsep, rowsep, rulesep,
+ rowhead, rowfoot,
}
-\bool_new:N \l__tblr_long_table_bool
-
\keys_define:nn { tblr }
{
- long .bool_set:N = \l__tblr_long_table_bool,
colspec .code:n = \__tblr_parse_colrow_spec:nn { column } {#1},
rowspec .code:n = \__tblr_parse_colrow_spec:nn { row } {#1},
width .code:n = \__tblr_keys_gput:nx { width } { \dim_eval:n {#1} },
hspan .code:n = \__tblr_keys_gput:nn { hspan } {#1},
+ vspan .code:n = \__tblr_keys_gput:nn { vspan } {#1},
stretch .code:n = \__tblr_keys_gput:nn { stretch } {#1},
+ verb .tl_set:N = \l__tblr_inner_spec_verb_tl,
+ verb .default:n = lite,
columns .code:n = \__tblr_set_every_column_aux:n {#1},
rows .code:n = \__tblr_set_every_row_aux:n {#1},
cells .code:n = \__tblr_set_every_cell_aux:n {#1},
@@ -2625,6 +2965,8 @@
belowsep .code:n = \tblr_set_every_row:nn { } { belowsep = #1 },
rowsep .meta:n = { abovesep = #1, belowsep = #1 },
rulesep .code:n = \__tblr_keys_gput:nn { rulesep } {#1},
+ rowhead .code:n = \__tblr_keys_gput:nn { rowhead } {#1},
+ rowfoot .code:n = \__tblr_keys_gput:nn { rowfoot } {#1},
unknown .code:n = \__tblr_table_special_key:Vn \l_keys_key_str {#1},
}
@@ -2658,13 +3000,108 @@
{ \__tblr_parse_colrow_spec:nn { column } {#1} }
}
-\cs_new_protected:Npn \__tblr_keys_gput:nn #1 #2
+\cs_new_protected:Npn \__tblr_keys_gput:nn #1 #2
{
- \__tblr_prop_gput:nnn { table } {#1} {#2}
+ \__tblr_prop_gput:nnn { inner } {#1} {#2}
}
\cs_generate_variant:Nn \__tblr_keys_gput:nn { nx }
%%% --------------------------------------------------------
+%% \section{Initialize and Parse Table Outer Specifications}
+%%% --------------------------------------------------------
+
+%% #1: theme names; #2: template and style commands
+\NewDocumentCommand \NewTblrTheme { m +m }
+ {
+ \tl_set:cn { g__tblr_theme_ #1 _code_tl } {#2}
+ \ignorespaces
+ }
+
+\cs_new_protected:Npn \__tblr_use_theme:n #1
+ {
+ \ignorespaces
+ \tl_use:c { g__tblr_theme_ #1 _code_tl }
+ }
+
+\cs_new_protected:Npn \__tblr_init_table_outer_spec:
+ {
+ \keys_set:nv { tblr-outer } { l__tblr_default_ \l__tblr_env_name_tl _outer_tl }
+ }
+
+\cs_new_protected:Npn \__tblr_parse_table_option:n #1
+ {
+ \keys_set:nn { tblr-outer } {#1}
+ }
+
+\keys_define:nn { tblr-outer }
+ {
+ long .code:n = \__tblr_outer_gput_spec:nn { long } { true },
+ tall .code:n = \__tblr_outer_gput_spec:nn { tall } { true },
+ halign .code:n = \__tblr_outer_gput_spec:nn { halign } {#1},
+ valign .code:n = \__tblr_outer_gput_spec:nn { valign } {#1},
+ l .meta:n = { halign = l },
+ c .meta:n = { halign = c },
+ r .meta:n = { halign = r },
+ t .meta:n = { valign = t },
+ m .meta:n = { valign = m },
+ b .meta:n = { valign = b },
+ expand .code:n = \__tblr_outer_gput_spec:nn { expand } {#1},
+ headsep .code:n = \__tblr_outer_gput_spec:nn { headsep } {#1},
+ footsep .code:n = \__tblr_outer_gput_spec:nn { footsep } {#1},
+ presep .code:n = \__tblr_outer_gput_spec:nn { presep } {#1},
+ postsep .code:n = \__tblr_outer_gput_spec:nn { postsep } {#1},
+ theme .code:n = \__tblr_use_theme:n {#1},
+ caption .code:n = \__tblr_outer_gput_spec:nn { caption } {#1},
+ entry .code:n = \__tblr_outer_gput_spec:nn { entry } {#1},
+ label .code:n = \__tblr_outer_gput_spec:nn { label } {#1},
+ unknown .code:n = \__tblr_table_option_key:Vn \l_keys_key_str {#1},
+ }
+
+\cs_new_protected:Npn \__tblr_outer_gput_spec:nn #1 #2
+ {
+ \__tblr_spec_gput:nen { outer } {#1} {#2}
+ }
+
+\regex_const:Nn \c__tblr_option_key_name_regex { ^ [A-Za-z\-] + $ }
+
+\msg_new:nnn { tabularray } { unknown-outer-key }
+ { Unknown ~ outer ~ key ~ name ~ #1! }
+
+\cs_new_protected:Npn \__tblr_table_option_key:nn #1 #2
+ {
+ \regex_match:NnTF \c__tblr_option_key_name_regex {#1}
+ { \msg_error:nnn { tabularray } { unknown-outer-key } {#1} }
+ {
+ \regex_extract_once:NnNT \c__tblr_split_key_name_regex {#1} \l_tmpa_seq
+ {
+ \tl_set:Nx \l__tblr_a_tl { \seq_item:Nn \l_tmpa_seq {2} }
+ \tl_set_rescan:Nnx \l__tblr_b_tl {} { \seq_item:Nn \l_tmpa_seq {3} }
+ \tl_set:Nx \l__tblr_c_tl { \tl_head:N \l__tblr_b_tl }
+ \use:c { __tblr_outer_gput_ \l__tblr_a_tl :Vn } \l__tblr_c_tl {#2}
+ }
+ }
+ }
+\cs_generate_variant:Nn \__tblr_table_option_key:nn { Vn }
+
+\cs_new_protected:Npn \__tblr_outer_gput_note:nn #1 #2
+ {
+ \__tblr_prop_gput:nnn { note } {#1} {#2}
+ }
+\cs_generate_variant:Nn \__tblr_outer_gput_note:nn { Vn }
+
+\cs_new_protected:Npn \__tblr_outer_gput_remark:nn #1 #2
+ {
+ \__tblr_prop_gput:nnn { remark } {#1} {#2}
+ }
+\cs_generate_variant:Nn \__tblr_outer_gput_remark:nn { Vn }
+
+\cs_new_protected:Npn \__tblr_outer_gput_more:nn #1 #2
+ {
+ \__tblr_prop_gput:nnn { more } {#1} {#2}
+ }
+\cs_generate_variant:Nn \__tblr_outer_gput_more:nn { Vn }
+
+%%% --------------------------------------------------------
%% \section{Typeset and Calculate Sizes}
%%% --------------------------------------------------------
@@ -2687,7 +3124,7 @@
\cs_new_protected:Npn \__tblr_make_strut_box:
{
- \tl_set:Nx \l__tblr_s_tl { \__tblr_prop_item:ne { table } { stretch } }
+ \tl_set:Nx \l__tblr_s_tl { \__tblr_prop_item:ne { inner } { stretch } }
\hbox_set:Nn \l__tblr_strut_ht_box
{ \vrule height \l__tblr_s_tl \box_ht:N \strutbox width ~ 0pt }
\hbox_set:Nn \l__tblr_strut_dp_box
@@ -2725,11 +3162,11 @@
{
\dim_zero:N \l__tblr_w_dim
\tl_set:Nx \l__tblr_n_tl
- { \__tblr_text_item:ne { vline } { [#2] / @vline-count } }
+ { \__tblr_spec_item:ne { vline } { [#2] / @vline-count } }
\int_compare:nNnT { \l__tblr_n_tl } > {0}
{
\tl_set:Nx \l__tblr_s_tl
- { \__tblr_prop_item:ne { table } { rulesep } }
+ { \__tblr_prop_item:ne { inner } { rulesep } }
\int_step_inline:nn { \l__tblr_n_tl }
{
\vbox_set_to_ht:Nnn \l__tblr_b_box {1pt}
@@ -2738,14 +3175,14 @@
{#1} {#2} {##1} {1pt} {1pt}
}
\tl_set:Nx \l__tblr_w_tl { \dim_eval:n { \box_wd:N \l__tblr_b_box } }
- \__tblr_text_gput_if_larger:nee { vline }
+ \__tblr_spec_gput_if_larger:nee { vline }
{ [#2](##1) / @vline-width } { \l__tblr_w_tl }
\dim_add:Nn \l__tblr_w_dim { \l__tblr_w_tl }
\dim_add:Nn \l__tblr_w_dim { \l__tblr_s_tl }
}
\dim_add:Nn \l__tblr_w_dim { - \l__tblr_s_tl }
}
- \__tblr_text_gput_if_larger:nee { vline }
+ \__tblr_spec_gput_if_larger:nee { vline }
{ [#2]/ @vline-width } { \dim_use:N \l__tblr_w_dim }
}
@@ -2756,10 +3193,10 @@
{
\group_begin:
\tl_set:Nx \l__tblr_w_tl
- { \__tblr_text_item:ne { vline } { [#1][#2](#3) / wd } }
+ { \__tblr_spec_item:ne { vline } { [#1][#2](#3) / wd } }
\tl_if_empty:NF \l__tblr_w_tl { \dim_set:Nn \rulewidth { \l__tblr_w_tl } }
\tl_set:Nx \l__tblr_d_tl
- { \__tblr_text_item:ne { vline } { [#1][#2](#3) / @dash } }
+ { \__tblr_spec_item:ne { vline } { [#1][#2](#3) / @dash } }
\tl_set:Nx \l__tblr_a_tl { \tl_head:N \l__tblr_d_tl }
\tl_set:Nx \l__tblr_b_tl { \tl_tail:N \l__tblr_d_tl }
\exp_args:NV \tl_if_eq:NNTF \l__tblr_a_tl \@tblr@dash
@@ -2768,10 +3205,13 @@
\xleaders \l__tblr_b_tl \vfil
}
{
+ %% When using text as vline, we need to omit abovepos and belowpos.
+ \unskip
\hbox_set:Nn \l__tblr_d_box { \l__tblr_b_tl }
\box_set_ht:Nn \l__tblr_d_box {#4}
\box_set_dp:Nn \l__tblr_d_box {#5}
\box_use:N \l__tblr_d_box
+ \vss
}
\group_end:
}
@@ -2783,11 +3223,11 @@
{
\dim_zero:N \l__tblr_h_dim
\tl_set:Nx \l__tblr_n_tl
- { \__tblr_text_item:ne { hline } { [#1] / @hline-count } }
+ { \__tblr_spec_item:ne { hline } { [#1] / @hline-count } }
\int_compare:nNnT { \l__tblr_n_tl } > {0}
{
\tl_set:Nx \l__tblr_s_tl
- { \__tblr_prop_item:ne { table } { rulesep } }
+ { \__tblr_prop_item:ne { inner } { rulesep } }
\int_step_inline:nn { \l__tblr_n_tl }
{
\hbox_set_to_wd:Nnn \l__tblr_b_box {1pt}
@@ -2797,14 +3237,14 @@
\dim_eval:n
{ \box_ht:N \l__tblr_b_box + \box_dp:N \l__tblr_b_box }
}
- \__tblr_text_gput_if_larger:nee { hline }
+ \__tblr_spec_gput_if_larger:nee { hline }
{ [#1](##1) / @hline-height } { \l__tblr_h_tl }
\dim_add:Nn \l__tblr_h_dim { \l__tblr_h_tl }
\dim_add:Nn \l__tblr_h_dim { \l__tblr_s_tl }
}
\dim_add:Nn \l__tblr_h_dim { - \l__tblr_s_tl }
}
- \__tblr_text_gput_if_larger:nee { hline }
+ \__tblr_spec_gput_if_larger:nee { hline }
{ [#1] / @hline-height } { \dim_use:N \l__tblr_h_dim }
}
@@ -2814,10 +3254,10 @@
{
\group_begin:
\tl_set:Nx \l__tblr_w_tl
- { \__tblr_text_item:ne { hline } { [#1][#2](#3) / wd } }
+ { \__tblr_spec_item:ne { hline } { [#1][#2](#3) / wd } }
\tl_if_empty:NF \l__tblr_w_tl { \dim_set:Nn \rulewidth { \l__tblr_w_tl } }
\tl_set:Nx \l__tblr_d_tl
- { \__tblr_text_item:ne { hline } { [#1][#2](#3) / @dash } }
+ { \__tblr_spec_item:ne { hline } { [#1][#2](#3) / @dash } }
\tl_set:Nx \l__tblr_a_tl { \tl_head:N \l__tblr_d_tl }
\tl_set:Nx \l__tblr_b_tl { \tl_tail:N \l__tblr_d_tl }
\exp_args:NV \tl_if_eq:NNTF \l__tblr_a_tl \@tblr@dash
@@ -2893,9 +3333,11 @@
{
\int_incr:N \c@rownum
\int_zero:N \c@colnum
+ \__tblr_update_rowsep_registers:
\tl_set:Nx \l__tblr_h_tl
- { \__tblr_data_item:nen { row } { \int_use:N \c@rownum } { height } }
- \tl_if_empty:NF \l__tblr_h_tl
+ { \__tblr_data_item:nen { row } { \int_use:N \c@rownum } { height } }
+ %% We didn't initialize row heights with -1pt
+ \dim_compare:nNnF { \l__tblr_h_tl } = { 0pt }
{
\__tblr_data_gput:nenV { row } { \int_use:N \c@rownum }
{ @row-height } \l__tblr_h_tl
@@ -2903,6 +3345,7 @@
\int_step_inline:nn { \c@colcount }
{
\int_incr:N \c@colnum
+ \__tblr_update_colsep_registers:
\__tblr_measure_cell_update_sizes:nnNNNN
{ \int_use:N \c@rownum }
{ \int_use:N \c@colnum }
@@ -2912,6 +3355,31 @@
\g__tblr_cell_foot_dim
}
}
+ \int_step_inline:nn { \c@colcount }
+ {
+ \tl_set:Nx \l__tblr_w_tl
+ { \__tblr_data_item:nen { column } {##1} { width } }
+ \dim_compare:nNnF { \l__tblr_w_tl } < { 0pt }
+ {
+ \__tblr_data_gput:nenV { column } {##1} { @col-width } \l__tblr_w_tl
+ }
+ }
+ }
+
+\cs_new_protected:Npn \__tblr_update_rowsep_registers:
+ {
+ \dim_set:Nn \abovesep
+ { \__tblr_data_item:nen { row } { \int_use:N \c@rownum } { abovesep } }
+ \dim_set:Nn \belowsep
+ { \__tblr_data_item:nen { row } { \int_use:N \c@rownum } { belowsep } }
+ }
+
+\cs_new_protected:Npn \__tblr_update_colsep_registers:
+ {
+ \dim_set:Nn \leftsep
+ { \__tblr_data_item:nen { column } { \int_use:N \c@colnum } { leftsep } }
+ \dim_set:Nn \rightsep
+ { \__tblr_data_item:nen { column } { \int_use:N \c@colnum } { rightsep } }
}
%% Measure and update natural dimensions of the row/column/cell
@@ -2920,7 +3388,9 @@
\cs_new_protected:Npn \__tblr_measure_cell_update_sizes:nnNNNN #1 #2 #3 #4 #5 #6
{
\__tblr_get_cell_alignments:nn {#1} {#2}
+ \__tblr_save_counters:n { trial }
\hbox_set:Nn \l_tmpa_box { \__tblr_get_cell_text:nn {#1} {#2} }
+ \__tblr_restore_counters:n { trial }
\__tblr_update_cell_size:nnNNNN {#1} {#2} #3 #4 #5 #6
\__tblr_update_row_size:nnNNN {#1} {#2} #4 #5 #6
\__tblr_update_col_size:nN {#2} #3
@@ -2939,13 +3409,46 @@
{ \__tblr_get_cell_text_real:nn { #1 } { #2 } }
}
+\tl_new:N \l__tblr_cell_fg_tl
+\tl_new:N \l__tblr_cell_cmd_tl
+\tl_new:N \l__tblr_cell_mode_tl
+\bool_new:N \l__tblr_cell_math_mode_bool
+\tl_const:Nn \l__tblr_cell_math_style_tl { \relax }
+\tl_const:Nn \l__tblr_cell_imath_style_tl { \textstyle }
+\tl_const:Nn \l__tblr_cell_dmath_style_tl { \displaystyle }
+
%% Get cell text, #1: row number, #2: column number
%% If the width of the cell is not set, split it with \\ and compute the width
%% Therefore we always get a vbox for any cell
\cs_new_protected:Npn \__tblr_get_cell_text_real:nn #1 #2
{
\group_begin:
- \tl_set:Nx \l__tblr_c_tl { \__tblr_text_item:ne { text } {[#1][#2]} }
+ \tl_set:Nx \l__tblr_cell_cmd_tl
+ { \__tblr_data_item:neen { cell } {#1} {#2} { cmd } }
+ \tl_if_empty:NTF \l__tblr_cell_cmd_tl
+ { \tl_set:Nx \l__tblr_c_tl { \__tblr_spec_item:ne { text } {[#1][#2]} } }
+ {
+ \tl_set:Nx \l__tblr_c_tl { { \__tblr_spec_item:ne { text } {[#1][#2]} } }
+ \tl_put_left:NV \l__tblr_c_tl \l__tblr_cell_cmd_tl
+ }
+ \tl_set:Nx \l__tblr_cell_mode_tl
+ { \__tblr_data_item:neen { cell } {#1} {#2} { mode } }
+ \tl_if_empty:NT \l__tblr_cell_mode_tl
+ {
+ \bool_if:NTF \l__tblr_math_mode_bool
+ { \tl_set:Nn \l__tblr_cell_mode_tl { math } }
+ { \tl_set:Nn \l__tblr_cell_mode_tl { text } }
+ }
+ \tl_if_eq:NnTF \l__tblr_cell_mode_tl { text }
+ { \bool_set_false:N \l__tblr_cell_math_mode_bool }
+ {
+ \bool_set_true:N \l__tblr_cell_math_mode_bool
+ \tl_put_left:Nv \l__tblr_c_tl
+ { l__tblr_cell_ \l__tblr_cell_mode_tl _style_tl }
+ \tl_put_left:Nn \l__tblr_c_tl { $ }
+ \tl_put_right:Nn \l__tblr_c_tl { $ }
+ }
+ \tl_set:Nx \l__tblr_f_tl { \__tblr_data_item:neen { cell } {#1} {#2} { font } }
\tl_set:Nx \l__tblr_w_tl
{ \__tblr_data_item:neen { cell } {#1} {#2} { width } }
\dim_compare:nNnT { \l__tblr_w_tl } < { 0pt } % cell width unset
@@ -2959,35 +3462,80 @@
}
\dim_compare:nNnT { \l__tblr_w_tl } < { 0pt } % column width unset
{
- \bool_if:NTF \l__tblr_math_mode_bool
+ \bool_if:NTF \l__tblr_cell_math_mode_bool
{
- \hbox_set:Nn \l_tmpa_box { $\l__tblr_c_tl$ }
+ \hbox_set:Nn \l_tmpa_box { \l__tblr_c_tl }
\tl_set:Nx \l__tblr_w_tl { \box_wd:N \l_tmpa_box }
}
{
- \tl_set_eq:NN \l_tmpb_tl \l__tblr_c_tl
- \__tblr_insert_braces:N \l_tmpb_tl
- \seq_set_split:NnV \l_tmpa_seq { \\ } \l_tmpb_tl
- \tl_set:Nn \l__tblr_w_tl { 0pt }
- \seq_map_variable:NNn \l_tmpa_seq \l_tmpa_tl
- {
- \__tblr_remove_braces:N \l_tmpa_tl
- \hbox_set:Nn \l_tmpa_box { \l_tmpa_tl }
- \tl_set:Nx \l__tblr_w_tl
- { \dim_max:nn { \l__tblr_w_tl } { \box_wd:N \l_tmpa_box } }
- }
+ \__tblr_get_cell_size_with_box:
}
}
+ \tl_set:Nx \l__tblr_cell_fg_tl
+ { \__tblr_data_item:neen { cell } {#1} {#2} { foreground } }
+ \tl_put_left:NV \l__tblr_c_tl \l__tblr_f_tl
\__tblr_get_vcell_and_sizes:NN \l__tblr_c_tl \l__tblr_w_tl
\group_end:
}
+\cs_new_protected:Npn \__tblr_get_cell_size_with_box:
+ {
+ \__tblr_save_counters:n { cell }
+ \tl_if_eq:NnTF \l__tblr_inner_spec_measure_tl { vbox }
+ { \__tblr_get_cell_size_with_vbox: }
+ { \__tblr_get_cell_size_with_hbox: }
+ \__tblr_restore_counters:n { cell }
+ }
+
+%% Varwidth won't work as expected when \color command occurs in it,
+%% and we can not fix this problem with \leavevmode command.
+%% See https://tex.stackexchange.com/q/460489.
+%% But we need to use \color command for fg option,
+%% or users may use it in the middle of the cell text,
+%% so we have redefine \color command and disable it before measuring cell.
+
+\NewDocumentCommand \__tblr_fake_color_command:w { o m } { }
+
+\cs_new_protected:Npn \__tblr_get_cell_size_with_vbox:
+ {
+ \hbox_set:Nn \l_tmpa_box
+ {
+ \cs_set_eq:NN \color \__tblr_fake_color_command:w
+ \begin{varwidth}{\paperwidth}
+ \l__tblr_f_tl
+ \__tblr_rescan_cell_tokens:N \l__tblr_c_tl
+ \end{varwidth}
+ }
+ \tl_set:Nx \l__tblr_w_tl { \box_wd:N \l_tmpa_box }
+ }
+
+\cs_new_protected:Npn \__tblr_get_cell_size_with_hbox:
+ {
+ \tl_set_eq:NN \l_tmpb_tl \l__tblr_c_tl
+ \__tblr_insert_braces:N \l_tmpb_tl
+ \seq_set_split:NnV \l_tmpa_seq { \\ } \l_tmpb_tl
+ \tl_set:Nn \l__tblr_w_tl { 0pt }
+ \seq_map_variable:NNn \l_tmpa_seq \l_tmpa_tl
+ {
+ \__tblr_remove_braces:N \l_tmpa_tl
+ \hbox_set:Nn \l_tmpa_box
+ {
+ \l__tblr_f_tl
+ \__tblr_rescan_cell_tokens:N \l_tmpa_tl
+ }
+ \tl_set:Nx \l__tblr_w_tl
+ { \dim_max:nn { \l__tblr_w_tl } { \box_wd:N \l_tmpa_box } }
+ }
+ }
+
%% #1: cell text; #2: box width
\cs_new_protected:Npn \__tblr_get_vcell_and_sizes:NN #1 #2
{
\group_begin:
- \vbox_set_top:Nn \l_tmpa_box { \__tblr_make_vcell_text:nN #1 #2 }
- \vbox_set:Nn \l_tmpb_box { \__tblr_make_vcell_text:nN #1 #2 }
+ \__tblr_save_counters:n { cell }
+ \vbox_set_top:Nn \l_tmpa_box { \__tblr_make_vcell_text:NN #1 #2 }
+ \__tblr_restore_counters:n { cell }
+ \vbox_set:Nn \l_tmpb_box { \__tblr_make_vcell_text:NN #1 #2 }
\dim_gset:Nn \g__tblr_cell_wd_dim { \box_wd:N \l_tmpb_box }
\dim_gset:Nn \g__tblr_cell_ht_dim
{ \box_ht:N \l_tmpb_box + \box_dp:N \l_tmpb_box }
@@ -3029,22 +3577,40 @@
\group_end:
}
-\cs_new_eq:NN \__tlbr_halign_l: \raggedright
-\cs_new_eq:NN \__tlbr_halign_c: \centering
-\cs_new_eq:NN \__tlbr_halign_r: \raggedleft
-
%% #1: cell text; #2: box width
-\cs_new_protected:Npn \__tblr_make_vcell_text:nN #1 #2
+%% All halign commands are defined at the beginning of the file
+\cs_new_protected:Npn \__tblr_make_vcell_text:NN #1 #2
{
\dim_set:Nn \tex_hsize:D { #2 }
\@arrayparboxrestore
- \cs:w __tlbr_halign_ \g__tblr_cell_halign_tl : \cs_end:
+ \cs:w __tblr_halign_command_ \g__tblr_cell_halign_tl : \cs_end:
\mode_leave_vertical:
\box_use:N \l__tblr_strut_ht_box
- \bool_if:NTF \l__tblr_math_mode_bool { $#1$ } { #1 }
+ \tl_if_empty:NF \l__tblr_cell_fg_tl { \exp_args:NV \color \l__tblr_cell_fg_tl }
+ \bool_if:NTF \l__tblr_cell_math_mode_bool
+ { #1 }
+ { \__tblr_rescan_cell_tokens:N #1 }
\box_use:N \l__tblr_strut_dp_box
}
+%% When using verb option, there is an end-of-line character at the end.
+%% This character causes extra horizontal space at the end when "measure=hbox",
+%% or causes extra vertical space at the end with "measure=vbox".
+%% Therefore we have to use an \empty to remove it.
+%% See https://tex.stackexchange.com/q/213659
+\cs_new_protected:Npn \__tblr_rescan_cell_tokens:N #1
+ {
+ \tl_if_empty:NTF \l__tblr_inner_spec_verb_tl
+ { #1 }
+ {
+ %% insert space characters after some control sequences first (issue #112)
+ \regex_replace_all:nnN { (\c{[A-Za-z]*}) ([A-Za-z]) } { \1 \ \2 } #1
+ \regex_replace_all:nnN { . } { \c{string} \0 } #1
+ \tl_set:Nx #1 { #1 \noexpand \empty }
+ \exp_args:NV \tex_scantokens:D #1
+ }
+ }
+
%% #1: total height dimension; #2: head dimension; #3: foot dimension;
%% #4: tl for resulting upper size; #5: tl for resulting lower size
@@ -3238,7 +3804,7 @@
\cs_new_protected:Npn \__tblr_collect_extendable_column_width:
{
- \tl_set:Nx \l_tmpa_tl { \__tblr_prop_item:nn {table} {width} }
+ \tl_set:Nx \l_tmpa_tl { \__tblr_prop_item:nn { inner } { width } }
\tl_if_empty:NTF \l_tmpa_tl
{ \dim_set_eq:NN \l__column_target_dim \linewidth }
{ \dim_set:Nn \l__column_target_dim { \l_tmpa_tl } }
@@ -3271,7 +3837,7 @@
}
{ \dim_sub:Nn \l__column_target_dim { \l__tblr_a_tl } }
\tl_set:Nx \l__tblr_a_tl
- { \__tblr_text_item:ne { vline } { [\l__tblr_j_tl] / @vline-width } }
+ { \__tblr_spec_item:ne { vline } { [\l__tblr_j_tl] / @vline-width } }
\tl_set:Nx \l__tblr_b_tl
{ \__tblr_data_item:nen { column } { \l__tblr_j_tl } { leftsep } }
\tl_set:Nx \l__tblr_c_tl
@@ -3281,7 +3847,7 @@
}
\tl_set:Nx \l__tblr_a_tl
{
- \__tblr_text_item:ne { vline }
+ \__tblr_spec_item:ne { vline }
{ [\int_eval:n {\c@colcount + 1}] / @vline-width }
}
\tl_if_empty:NF \l__tblr_a_tl
@@ -3290,7 +3856,8 @@
}
%% If all columns have negative coefficients and small natural widths,
-%% \l__column_coefficient_prop will be empty after one or more rounds
+%% \l__column_coefficient_prop will be empty after one or more rounds.
+%% We reset @row-height, etc for \linewidth graphics in X columns (issue #80)
\cs_new_protected:Npn \__tblr_adjust_extendable_column_width:
{
\bool_while_do:nn
@@ -3305,6 +3872,14 @@
\__tblr_data_gput:nnne { column } {##1} { width } {##2}
\__tblr_data_gput:nnnn { column } {##1} { @col-width } { 0pt }
}
+ \int_step_inline:nn { \c@rowcount }
+ {
+ \__tblr_data_gput:nnnn { row } {##1} { @row-height } { 0pt }
+ \__tblr_data_gput:nnnn { row } {##1} { @row-head } { 0pt }
+ \__tblr_data_gput:nnnn { row } {##1} { @row-foot } { 0pt }
+ \__tblr_data_gput:nnnn { row } {##1} { @row-upper } { 0pt }
+ \__tblr_data_gput:nnnn { row } {##1} { @row-lower } { 0pt }
+ }
\__tblr_calculate_cell_sizes:
}
@@ -3378,11 +3953,11 @@
\cs_new_protected:Npn \__tblr_adjust_sizes_for_span_cells:
{
- \__tblr_prop_if_in:nnT {table} {colspan}
+ \__tblr_prop_if_in:nnT { inner } { colspan }
{
\__tblr_collect_column_widths_skips:
\str_if_eq:xnTF
- { \__tblr_prop_item:ne {table} {hspan} } {minimal}
+ { \__tblr_prop_item:ne { inner } { hspan } } { minimal }
{
\__tblr_set_span_widths_from_column_widths:
}
@@ -3393,12 +3968,12 @@
\LogTblrTracing { column }
\__tblr_calculate_cell_sizes:
}
- \__tblr_prop_if_in:nnT {table} {rowspan}
+ \__tblr_prop_if_in:nnT { inner } { rowspan }
{
\__tblr_collect_row_heights_skips:
\__tblr_collect_span_heights:
\__tblr_set_row_heights_from_span_heights:
- \LogTblrTracing {row}
+ \LogTblrTracing { row }
}
}
@@ -3421,7 +3996,7 @@
\__tblr_data_item:nen { column }
{ \int_eval:n { \l__tblr_j_tl - 1 } } { rightsep }
+
- \__tblr_text_item:ne { vline }
+ \__tblr_spec_item:ne { vline }
{ [\l__tblr_j_tl] / @vline-width }
+
\__tblr_data_item:nen { column } { \l__tblr_j_tl } { leftsep }
@@ -3453,7 +4028,7 @@
\__tblr_data_item:nen { row }
{ \int_eval:n {\l__tblr_i_tl - 1} } { belowsep }
+
- \__tblr_text_item:ne { hline }
+ \__tblr_spec_item:ne { hline }
{ [\l__tblr_i_tl] / @hline-height }
+
\__tblr_data_item:nen { row } { \l__tblr_i_tl } { abovesep }
@@ -3585,27 +4160,49 @@
%% Compute and set column widths from span widths
\cs_new_protected:Npn \__tblr_set_column_widths_from_span_widths:
{
- \__tblr_calc_item_sizes_from_span_sizes:xNN
- { \int_use:N \c@colcount }
- \l__tblr_col_item_skip_size_prop
- \l__tblr_col_span_size_prop
+ \str_if_eq:xnTF
+ { \__tblr_prop_item:ne { inner } { hspan } }
+ { even }
+ {
+ \__tblr_distribute_span_sizes_even:xNN
+ { \int_use:N \c@colcount }
+ \l__tblr_col_item_skip_size_prop
+ \l__tblr_col_span_size_prop
+ }
+ {
+ \__tblr_distribute_span_sizes_default:xNN
+ { \int_use:N \c@colcount }
+ \l__tblr_col_item_skip_size_prop
+ \l__tblr_col_span_size_prop
+ }
\__tblr_set_all_column_widths:
}
%% Compute and set row heights from span heights
\cs_new_protected:Npn \__tblr_set_row_heights_from_span_heights:
{
- \__tblr_calc_item_sizes_from_span_sizes:xNN
- { \int_use:N \c@rowcount }
- \l__tblr_row_item_skip_size_prop
- \l__tblr_row_span_size_prop
+ \str_if_eq:xnTF
+ { \__tblr_prop_item:ne { inner } { vspan } }
+ { even }
+ {
+ \__tblr_distribute_span_sizes_even:nNN
+ { \int_use:N \c@rowcount }
+ \l__tblr_row_item_skip_size_prop
+ \l__tblr_row_span_size_prop
+ }
+ {
+ \__tblr_distribute_span_sizes_default:xNN
+ { \int_use:N \c@rowcount }
+ \l__tblr_row_item_skip_size_prop
+ \l__tblr_row_span_size_prop
+ }
\__tblr_set_all_row_heights:
}
%% See page 245 in Chapter 22 of TeXbook
%% #1: total number of items
%% #2: prop list with item sizes and skip sizes; #3: prop list with span sizes
-\cs_new_protected:Npn \__tblr_calc_item_sizes_from_span_sizes:nNN #1 #2 #3
+\cs_new_protected:Npn \__tblr_distribute_span_sizes_default:nNN #1 #2 #3
{
\int_step_variable:nNn { #1 } \l__tblr_j_tl
{
@@ -3656,14 +4253,60 @@
}
\__tblr_do_if_tracing:nn { cellspan } { \prop_log:N #2 }
}
-\cs_generate_variant:Nn \__tblr_calc_item_sizes_from_span_sizes:nNN { x }
+\cs_generate_variant:Nn \__tblr_distribute_span_sizes_default:nNN { x }
+
+%% #1: total number of items
+%% #2: prop list with item sizes and skip sizes; #3: prop list with span sizes
+\cs_new_protected:Npn \__tblr_distribute_span_sizes_even:nNN #1 #2 #3
+ {
+ \prop_clear:N \l_tmpa_prop
+ \prop_map_inline:Nn #3
+ {
+ \__tblr_get_span_from_to:w ##1
+ \dim_set:Nn \l_tmpa_dim {##2}
+ \dim_sub:Nn \l_tmpa_dim { \prop_item:Ne #2 { item[\l__tblr_a_tl] } }
+ \int_step_inline:nnn { \l__tblr_a_tl + 1 } { \l__tblr_b_tl }
+ {
+ \dim_sub:Nn \l_tmpa_dim
+ {
+ \prop_item:Ne #2 { skip[####1] } + \prop_item:Nn #2 { item[####1] }
+ }
+ }
+ \__tblr_do_if_tracing:nn { cellspan }
+ {
+ \tl_log:x { \l__tblr_a_tl -> \l__tblr_b_tl : ~ \dim_use:N \l_tmpa_dim }
+ }
+ \dim_compare:nNnT {\l_tmpa_dim} > {0pt}
+ {
+ \tl_set:Nx \l_tmpa_tl
+ { \dim_eval:n { \l_tmpa_dim / (\l__tblr_b_tl - \l__tblr_a_tl + 1) } }
+ \int_step_inline:nnn { \l__tblr_a_tl } { \l__tblr_b_tl }
+ {
+ \__tblr_put_if_larger:NnV \l_tmpa_prop {####1} \l_tmpa_tl
+ }
+ }
+ }
+ \__tblr_do_if_tracing:nn { cellspan } { \prop_log:N \l_tmpa_prop }
+ \prop_map_inline:Nn \l_tmpa_prop
+ {
+ \__tblr_add_dimen_value:Nnn #2 {item[##1]} {##2}
+ }
+ \__tblr_do_if_tracing:nn { cellspan } { \prop_log:N #2 }
+ }
+\cs_generate_variant:Nn \__tblr_distribute_span_sizes_even:nNN { x }
+
+\cs_new_protected:Npn \__tblr_get_span_from_to:w (#1-#2)
+ {
+ \tl_set:Nn \l__tblr_a_tl {#1}
+ \tl_set:Nn \l__tblr_b_tl {#2}
+ }
\cs_new_protected:Npn \__tblr_set_all_column_widths:
{
\int_step_variable:nNn { \c@colcount } \l__tblr_j_tl
{
\__tblr_data_gput:nene { column }
- { \l__tblr_j_tl } { @col-width }
+ { \l__tblr_j_tl } { width }
{ \prop_item:Ne \l__tblr_col_item_skip_size_prop { item[\l__tblr_j_tl] } }
}
}
@@ -3690,12 +4333,6 @@
}
}
-\cs_new_protected:Npn \__tblr_get_span_key_row_col:w [#1][#2]
- {
- \tl_set:Nn \l__tblr_i_tl {#1}
- \tl_set:Nn \l__tblr_j_tl {#2}
- }
-
%% Compute and set span widths from column widths
\cs_new_protected:Npn \__tblr_set_span_widths_from_column_widths:
{
@@ -3725,8 +4362,8 @@
%% Cell is spanned from col #1 to col #2, #3 is the return dim
\cs_new_protected:Npn \__tblr_calc_span_widths:nnN #1 #2 #3
{
- \dim_zero:N #3
- \int_step_inline:nnn { #1 } { #2 }
+ \dim_set:Nn #3 { \prop_item:Ne \l__tblr_col_item_skip_size_prop { item[#1] } }
+ \int_step_inline:nnn { #1 + 1 } { #2 }
{
\tl_set:Nx \l_tmpa_tl
{ \prop_item:Ne \l__tblr_col_item_skip_size_prop { skip[##1] } }
@@ -3738,75 +4375,1076 @@
\cs_generate_variant:Nn \__tblr_calc_span_widths:nnN { xxN }
%%% --------------------------------------------------------
-%% \section{Build the Whole Table}
+%%> \section{Header and Footer Styles}
%%% --------------------------------------------------------
-\tl_new:N \__tlbr_vbox_align_tl
-\tl_const:Nn \__tlbr_vbox_t_tl {t}
-\tl_const:Nn \__tlbr_vbox_m_tl {m}
-\tl_const:Nn \__tlbr_vbox_c_tl {c}
-\tl_const:Nn \__tlbr_vbox_b_tl {b}
+\prop_new:N \l__tblr_element_styles_prop
-\box_new:N \l__tblr_table_box
+\cs_new_protected:Npn \__tblr_style_put:nn #1 #2
+ {
+ \prop_put:Nnn \l__tblr_element_styles_prop {#1} {#2}
+ }
+\cs_generate_variant:Nn \__tblr_style_put:nn { nV, ne, en }
-%% #1: table alignment
-\cs_new_protected:Npn \__tblr_build_whole:n #1
+\cs_new:Npn \__tblr_style_item:n #1
{
- \bool_if:NTF \l__tblr_long_table_bool
- { \__tblr_build_long_table:n {#1} }
- { \__tblr_build_short_table:n {#1} }
+ \prop_item:Nn \l__tblr_element_styles_prop {#1}
}
-\dim_new:N \l__tblr_remain_height_dim
-\tl_new:N \l__tblr_long_from_tl
+\cs_new_protected:Npn \__tblr_style_log:
+ {
+ \prop_log:N \l__tblr_element_styles_prop
+ }
-\cs_new_protected:Npn \__tblr_build_long_table:n #1
+\tl_new:N \l__tblr_element_name_tl
+\tl_new:N \l__tblr_element_styles_tl
+
+%% #1: list of element names; #2: element styles
+\NewDocumentCommand \SetTblrStyle { m +m }
{
- %\dim_log:N \pagegoal
- %\dim_log:N \pagetotal
- \dim_set:Nn \l__tblr_remain_height_dim { \pagegoal - \pagetotal }
- \tl_set:Nn \l__tblr_long_from_tl {1}
- \int_step_variable:nNn { \c@rowcount } \l__tblr_i_tl
+ \tl_set:Nn \l__tblr_element_styles_tl {#2}
+ \keys_set:nn { tblr-element } {#1}
+ \ignorespaces
+ }
+
+\keys_define:nn { tblr-element }
+ {
+ head .meta:n = { firsthead, middlehead, lasthead },
+ foot .meta:n = { firstfoot, middlefoot, lastfoot },
+ unknown .code:n = \__tblr_set_element_styles:V \l_keys_key_str,
+ }
+
+\cs_new_protected:Npn \__tblr_set_element_styles:n #1
+ {
+ \tl_set:Nn \l__tblr_element_name_tl {#1}
+ \keys_set:nV { tblr-style } \l__tblr_element_styles_tl
+ }
+\cs_generate_variant:Nn \__tblr_set_element_styles:n { V }
+
+\keys_define:nn { tblr-style }
+ {
+ halign .code:n = \__tblr_element_gput_style:nn { halign } {#1},
+ l .meta:n = { halign = l },
+ c .meta:n = { halign = c },
+ r .meta:n = { halign = r },
+ fg .code:n = \__tblr_element_gput_style:nn { fg } {#1},
+ font .code:n = \__tblr_element_gput_style:nn { font } {#1},
+ hang .code:n = \__tblr_element_gput_style:nn { hang } {#1},
+ indent .code:n = \__tblr_element_gput_style:nn { indent } {#1},
+ unknown .code:n = \__tblr_element_unknown_key:Vn \l_keys_key_str {#1},
+ }
+
+\cs_new_protected:Npn \__tblr_element_gput_style:nn #1 #2
+ {
+ \__tblr_style_put:en { \l__tblr_element_name_tl / #1 } {#2}
+ }
+
+\cs_new_protected:Npn \__tblr_element_unknown_key:nn #1 #2
+ {
+ \regex_match:NnTF \c__tblr_is_color_key_regex {#1}
+ { \__tblr_style_put:en { \l__tblr_element_name_tl / fg } {#1} }
{
- \dim_set:Nn \l_tmpa_dim
+ %% unknown key name has been changed to string in \l_keys_key_str
+ \tl_set_rescan:Nnn \l__tblr_f_tl {} {#1}
+ \tl_if_head_eq_catcode:VNTF \l__tblr_f_tl \scan_stop:
+ {
+ \__tblr_style_put:en { \l__tblr_element_name_tl / font } \l__tblr_f_tl
+ }
+ {
+ \__tblr_style_put:en { \l__tblr_element_name_tl / #1 } {#2}
+ }
+ }
+ }
+\cs_generate_variant:Nn \__tblr_element_unknown_key:nn { Vn }
+
+%%% --------------------------------------------------------
+%%> \section{Helper Functions for Templates}
+%%% --------------------------------------------------------
+
+\tl_new:N \l__tblr_template_name_tl
+\tl_new:N \l__tblr_template_code_tl
+
+\keys_define:nn { tblr-def-template }
+ {
+ unknown .code:n = \__tblr_def_template:V \l_keys_key_str,
+ }
+
+%% #1: head/foot element; #2: template name; #3: template code
+%% If the template name = default, we enable the template at once
+%% Otherwise, we may enable the template by using \SetTblrTemplate command
+\NewDocumentCommand \DefTblrTemplate { m m +m }
+ {
+ \tl_set:Nn \l__tblr_template_name_tl {#2}
+ \tl_set:Nn \l__tblr_template_code_tl {#3}
+ \keys_set:nn { tblr-def-template } {#1}
+ \ignorespaces
+ }
+
+\cs_new_protected:Npn \__tblr_def_template:n #1
+ {
+ \tl_set_eq:cN { l__tblr_template_ #1 _ \l__tblr_template_name_tl _tl }
+ \l__tblr_template_code_tl
+ }
+\cs_generate_variant:Nn \__tblr_def_template:n { V }
+
+\keys_define:nn { tblr-set-template }
+ {
+ unknown .code:n = \__tblr_set_template:V \l_keys_key_str,
+ }
+
+%% #1: head/foot element; #2: template name
+\NewDocumentCommand \SetTblrTemplate { m m }
+ {
+ \tl_set:Nn \l__tblr_template_name_tl {#2}
+ \keys_set:nn { tblr-set-template } {#1}
+ \ignorespaces
+ }
+
+\cs_new_protected:Npn \__tblr_set_template:n #1
+ {
+ \tl_set_eq:cc { l__tblr_template_ #1 _default_tl }
+ { l__tblr_template_ #1 _ \l__tblr_template_name_tl _tl }
+ }
+\cs_generate_variant:Nn \__tblr_set_template:n { V }
+
+\NewExpandableDocumentCommand \GetTblrStyle { m m }
+ {
+ \__tblr_style_item:n { #1 / #2 }
+ }
+
+\NewDocumentCommand \UseTblrFont { m }
+ {
+ \GetTblrStyle {#1} { font } \selectfont
+ }
+
+\tl_new:N \l__tblr_use_color_tl
+
+\NewDocumentCommand \UseTblrColor { m }
+ {
+ \tl_set:Nx \l__tblr_use_color_tl { \GetTblrStyle {#1} { fg } }
+ \tl_if_empty:NF \l__tblr_use_color_tl { \color { \l__tblr_use_color_tl } }
+ }
+
+%% All halign commands are defined at the beginning of the file
+\NewDocumentCommand \UseTblrAlign { m }
+ {
+ \use:c { __tblr_halign_command_ \GetTblrStyle {#1} { halign } : }
+ }
+
+\tl_new:N \l__tblr_use_hang_tl
+
+\NewDocumentCommand \UseTblrHang { m }
+ {
+ \tl_set:Nx \l__tblr_use_hang_tl { \GetTblrStyle {#1} { hang } }
+ \tl_if_empty:NF \l__tblr_use_hang_tl
+ {
+ \tl_put_left:Nn \l__tblr_use_hang_tl
+ { \hangafter = 1 \relax \hangindent = }
+ \tl_put_right:Nn \l__tblr_use_hang_tl { \relax }
+ \exp_args:NV \everypar \l__tblr_use_hang_tl
+ }
+ }
+
+\tl_new:N \l__tblr_use_indent_tl
+
+\NewDocumentCommand \UseTblrIndent { m }
+ {
+ \tl_set:Nx \l__tblr_use_indent_tl { \GetTblrStyle {#1} { indent } }
+ \tl_if_empty:NF \l__tblr_use_indent_tl
+ { \exp_args:NNV \setlength \parindent \l__tblr_use_indent_tl }
+ }
+
+\AtBeginDocument
+ {
+ \@ifpackageloaded{xcolor}{}{\RenewDocumentCommand \UseTblrColor {m} {}}
+ }
+
+%% #1: head/foot element; #2: template name
+\NewExpandableDocumentCommand \ExpTblrTemplate { m m }
+ {
+ \tl_use:c { l__tblr_template_ #1 _ #2 _tl }
+ }
+
+%% #1: head/foot element; #2: template name
+\NewDocumentCommand \UseTblrTemplate { m m }
+ {
+ \group_begin:
+ \UseTblrFont {#1}
+ \UseTblrColor {#1}
+ \tl_use:c { l__tblr_template_ #1 _ #2 _tl }
+ \group_end:
+ }
+
+\NewDocumentCommand \MapTblrNotes { +m }
+ {
+ \__tblr_prop_map_inline:nn { note }
+ {
+ \tl_set_rescan:Nnn \InsertTblrNoteTag {} {##1}
+ \tl_set:Nn \InsertTblrNoteText {##2}
+ #1
+ }
+ }
+
+\NewDocumentCommand \MapTblrRemarks { +m }
+ {
+ \__tblr_prop_map_inline:nn { remark }
+ {
+ \tl_set_rescan:Nnn \InsertTblrRemarkTag {} {##1}
+ \tl_set:Nn \InsertTblrRemarkText {##2}
+ #1
+ }
+ }
+
+\NewExpandableDocumentCommand \InsertTblrText { m }
+ {
+ \__tblr_spec_item:nn { outer } {#1}
+ }
+
+\NewExpandableDocumentCommand \InsertTblrMore { m }
+ {
+ \__tblr_prop_item:nn { more } {#1}
+ }
+
+%%% --------------------------------------------------------
+%%> \section{Table Continuation Templates}
+%%% --------------------------------------------------------
+
+\DefTblrTemplate { contfoot-text } { normal } { Continued ~ on ~ next ~ page }
+\SetTblrTemplate { contfoot-text } { normal }
+
+\DefTblrTemplate { contfoot } { empty } { }
+\DefTblrTemplate { contfoot } { plain }
+ {
+ \noindent
+ \raggedleft
+ \UseTblrTemplate { contfoot-text } { default }
+ \par
+ }
+\DefTblrTemplate { contfoot } { normal }
+ {
+ %% need to set parindent after alignment
+ \raggedleft
+ \UseTblrAlign { contfoot }
+ \UseTblrIndent { contfoot }
+ \UseTblrHang { contfoot }
+ \leavevmode
+ \UseTblrTemplate { contfoot-text } { default }
+ \par
+ }
+\SetTblrTemplate { contfoot } { normal }
+
+\DefTblrTemplate { conthead-text } { normal } { ( Continued ) }
+\SetTblrTemplate { conthead-text } { normal }
+
+\DefTblrTemplate { conthead } { empty } { }
+\DefTblrTemplate { conthead } { plain }
+ {
+ \noindent
+ \raggedright
+ \UseTblrTemplate { conthead-text } { default }
+ \par
+ }
+\DefTblrTemplate { conthead } { normal }
+ {
+ %% need to set parindent after alignment
+ \raggedright
+ \UseTblrAlign { conthead }
+ \UseTblrIndent { conthead }
+ \UseTblrHang { conthead }
+ \leavevmode
+ \UseTblrTemplate { conthead-text } { default }
+ \par
+ }
+\SetTblrTemplate { conthead } { normal }
+
+%%% --------------------------------------------------------
+%%> \section{Table Caption Templates}
+%%% --------------------------------------------------------
+
+\tl_new:N \l__tblr_caption_short_tl
+
+\DefTblrTemplate { caption-lot } { empty } { }
+\DefTblrTemplate { caption-lot } { normal }
+ {
+ \tl_set:Nx \l__tblr_caption_short_tl { \InsertTblrText { entry } }
+ \tl_if_empty:NT \l__tblr_caption_short_tl
+ { \tl_set:Nx \l__tblr_caption_short_tl { \InsertTblrText { caption } } }
+ \addcontentsline { lot } { table }
+ { \protect\numberline { \thetable } { \l__tblr_caption_short_tl } }
+ }
+\SetTblrTemplate { caption-lot } { normal }
+
+%% We need to use \hspace and \enskip, but not ~ or \space,
+%% since we want a correct hangindent caption paragraph.
+
+\DefTblrTemplate { caption-tag } { empty } { }
+\DefTblrTemplate { caption-tag } { normal } { \tablename\hspace{0.25em}\thetable }
+\SetTblrTemplate { caption-tag } { normal }
+
+\DefTblrTemplate { caption-sep } { empty } { }
+\DefTblrTemplate { caption-sep } { normal } { : \enskip }
+\SetTblrTemplate { caption-sep } { normal }
+
+\DefTblrTemplate { caption-text } { empty } { }
+\DefTblrTemplate { caption-text } { normal } { \InsertTblrText { caption } }
+\SetTblrTemplate { caption-text } { normal }
+
+\box_new:N \l__tblr_caption_box
+\box_new:N \l__tblr_caption_left_box
+
+\DefTblrTemplate { caption } { empty } { }
+\DefTblrTemplate { caption } { plain }
+ {
+ \hbox_set:Nn \l__tblr_caption_box
+ {
+ \UseTblrTemplate { caption-tag } { default }
+ \UseTblrTemplate { caption-sep } { default }
+ \UseTblrTemplate { caption-text } { default }
+ }
+ \dim_compare:nNnTF { \box_wd:N \l__tblr_caption_box } > { \hsize }
+ {
+ \noindent
+ \hbox_unpack:N \l__tblr_caption_box
+ \par
+ }
+ {
+ \centering
+ \makebox [\hsize] [c] { \box_use:N \l__tblr_caption_box }
+ \par
+ }
+ }
+\DefTblrTemplate { caption } { normal }
+ {
+ \hbox_set:Nn \l__tblr_caption_box
+ {
+ \UseTblrTemplate { caption-tag } { default }
+ \UseTblrTemplate { caption-sep } { default }
+ \UseTblrTemplate { caption-text } { default }
+ }
+ \dim_compare:nNnTF { \box_wd:N \l__tblr_caption_box } > { \hsize }
+ {
+ \UseTblrAlign { caption }
+ \UseTblrIndent { caption }
+ \hbox_set:Nn \l__tblr_caption_left_box
+ {
+ \UseTblrTemplate { caption-tag } { default }
+ \UseTblrTemplate { caption-sep } { default }
+ }
+ \hangindent = \box_wd:N \l__tblr_caption_left_box
+ \hangafter = 1
+ \UseTblrHang { caption }
+ \leavevmode
+ \hbox_unpack:N \l__tblr_caption_box
+ \par
+ }
+ {
+ \centering
+ \makebox [\hsize] [c] { \box_use:N \l__tblr_caption_box }
+ \par
+ }
+ }
+\DefTblrTemplate { caption } { simple }
+ {
+ \UseTblrAlign { caption }
+ \UseTblrIndent { caption }
+ \UseTblrHang { caption }
+ \leavevmode
+ \UseTblrTemplate { caption-tag } { default }
+ \UseTblrTemplate { caption-sep } { default }
+ \UseTblrTemplate { caption-text } { default }
+ \par
+ }
+\SetTblrTemplate { caption } { normal }
+
+\DefTblrTemplate { capcont } { empty } { }
+\DefTblrTemplate { capcont } { plain }
+ {
+ \hbox_set:Nn \l__tblr_caption_box
+ {
+ \UseTblrTemplate { caption-tag } { default }
+ \UseTblrTemplate { caption-sep } { default }
+ \UseTblrTemplate { caption-text } { default }
+ \space
+ \UseTblrTemplate { conthead-text } { default }
+ }
+ \dim_compare:nNnTF { \box_wd:N \l__tblr_caption_box } > { \hsize }
+ {
+ \noindent
+ \hbox_unpack:N \l__tblr_caption_box
+ \par
+ }
+ {
+ \centering
+ \makebox [\hsize] [c] { \box_use:N \l__tblr_caption_box }
+ \par
+ }
+ }
+\DefTblrTemplate { capcont } { normal }
+ {
+ \hbox_set:Nn \l__tblr_caption_box
+ {
+ \UseTblrTemplate { caption-tag } { default }
+ \UseTblrTemplate { caption-sep } { default }
+ \UseTblrTemplate { caption-text } { default }
+ \space
+ \UseTblrTemplate { conthead-text } { default }
+ }
+ \dim_compare:nNnTF { \box_wd:N \l__tblr_caption_box } > { \hsize }
+ {
+ \UseTblrAlign { capcont }
+ \UseTblrIndent { capcont }
+ \hbox_set:Nn \l__tblr_caption_left_box
+ {
+ \UseTblrTemplate { caption-tag } { default }
+ \UseTblrTemplate { caption-sep } { default }
+ }
+ \hangindent = \box_wd:N \l__tblr_caption_left_box
+ \hangafter = 1
+ \UseTblrHang { capcont }
+ \leavevmode
+ \hbox_unpack:N \l__tblr_caption_box
+ \par
+ }
+ {
+ \centering
+ \makebox [\hsize] [c] { \box_use:N \l__tblr_caption_box }
+ \par
+ }
+ }
+\DefTblrTemplate { capcont } { simple }
+ {
+ \UseTblrAlign { caption }
+ \UseTblrIndent { caption }
+ \UseTblrHang { caption }
+ \leavevmode
+ \UseTblrTemplate { caption-tag } { default }
+ \UseTblrTemplate { caption-sep } { default }
+ \UseTblrTemplate { caption-text } { default }
+ \space
+ \UseTblrTemplate { conthead-text } { default }
+ \par
+ }
+\SetTblrTemplate { capcont} { normal }
+
+%%% --------------------------------------------------------
+%%> \section{Table Notes Templates}
+%%% --------------------------------------------------------
+
+%% By default the targets generated by \hypertarget are too low
+%% Therefore we need to use \Hy@raisedlink command to fix this problem
+%% See https://tex.stackexchange.com/questions/17057
+%% We also use \use:c in case the private command \Hy@raisedlink is removed
+\cs_new_protected:Npn \__tblr_hyper_target:n #1
+ {
+ \cs_if_exist:NT \hypertarget
+ {
+ \use:c { Hy@raisedlink }
+ {
+ \hypertarget
+ { tblr / \int_use:N \g__tblr_table_count_int / \tl_to_str:n {#1} }
+ { }
+ }
+ }
+ }
+\cs_generate_variant:Nn \__tblr_hyper_target:n { V }
+
+\cs_new_protected:Npn \__tblr_hyper_link:nn #1 #2
+ {
+ \cs_if_exist:NTF \hyperlink
+ {
+ \hyperlink
+ { tblr / \int_use:N \g__tblr_table_count_int / \tl_to_str:n {#1} }
+ { #2 }
+ }
+ { #2 }
+ }
+
+\DefTblrTemplate { note-border } { empty }
+ {
+ \hypersetup { pdfborder = { 0 ~ 0 ~ 0 } }
+ }
+\DefTblrTemplate { note-border } { normal }
+ {
+ \hypersetup { pdfborder = { 0 ~ 0 ~ 1 } }
+ }
+\SetTblrTemplate { note-border } { empty }
+
+\NewDocumentCommand \TblrNote { m }
+ {
+ \cs_if_exist:NT \hypersetup { \ExpTblrTemplate { note-border }{ default } }
+ \__tblr_hyper_link:nn {#1}
+ { \textsuperscript { \sffamily \UseTblrFont { note-tag } #1 } }
+ }
+
+\DefTblrTemplate { note-tag } { empty } { }
+\DefTblrTemplate { note-tag } { normal }
+ {
+ \textsuperscript { \sffamily \UseTblrFont { note-tag } \InsertTblrNoteTag }
+ }
+\SetTblrTemplate { note-tag } { normal }
+
+\DefTblrTemplate { note-target } { normal }
+ {
+ \__tblr_hyper_target:V \InsertTblrNoteTag
+ }
+\SetTblrTemplate { note-target } { normal }
+
+\DefTblrTemplate { note-sep } { empty } { }
+\DefTblrTemplate { note-sep } { normal } { \space }
+\SetTblrTemplate { note-sep } { normal }
+
+\DefTblrTemplate { note-text } { empty } { }
+\DefTblrTemplate { note-text } { normal } { \InsertTblrNoteText }
+\SetTblrTemplate { note-text } { normal }
+
+\DefTblrTemplate { note } { empty } { }
+\DefTblrTemplate { note } { plain }
+ {
+ \MapTblrNotes
+ {
+ \noindent
+ \UseTblrTemplate { note-tag } { default }
+ \UseTblrTemplate { note-target } { default }
+ \UseTblrTemplate { note-sep } { default }
+ \UseTblrTemplate { note-text } { default }
+ \par
+ }
+ }
+\DefTblrTemplate { note } { normal }
+ {
+ \UseTblrAlign { note }
+ \UseTblrIndent { note }
+ \MapTblrNotes
+ {
+ \hangindent = 0.7em
+ \hangafter = 1
+ \UseTblrHang { note }
+ \leavevmode
+ \hbox_to_wd:nn { \the\hangindent }
+ {
+ \UseTblrTemplate { note-tag } { default }
+ \UseTblrTemplate { note-target } { default }
+ \hfil
+ }
+ \UseTblrTemplate { note-text } { default }
+ \par
+ }
+ }
+\DefTblrTemplate { note } { inline }
+ {
+ \UseTblrAlign { note }
+ \UseTblrIndent { note }
+ \UseTblrHang { note }
+ \leavevmode
+ \MapTblrNotes
+ {
+ \UseTblrTemplate { note-tag } { default }
+ \UseTblrTemplate { note-target } { default }
+ \UseTblrTemplate { note-sep } { default }
+ \UseTblrTemplate { note-text } { default }
+ \quad
+ }
+ \par
+ }
+\SetTblrTemplate { note } { normal }
+
+%%% --------------------------------------------------------
+%%> \section{Table Remarks Templates}
+%%% --------------------------------------------------------
+
+\DefTblrTemplate { remark-tag } { empty } { }
+\DefTblrTemplate { remark-tag } { normal }
+ {
+ \itshape \UseTblrFont { remark-tag } \InsertTblrRemarkTag
+ }
+\SetTblrTemplate { remark-tag } { normal }
+
+\DefTblrTemplate { remark-sep } { empty } { }
+\DefTblrTemplate { remark-sep } { normal } { : \space }
+\SetTblrTemplate { remark-sep } { normal }
+
+\DefTblrTemplate { remark-text } { empty } { }
+\DefTblrTemplate { remark-text } { normal } { \InsertTblrRemarkText }
+\SetTblrTemplate { remark-text } { normal }
+
+\DefTblrTemplate { remark } { empty } { }
+\DefTblrTemplate { remark } { plain }
+ {
+ \MapTblrRemarks
+ {
+ \noindent
+ \UseTblrTemplate { remark-tag } { default }
+ \UseTblrTemplate { remark-sep } { default }
+ \UseTblrTemplate { remark-text } { default }
+ \par
+ }
+ }
+\DefTblrTemplate { remark } { normal }
+ {
+ \UseTblrAlign { remark }
+ \UseTblrIndent { remark }
+ \MapTblrRemarks
+ {
+ \hangindent = 0.7em
+ \hangafter = 1
+ \UseTblrHang { remark }
+ \leavevmode
+ \UseTblrTemplate { remark-tag } { default }
+ \UseTblrTemplate { remark-sep } { default }
+ \UseTblrTemplate { remark-text } { default }
+ \par
+ }
+ }
+\DefTblrTemplate { remark } { inline }
+ {
+ \UseTblrAlign { remark }
+ \UseTblrIndent { remark }
+ \UseTblrHang { remark }
+ \leavevmode
+ \MapTblrRemarks
+ {
+ \UseTblrTemplate { remark-tag } { default }
+ \UseTblrTemplate { remark-sep } { default }
+ \UseTblrTemplate { remark-text } { default }
+ \quad
+ }
+ \par
+ }
+\SetTblrTemplate { remark } { normal }
+
+%%% --------------------------------------------------------
+%%> \section{Header and Footer Templates}
+%%% --------------------------------------------------------
+
+\tl_new:N \g__tblr_template_firsthead_default_tl
+\tl_new:N \g__tblr_template_middlehead_default_tl
+\tl_new:N \g__tblr_template_lasthead_default_tl
+\tl_new:N \g__tblr_template_firstfoot_default_tl
+\tl_new:N \g__tblr_template_middlefoot_default_tl
+\tl_new:N \g__tblr_template_lastfoot_default_tl
+
+\keys_define:nn { tblr-def-template }
+ {
+ head .meta:n = { firsthead, middlehead, lasthead },
+ foot .meta:n = { firstfoot, middlefoot, lastfoot },
+ }
+
+\keys_define:nn { tblr-set-template }
+ {
+ head .meta:n = { firsthead, middlehead, lasthead },
+ foot .meta:n = { firstfoot, middlefoot, lastfoot },
+ }
+
+\DefTblrTemplate { head } { empty } { }
+\DefTblrTemplate { foot } { empty } { }
+
+\DefTblrTemplate { firsthead } { normal }
+ {
+ \UseTblrTemplate { caption } { default }
+ }
+
+\DefTblrTemplate { middlehead, lasthead } { normal }
+ {
+ \UseTblrTemplate { capcont } { default }
+ }
+
+\DefTblrTemplate { firstfoot, middlefoot } { normal }
+ {
+ \UseTblrTemplate { contfoot } { default }
+ }
+
+\DefTblrTemplate { lastfoot } { normal }
+ {
+ \UseTblrTemplate { note } { default }
+ \UseTblrTemplate { remark } { default }
+ }
+
+\SetTblrTemplate { head } { normal }
+\SetTblrTemplate { foot } { normal }
+
+%%% --------------------------------------------------------
+%%> \section{Build the Whole Table}
+%%% --------------------------------------------------------
+
+\cs_new:Npn \__tblr_box_height:N #1
+ {
+ \dim_eval:n { \box_ht:N #1 + \box_dp:N #1 }
+ }
+
+\cs_new_protected:Npn \__tblr_build_head_foot:
+ {
+ \__tblr_build_row_head_foot:
+ \__tblr_build_table_head_foot:
+ }
+
+\tl_new:N \l__tblr_row_head_tl
+\tl_new:N \l__tblr_row_foot_tl
+\box_new:N \l__tblr_row_head_box
+\box_new:N \l__tblr_row_foot_box
+\dim_new:N \l__tblr_row_head_foot_dim
+
+\cs_new_protected:Npn \__tblr_build_row_head_foot:
+ {
+ %% \l__tblr_row_head_tl and \l__tblr_row_foot_tl may be empty
+ \tl_set:Nx \l__tblr_row_head_tl { \__tblr_prop_item:ne { inner } { rowhead } }
+ \int_compare:nNnTF { \l__tblr_row_head_tl + 0 } > { 0 }
+ { \__tblr_build_one_table:nn {1} { \l__tblr_row_head_tl } }
+ { \__tblr_build_one_hline:n {1} }
+ \box_set_eq:NN \l__tblr_row_head_box \l__tblr_table_box
+ \tl_set:Nx \l__tblr_row_foot_tl { \__tblr_prop_item:ne { inner } { rowfoot } }
+ \int_compare:nNnTF { \l__tblr_row_foot_tl + 0 } > { 0 }
+ {
+ \__tblr_build_one_table:nn
+ { \c@rowcount - \l__tblr_row_foot_tl + 1 } { \c@rowcount }
+ }
+ { \__tblr_build_one_hline:n { \int_eval:n { \c@rowcount + 1 } } }
+ \box_set_eq:NN \l__tblr_row_foot_box \l__tblr_table_box
+ \dim_set:Nn \l__tblr_row_head_foot_dim
+ {
+ \__tblr_box_height:N \l__tblr_row_head_box
+ + \__tblr_box_height:N \l__tblr_row_foot_box
+ }
+ }
+
+\dim_new:N \tablewidth
+
+\cs_new_protected:Npn \__tblr_get_table_width:
+ {
+ \dim_zero:N \tablewidth
+ \int_step_inline:nn { \c@colcount }
+ {
+ \dim_add:Nn \tablewidth
{
- \__tblr_text_item:ne { hline } { [\l__tblr_i_tl] / @hline-height }
+ \__tblr_spec_item:nn { vline } { [##1] / @vline-width }
+
- \__tblr_data_item:nen { row } { \l__tblr_i_tl } { abovesep }
+ \__tblr_data_item:nnn { column } {##1} { leftsep }
+
- \__tblr_data_item:nen { row } { \l__tblr_i_tl } { @row-height }
+ \__tblr_data_item:nnn { column } {##1} { @col-width }
+
- \__tblr_data_item:nen { row } { \l__tblr_i_tl } { belowsep }
+ \__tblr_data_item:nnn { column } {##1} { rightsep }
}
- \dim_compare:nNnTF
- { \l_tmpa_dim } > { \l__tblr_remain_height_dim }
+ }
+ \dim_add:Nn \tablewidth
+ {
+ \__tblr_spec_item:ne { vline }
+ { [\int_eval:n { \c@colcount + 1 }] / @vline-width }
+ }
+ }
+
+\box_new:N \l__tblr_table_firsthead_box
+\box_new:N \l__tblr_table_middlehead_box
+\box_new:N \l__tblr_table_lasthead_box
+\box_new:N \l__tblr_table_firstfoot_box
+\box_new:N \l__tblr_table_middlefoot_box
+\box_new:N \l__tblr_table_lastfoot_box
+
+\cs_new_protected:Npn \__tblr_build_table_head_foot:
+ {
+ \__tblr_get_table_width:
+ \__tblr_build_table_head_aux:Nn \l__tblr_table_firsthead_box
+ {
+ \__tblr_build_table_label_entry:
+ \UseTblrTemplate { firsthead } { default }
+ }
+ \__tblr_build_table_head_aux:Nn
+ \l__tblr_table_middlehead_box { \UseTblrTemplate { middlehead } { default } }
+ \__tblr_build_table_head_aux:Nn
+ \l__tblr_table_lasthead_box { \UseTblrTemplate { lasthead } { default } }
+ \__tblr_build_table_foot_aux:Nn
+ \l__tblr_table_firstfoot_box { \UseTblrTemplate { firstfoot } { default } }
+ \__tblr_build_table_foot_aux:Nn
+ \l__tblr_table_middlefoot_box { \UseTblrTemplate { middlefoot } { default } }
+ \__tblr_build_table_foot_aux:Nn
+ \l__tblr_table_lastfoot_box { \UseTblrTemplate { lastfoot } { default } }
+ }
+
+\cs_new_protected:Npn \__tblr_build_tall_table_head_foot:
+ {
+ \__tblr_get_table_width:
+ \__tblr_build_table_head_aux:Nn \l__tblr_table_firsthead_box
+ {
+ \__tblr_build_table_label_entry:
+ \UseTblrTemplate { firsthead } { default }
+ }
+ \__tblr_build_table_foot_aux:Nn
+ \l__tblr_table_lastfoot_box { \UseTblrTemplate { lastfoot } { default } }
+ }
+
+\cs_new_protected:Npn \__tblr_build_table_label_entry:
+ {
+ \tl_set:Nx \l_tmpa_tl { \InsertTblrText { label } }
+ \tl_if_eq:NnTF \l_tmpa_tl { none }
+ {
+ \SetTblrTemplate { caption-tag }{ empty }
+ \SetTblrTemplate { caption-sep }{ empty }
+ }
+ {
+ \refstepcounter { table }
+ \tl_if_empty:NF \l_tmpa_tl { \exp_args:NV \label \l_tmpa_tl }
+ }
+ \tl_set:Nx \l_tmpb_tl { \InsertTblrText { entry } }
+ \tl_if_eq:NnF \l_tmpb_tl { none }
+ { \UseTblrTemplate { caption-lot } { default } }
+ }
+
+\cs_new_protected:Npn \__tblr_build_table_head_aux:Nn #1 #2
+ {
+ \vbox_set:Nn #1
+ {
+ \hsize = \tablewidth
+ \parindent = 0pt \relax
+ \vbox:n {#2}
+ \skip_vertical:n { \__tblr_spec_item:nn { outer } { headsep } }
+ }
+ }
+
+\cs_new_protected:Npn \__tblr_build_table_foot_aux:Nn #1 #2
+ {
+ \vbox_set:Nn #1
+ {
+ \hsize = \tablewidth
+ \skip_vertical:n { \__tblr_spec_item:nn { outer } { footsep } }
+ \parindent = 0pt \relax
+ \vbox:n {#2}
+ }
+ }
+
+\cs_new_protected:Npn \__tblr_build_whole:
+ {
+ \tl_if_eq:enTF { \__tblr_spec_item:nn { outer } { long } } { true }
+ { \__tblr_build_long_table:e { \__tblr_spec_item:nn { outer } { halign } } }
+ {
+ \tl_if_eq:enTF { \__tblr_spec_item:nn { outer } { tall } } { true }
+ {
+ \__tblr_build_tall_table:e
+ { \__tblr_spec_item:nn { outer } { valign } }
+ }
+ {
+ \__tblr_build_short_table:e
+ { \__tblr_spec_item:nn { outer } { valign } }
+ }
+ }
+ }
+
+\dim_new:N \l__tblr_remain_height_dim
+\int_new:N \l__tblr_long_from_int
+\int_new:N \l__tblr_long_to_int
+\int_new:N \l__tblr_curr_i_int
+\int_new:N \l__tblr_prev_i_int
+\int_new:N \l__tblr_table_page_int
+\bool_new:N \l__tblr_page_break_curr_bool
+\bool_new:N \l__tblr_page_break_prev_bool
+
+%% #1: table alignment
+%% For long table, we need to leave hmode first to get correct \pagetotal
+%% Also remove topskip and presep if we are at the beginning of the page
+\cs_new_protected:Npn \__tblr_build_long_table:n #1
+ {
+ \LogTblrTracing { page }
+ \par
+ \LogTblrTracing { page }
+ \dim_compare:nNnTF { \pagegoal } = { \maxdimen }
+ { \hbox{}\kern-\topskip\nobreak }
+ { \skip_vertical:n { \__tblr_spec_item:nn { outer } { presep } } }
+ \LogTblrTracing { page }
+ \nointerlineskip
+ \mode_leave_vertical: % enter horizontal mode to update \pagetotal
+ \LogTblrTracing { page }
+ \hrule height ~ 0pt
+ \nobreak % prevent page break after \hrule (see issue #42)
+ \LogTblrTracing { page }
+ \int_set:Nn \l__tblr_table_page_int {1}
+ \__tblr_build_head_foot:
+ \dim_set:Nn \l__tblr_remain_height_dim
+ { \pagegoal - \pagetotal - \l__tblr_row_head_foot_dim }
+ \int_set:Nn \l__tblr_long_from_int { \l__tblr_row_head_tl + 1 }
+ \int_set:Nn \l__tblr_long_to_int { \c@rowcount - ( \l__tblr_row_foot_tl + 0 ) }
+ \int_set:Nn \l__tblr_curr_i_int { \l__tblr_long_from_int - 1 }
+ \int_do_while:nNnn { \l__tblr_curr_i_int } < { \l__tblr_long_to_int }
+ {
+ \int_set_eq:NN \l__tblr_prev_i_int \l__tblr_curr_i_int
+ \__tblr_get_next_table_rows:NNNN
+ \l__tblr_long_to_int \l__tblr_curr_i_int
+ \l_tmpa_dim \l__tblr_page_break_curr_bool
+ \__tblr_check_table_page_break:NNN
+ \l__tblr_remain_height_dim \l_tmpa_dim \l__tblr_page_break_prev_bool
+ \__tblr_do_if_tracing:nn { page } { \int_log:N \l__tblr_curr_i_int }
+ \bool_if:NTF \l__tblr_page_break_prev_bool
{
- \tl_log:N \l__tblr_i_tl
- \__tblr_build_page_table:nnx {#1}
- { \l__tblr_long_from_tl } { \int_eval:n { \l__tblr_i_tl - 1 } }
+ \int_compare:nNnTF
+ { \l__tblr_long_from_int } > { \l__tblr_prev_i_int }
+ {
+ % See issue #42: if longtblr starts at the bottom of a page,
+ % \pagetotal maybe exceed \pagegoal after adding presep,
+ % or after adding rowhead or rowfoot of the table.
+ % In these cases, we will not typeset table in this page,
+ % but rather do some negative \vskip and execute \newpage.
+ \skip_vertical:n { \pagegoal - \pagetotal }
+ }
+ {
+ \__tblr_build_page_table:nnx {#1}
+ { \int_use:N \l__tblr_long_from_int }
+ { \int_use:N \l__tblr_prev_i_int }
+ \int_incr:N \l__tblr_table_page_int
+ \int_set:Nn \l__tblr_long_from_int { \l__tblr_prev_i_int + 1 }
+ }
\newpage
\hbox{}\kern-\topskip\nobreak
- \leavevmode
- %\dim_log:N \pagegoal
- %\dim_log:N \pagetotal
+ \noindent
+ \LogTblrTracing { page }
\dim_set:Nn \l__tblr_remain_height_dim
- { \pagegoal - \pagetotal - \l_tmpa_dim }
- \tl_set_eq:NN \l__tblr_long_from_tl \l__tblr_i_tl
+ { \pagegoal - \pagetotal - \l__tblr_row_head_foot_dim - \l_tmpa_dim }
}
{
- \dim_add:Nn \l__tblr_remain_height_dim { -\l_tmpa_dim }
+ \bool_if:NTF \l__tblr_page_break_curr_bool
+ {
+ \__tblr_build_page_table:nnx {#1}
+ { \int_use:N \l__tblr_long_from_int }
+ { \int_use:N \l__tblr_curr_i_int }
+ \int_incr:N \l__tblr_table_page_int
+ \newpage
+ \hbox{}\kern-\topskip\nobreak
+ \noindent
+ \LogTblrTracing { page }
+ \dim_set:Nn \l__tblr_remain_height_dim
+ { \pagegoal - \pagetotal - \l__tblr_row_head_foot_dim }
+ \int_set:Nn \l__tblr_long_from_int { \l__tblr_curr_i_int + 1 }
+ }
+ { \dim_add:Nn \l__tblr_remain_height_dim { -\l_tmpa_dim } }
}
}
- \__tblr_build_page_table:nnn {#1} { \l__tblr_long_from_tl } { \c@rowcount }
+ \int_compare:nNnTF { \l__tblr_table_page_int } = {1}
+ {
+ \box_set_eq:NN \l__tblr_table_head_box \l__tblr_table_firsthead_box
+ \box_set_eq:NN \l__tblr_table_foot_box \l__tblr_table_lastfoot_box
+ }
+ {
+ \box_set_eq:NN \l__tblr_table_head_box \l__tblr_table_lasthead_box
+ \box_set_eq:NN \l__tblr_table_foot_box \l__tblr_table_lastfoot_box
+ }
+ \__tblr_build_page_table:nnn {#1}
+ { \int_use:N \l__tblr_long_from_int } { \int_use:N \l__tblr_long_to_int }
+ \skip_vertical:n { \__tblr_spec_item:nn { outer } { postsep } }
+ % In the past we used "\hrule height ~ 0pt" to get strict postsep,
+ % but the postsep was not discarded when page breaks, see issue #39.
+ % Therefore we use \nointerlineskip here.
+ \nointerlineskip
}
+\cs_generate_variant:Nn \__tblr_build_long_table:n { e }
+%% #1: int with index of the last row; #2: int with index of current row;
+%% #3: row dimension; #4: break page or not.
+\cs_new_protected:Npn \__tblr_get_next_table_rows:NNNN #1 #2 #3 #4
+ {
+ \bool_set_true:N \l_tmpa_bool
+ \dim_zero:N #3
+ \bool_set_false:N #4
+ \bool_while_do:Nn \l_tmpa_bool
+ {
+ \int_incr:N #2
+ \dim_add:Nn #3
+ {
+ \__tblr_data_item:nen { row } { \int_use:N #2 } { abovesep }
+ +
+ \__tblr_data_item:nen { row } { \int_use:N #2 } { @row-height }
+ +
+ \__tblr_data_item:nen { row } { \int_use:N #2 } { belowsep }
+ +
+ \__tblr_spec_item:ne { hline }
+ { [ \int_eval:n { #2 + 1 } ] / @hline-height }
+ }
+ \int_compare:nNnTF {#2} < {#1}
+ {
+ \tl_set:Nx \l__tblr_b_tl
+ { \__tblr_data_item:nen { row } { \int_eval:n { #2 + 1 } } { break } }
+ \int_compare:nNnTF { \l__tblr_b_tl } < { 0 }
+ { \bool_set_true:N \l_tmpa_bool }
+ {
+ \bool_set_false:N \l_tmpa_bool
+ \int_compare:nNnT { \l__tblr_b_tl } > { 0 } { \bool_set_true:N #4 }
+ }
+ }
+ { \bool_set_false:N \l_tmpa_bool }
+ }
+ }
+
+\box_new:N \l__tblr_table_head_box
+\box_new:N \l__tblr_table_foot_box
+\dim_new:N \l__tblr_table_head_foot_dim
+\dim_new:N \l__tblr_table_head_body_foot_dim
+
+%% #1: remain dimension; #2: row dimension; #3: break page or not
+\cs_new_protected:Npn \__tblr_check_table_page_break:NNN #1 #2 #3
+ {
+ \int_compare:nNnTF { \l__tblr_table_page_int } = {1}
+ {
+ \dim_set:Nn \l__tblr_table_head_body_foot_dim
+ {
+ \__tblr_box_height:N \l__tblr_table_firsthead_box
+ + #2 + \__tblr_box_height:N \l__tblr_table_firstfoot_box
+ }
+ \box_set_eq:NN \l__tblr_table_head_box \l__tblr_table_firsthead_box
+ \dim_compare:nNnTF
+ { \l__tblr_table_head_body_foot_dim } > {#1}
+ {
+ \bool_set_true:N #3
+ \box_set_eq:NN \l__tblr_table_foot_box \l__tblr_table_firstfoot_box
+ }
+ { \bool_set_false:N #3 }
+ }
+ {
+ \dim_set:Nn \l__tblr_table_head_body_foot_dim
+ {
+ \__tblr_box_height:N \l__tblr_table_middlehead_box
+ + #2 + \__tblr_box_height:N \l__tblr_table_middlefoot_box
+ }
+ \box_set_eq:NN \l__tblr_table_head_box \l__tblr_table_middlehead_box
+ \dim_compare:nNnTF
+ { \l__tblr_table_head_body_foot_dim } > {#1}
+ {
+ \bool_set_true:N #3
+ \box_set_eq:NN \l__tblr_table_foot_box \l__tblr_table_middlefoot_box
+ }
+ { \bool_set_false:N #3 }
+ }
+ }
+
+\box_new:N \l__tblr_table_box
+
+%% #1: table alignment; #2: row from; #3: row to
\cs_new_protected:Npn \__tblr_build_page_table:nnn #1 #2 #3
{
+ \bool_set_false:N \l__tblr_build_first_hline_bool
+ \bool_set_false:N \l__tblr_build_last_hline_bool
\__tblr_build_one_table:nn {#2} {#3}
+ \vbox_set:Nn \l__tblr_table_box
+ {
+ \box_use:N \l__tblr_table_head_box
+ \__tblr_cover_two_vboxes:NN \l__tblr_row_head_box \l__tblr_table_box
+ \box_use:N \l__tblr_row_foot_box
+ \hrule height ~ 0pt
+ \box_use:N \l__tblr_table_foot_box
+ }
\__tblr_halign_whole:Nn \l__tblr_table_box #1
}
\cs_generate_variant:Nn \__tblr_build_page_table:nnn { nnx }
+%% To solve the problem of missing hlines of long tables in some PDF readers,
+%% We need to draw body rows before head rows (see issue #88).
+\cs_new_protected:Npn \__tblr_cover_two_vboxes:NN #1 #2
+ {
+ \dim_set:Nn \l_tmpa_dim { \box_ht:N #1 + \box_dp:N #1 }
+ \dim_set:Nn \l_tmpb_dim { \box_ht:N #2 + \box_dp:N #2 }
+ \skip_vertical:N \l_tmpa_dim
+ \hrule height ~ 0pt
+ \box_use:N #2
+ \skip_vertical:n { - \l_tmpa_dim - \l_tmpb_dim }
+ \hrule height ~ 0pt
+ \box_use:N #1
+ \skip_vertical:N \l_tmpb_dim
+ \hrule height ~ 0pt
+ }
+
\cs_new_protected:Npn \__tblr_halign_whole:Nn #1 #2
{
\noindent
@@ -3818,42 +5456,129 @@
}
}
+%% #1: table alignment
+%% For tall table, we need to leave vmode first.
+%% Since there may be \centering in table environment,
+%% We use \raggedright to reset alignement for table head/foot.
+\cs_new_protected:Npn \__tblr_build_tall_table:n #1
+ {
+ \mode_leave_vertical:
+ \raggedright
+ \__tblr_build_tall_table_head_foot:
+ \__tblr_build_one_table:nn {1} {\c@rowcount}
+ \vbox_set:Nn \l__tblr_table_box
+ {
+ \box_use:N \l__tblr_table_firsthead_box
+ \hrule height ~ 0pt
+ \box_use:N \l__tblr_table_box
+ \hrule height ~ 0pt
+ \box_use:N \l__tblr_table_lastfoot_box
+ }
+ \__tblr_valign_whole:Nn \l__tblr_table_box #1
+ }
+\cs_generate_variant:Nn \__tblr_build_tall_table:n { e }
+
+%% #1: table alignment
+%% For short table, we need to leave vmode first
\cs_new_protected:Npn \__tblr_build_short_table:n #1
{
+ \mode_leave_vertical:
\__tblr_build_one_table:nn {1} {\c@rowcount}
\__tblr_valign_whole:Nn \l__tblr_table_box #1
}
+\cs_generate_variant:Nn \__tblr_build_short_table:n { e }
+
+\bool_new:N \l__tblr_build_first_hline_bool
+\bool_new:N \l__tblr_build_last_hline_bool
+\bool_set_true:N \l__tblr_build_first_hline_bool
+\bool_set_true:N \l__tblr_build_last_hline_bool
+\box_new:N \l__tblr_table_hlines_box
+\box_new:N \l__tblr_hline_box
+\box_new:N \l__tblr_row_box
%% #1: row from; #2: row to
+%% To fix disappeared hlines with colorful tables in Adobe Reader (see #76),
+%% we collect all hlines and draw them at the end of the table.
\cs_new_protected:Npn \__tblr_build_one_table:nn #1 #2
{
+ \box_clear:N \l__tblr_table_hlines_box
\vbox_set:Nn \l__tblr_table_box
{
\int_step_variable:nnNn {#1} {#2} \l__tblr_i_tl
{
- \hbox:n { \__tblr_build_hline:V \l__tblr_i_tl }
+ \bool_lazy_or:nnT
+ { \int_compare_p:nNn { \l__tblr_i_tl } > {#1} }
+ { \bool_if_p:N \l__tblr_build_first_hline_bool }
+ { \__tblr_put_one_hline:n { \__tblr_build_hline:V \l__tblr_i_tl } }
\hrule height ~ 0pt % remove lineskip between hlines and rows
- \hbox:n { \__tblr_build_row:N \l__tblr_i_tl }
+ \__tblr_put_one_row:n { \__tblr_build_row:N \l__tblr_i_tl }
\hrule height ~ 0pt
}
- \hbox:n { \__tblr_build_hline:n { \int_eval:n {#2 + 1} } }
+ \bool_if:NT \l__tblr_build_last_hline_bool
+ {
+ \__tblr_put_one_hline:n
+ { \__tblr_build_hline:n { \int_eval:n {#2 + 1} } }
+ }
+ \skip_vertical:n
+ {
+ - \box_ht:N \l__tblr_table_hlines_box
+ - \box_dp:N \l__tblr_table_hlines_box
+ }
+ \box_use:N \l__tblr_table_hlines_box
}
+ \bool_set_true:N \l__tblr_build_first_hline_bool
+ \bool_set_true:N \l__tblr_build_last_hline_bool
}
+\cs_new_protected:Npn \__tblr_put_one_hline:n #1
+ {
+ \hbox_set:Nn \l__tblr_hline_box {#1}
+ \skip_vertical:n { \box_ht:N \l__tblr_hline_box + \box_dp:N \l__tblr_hline_box }
+ \vbox_set:Nn \l__tblr_table_hlines_box
+ {
+ \vbox_unpack:N \l__tblr_table_hlines_box
+ \box_use:N \l__tblr_hline_box
+ }
+ }
+
+\cs_new_protected:Npn \__tblr_put_one_row:n #1
+ {
+ \hbox_set:Nn \l__tblr_row_box {#1}
+ \vbox_set:Nn \l__tblr_table_hlines_box
+ {
+ \vbox_unpack:N \l__tblr_table_hlines_box
+ \skip_vertical:n
+ { \box_ht:N \l__tblr_row_box + \box_dp:N \l__tblr_row_box }
+ }
+ \box_use:N \l__tblr_row_box
+ }
+
+%% #1: hline number
+\cs_new_protected:Npn \__tblr_build_one_hline:n #1
+ {
+ \vbox_set:Nn \l__tblr_table_box { \hbox:n { \__tblr_build_hline:n { #1 } } }
+ }
+
+\tl_new:N \__tblr_vbox_align_tl
+\tl_const:Nn \__tblr_vbox_t_tl {t}
+\tl_const:Nn \__tblr_vbox_m_tl {m}
+\tl_const:Nn \__tblr_vbox_c_tl {c}
+\tl_const:Nn \__tblr_vbox_b_tl {b}
+
\cs_new_protected:Npn \__tblr_valign_whole:Nn #1 #2
{
\group_begin:
- \tl_set:Nn \__tlbr_vbox_align_tl {#2}
+ \tl_set:Nn \__tblr_vbox_align_tl {#2}
\dim_set:Nn \l__tblr_t_dim { \box_ht:N #1 + \box_dp:N #1 }
- \tl_case:NnF \__tlbr_vbox_align_tl
+ \tl_case:NnF \__tblr_vbox_align_tl
{
- \__tlbr_vbox_m_tl
+ \__tblr_vbox_m_tl
{ \__tblr_valign_whole_middle:N #1 }
- \__tlbr_vbox_c_tl
+ \__tblr_vbox_c_tl
{ \__tblr_valign_whole_middle:N #1 }
- \__tlbr_vbox_t_tl
+ \__tblr_vbox_t_tl
{ \__tblr_valign_whole_top:N #1 }
- \__tlbr_vbox_b_tl
+ \__tblr_vbox_b_tl
{ \__tblr_valign_whole_bottom:N #1 }
}
{ \__tblr_valign_whole_middle:N #1 }
@@ -3868,10 +5593,10 @@
\cs_new_protected:Npn \__tblr_valign_whole_top:N #1
{
\tl_set:Nx \l__tblr_a_tl
- { \__tblr_text_item:ne { hline } { [1] / @hline-height } }
+ { \__tblr_spec_item:ne { hline } { [1] / @hline-height } }
%% Note that \l__tblr_b_tl may be empty
\tl_set:Nx \l__tblr_b_tl
- { \__tblr_prop_item:ne { table } { baseline } }
+ { \__tblr_prop_item:ne { inner } { baseline } }
\bool_lazy_or:nnTF
{ \dim_compare_p:nNn { \l__tblr_a_tl } = { 0pt } }
{ \int_compare_p:nNn { \l__tblr_b_tl + 0 } = { 1 } }
@@ -3902,12 +5627,12 @@
{
\tl_set:Nx \l__tblr_a_tl
{
- \__tblr_text_item:ne { hline }
+ \__tblr_spec_item:ne { hline }
{ [\int_eval:n {\c@rowcount + 1}] / @hline-height }
}
%% Note that \l__tblr_b_tl may be empty
\tl_set:Nx \l__tblr_b_tl
- { \__tblr_prop_item:ne { table } { baseline } }
+ { \__tblr_prop_item:ne { inner } { baseline } }
\bool_lazy_or:nnTF
{ \dim_compare_p:nNn { \l__tblr_a_tl } = { 0pt } }
{ \int_compare_p:nNn { \l__tblr_b_tl + 0 } = { \c@rowcount } }
@@ -3937,6 +5662,10 @@
\box_use_drop:N #1
}
+%%% --------------------------------------------------------
+%%> \section{Build Table Components}
+%%% --------------------------------------------------------
+
\dim_new:N \l__tblr_col_o_wd_dim
\dim_new:N \l__tblr_col_b_wd_dim
@@ -3952,9 +5681,9 @@
\cs_new_protected:Npn \__tblr_build_hline_segment:nn #1 #2
{
\tl_set:Nx \l__tblr_n_tl
- { \__tblr_text_item:ne { hline } { [#1] / @hline-count } }
+ { \__tblr_spec_item:ne { hline } { [#1] / @hline-count } }
\tl_set:Nx \l__tblr_o_tl
- { \__tblr_text_item:ne { hline } { [#1][#2] / omit } }
+ { \__tblr_spec_item:ne { hline } { [#1][#2] / omit } }
\__tblr_get_col_outer_width_border_width:nNN {#2}
\l__tblr_col_o_wd_dim \l__tblr_col_b_wd_dim
\tl_if_empty:NTF \l__tblr_o_tl
@@ -3975,7 +5704,7 @@
\cs_new_protected:Npn \__tblr_build_hline_segment_real:nn #1 #2
{
\tl_set:Nx \l__tblr_s_tl
- { \__tblr_prop_item:ne { table } { rulesep } }
+ { \__tblr_prop_item:ne { inner } { rulesep } }
\vbox_set:Nn \l__tblr_c_box
{
%% add an empty hbox to support vbox width
@@ -3983,14 +5712,17 @@
\int_step_inline:nn { \l__tblr_n_tl }
{
\tl_set:Nx \l__tblr_h_tl
- { \__tblr_text_item:ne { hline } { [#1](##1) / @hline-height } }
+ { \__tblr_spec_item:ne { hline } { [#1](##1) / @hline-height } }
\hrule height ~ 0pt % remove lineskip
\hbox_set_to_wd:Nnn \l__tblr_b_box { \l__tblr_col_o_wd_dim }
{
+ \__tblr_get_hline_left_right_skips:nnn {#1} {#2} {##1}
+ \skip_horizontal:N \l__tblr_hline_leftskip_dim
\tl_set:Nx \l__tblr_f_tl
- { \__tblr_text_item:ne { hline } { [#1][#2](##1) / fg } }
+ { \__tblr_spec_item:ne { hline } { [#1][#2](##1) / fg } }
\tl_if_empty:NF \l__tblr_f_tl { \color{\l__tblr_f_tl} }
\__tblr_get_hline_segment_child:nnn {#1} {#2} {##1}
+ \skip_horizontal:N \l__tblr_hline_rightskip_dim
}
\box_set_ht:Nn \l__tblr_b_box { \l__tblr_h_tl }
\box_set_dp:Nn \l__tblr_b_box { 0pt }
@@ -4009,10 +5741,10 @@
\cs_new_protected:Npn \__tblr_get_col_outer_width_border_width:nNN #1 #2 #3
{
\dim_set:Nn #3
- { \__tblr_text_item:ne { vline } { [\int_eval:n {#1 + 1}] / @vline-width } }
+ { \__tblr_spec_item:ne { vline } { [\int_eval:n {#1 + 1}] / @vline-width } }
\dim_set:Nn #2
{
- \__tblr_text_item:ne { vline } { [#1] / @vline-width }
+ \__tblr_spec_item:ne { vline } { [#1] / @vline-width }
+
\__tblr_data_item:nen { column } {#1} { leftsep }
+
@@ -4024,24 +5756,92 @@
}
}
+\dim_new:N \l__tblr_hline_leftskip_dim
+\dim_new:N \l__tblr_hline_rightskip_dim
+
+%% Calculate left and right skips from leftpos and rightpos specifications
+%% #1: row number; #2: column number; #3: hline index;
+\cs_new_protected:Npn \__tblr_get_hline_left_right_skips:nnn #1 #2 #3
+ {
+ \tl_set:Nx \l__tblr_hline_leftpos_tl
+ { \__tblr_spec_item:ne { hline } { [#1][#2](#3) / leftpos } }
+ \tl_if_empty:NT \l__tblr_hline_leftpos_tl
+ { \tl_set:Nn \l__tblr_hline_leftpos_tl {1} } % default position
+ \tl_set:Nx \l__tblr_hline_rightpos_tl
+ { \__tblr_spec_item:ne { hline } { [#1][#2](#3) / rightpos } }
+ \tl_if_empty:NT \l__tblr_hline_rightpos_tl
+ { \tl_set:Nn \l__tblr_hline_rightpos_tl {1} } % default position
+ \fp_compare:nNnT { \l__tblr_hline_leftpos_tl } < {1}
+ {
+ \dim_set:Nn \l_tmpa_dim
+ { \__tblr_spec_item:ne { vline } { [#2] / @vline-width } }
+ \dim_set:Nn \l_tmpb_dim
+ { \__tblr_data_item:nen { column } {#2} { leftsep } }
+ \fp_compare:nNnTF { \l__tblr_hline_leftpos_tl } < {0}
+ {
+ \dim_set:Nn \l__tblr_hline_leftskip_dim
+ { \l_tmpa_dim - \l__tblr_hline_leftpos_tl \l_tmpb_dim }
+ }
+ {
+ \dim_set:Nn \l__tblr_hline_leftskip_dim
+ { \l_tmpa_dim - \l__tblr_hline_leftpos_tl \l_tmpa_dim }
+ }
+ }
+ \fp_compare:nNnT { \l__tblr_hline_rightpos_tl } < {1}
+ {
+ \dim_set:Nn \l_tmpa_dim
+ {
+ \__tblr_spec_item:ne { vline }
+ { [\int_eval:n { #2 + 1 }] / @vline-width }
+ }
+ \dim_set:Nn \l_tmpb_dim
+ { \__tblr_data_item:nen { column } {#2} { rightsep } }
+ \fp_compare:nNnTF { \l__tblr_hline_rightpos_tl } < {0}
+ {
+ \dim_set:Nn \l__tblr_hline_rightskip_dim
+ { \l_tmpa_dim - \l__tblr_hline_rightpos_tl \l_tmpb_dim }
+ }
+ {
+ \dim_set:Nn \l__tblr_hline_rightskip_dim
+ { \l_tmpa_dim - \l__tblr_hline_rightpos_tl \l_tmpa_dim }
+ }
+ }
+ }
+
\dim_new:N \l__tblr_row_ht_dim
\dim_new:N \l__tblr_row_dp_dim
\dim_new:N \l__tblr_row_abovesep_dim
\dim_new:N \l__tblr_row_belowsep_dim
+\box_new:N \l__tblr_row_vlines_box
+\box_new:N \l__tblr_vline_box
+\box_new:N \l__tblr_cell_box
%% Build current row, #1: row number
+%% To fix disappeared vlines with colorful tables in Adobe Reader (see #76),
+%% we collect all vlines and draw them at the end of the row.
\cs_new_protected:Npn \__tblr_build_row:N #1
{
+ \int_set:Nn \c@rownum {#1}
+ \__tblr_update_rowsep_registers:
\__tblr_get_row_inner_height_depth:VNNNN #1
\l__tblr_row_ht_dim \l__tblr_row_dp_dim
\l__tblr_row_abovesep_dim \l__tblr_row_belowsep_dim
\vrule width ~ 0pt ~ height ~ \l__tblr_row_ht_dim ~ depth ~ \l__tblr_row_dp_dim
+ \hbox_set:Nn \l__tblr_row_vlines_box
+ {
+ \vrule width ~ 0pt ~ height ~ \l__tblr_row_ht_dim
+ ~ depth ~ \l__tblr_row_dp_dim
+ }
\int_step_variable:nNn { \c@colcount } \l__tblr_j_tl
{
- \__tblr_build_vline_segment:nn {#1} { \l__tblr_j_tl }
- \__tblr_build_cell:NN #1 \l__tblr_j_tl
+ \__tblr_put_one_vline:n
+ { \__tblr_build_vline_segment:nn {#1} { \l__tblr_j_tl } }
+ \__tblr_put_one_cell:n { \__tblr_build_cell:NN #1 \l__tblr_j_tl }
}
- \__tblr_build_vline_segment:nn {#1} { \int_eval:n {\c@colcount + 1} }
+ \__tblr_put_one_vline:n
+ { \__tblr_build_vline_segment:nn {#1} { \int_eval:n {\c@colcount + 1} } }
+ \skip_horizontal:n { - \box_wd:N \l__tblr_row_vlines_box }
+ \box_use:N \l__tblr_row_vlines_box
}
%% Read from table specifications and calculate inner height/depth of the row
@@ -4074,13 +5874,35 @@
}
\cs_generate_variant:Nn \__tblr_get_row_inner_height_depth:nNNNN { V }
+\cs_new_protected:Npn \__tblr_put_one_vline:n #1
+ {
+ \hbox_set:Nn \l__tblr_vline_box {#1}
+ \skip_horizontal:n { \box_wd:N \l__tblr_vline_box }
+ \hbox_set:Nn \l__tblr_row_vlines_box
+ {
+ \hbox_unpack:N \l__tblr_row_vlines_box
+ \box_use:N \l__tblr_vline_box
+ }
+ }
+
+\cs_new_protected:Npn \__tblr_put_one_cell:n #1
+ {
+ \hbox_set:Nn \l__tblr_cell_box {#1}
+ \hbox_set:Nn \l__tblr_row_vlines_box
+ {
+ \hbox_unpack:N \l__tblr_row_vlines_box
+ \skip_horizontal:n { \box_wd:N \l__tblr_cell_box }
+ }
+ \box_use:N \l__tblr_cell_box
+ }
+
%% #1: row number, #2: column number
\cs_new_protected:Npn \__tblr_build_vline_segment:nn #1 #2
{
\tl_set:Nx \l__tblr_n_tl
- { \__tblr_text_item:ne { vline } { [#2] / @vline-count } }
+ { \__tblr_spec_item:ne { vline } { [#2] / @vline-count } }
\tl_set:Nx \l__tblr_o_tl
- { \__tblr_text_item:ne { vline } { [#1][#2] / omit } }
+ { \__tblr_spec_item:ne { vline } { [#1][#2] / omit } }
\tl_if_empty:NTF \l__tblr_o_tl
{
\int_compare:nNnT { \l__tblr_n_tl } > {0}
@@ -4093,7 +5915,7 @@
\cs_new_protected:Npn \__tblr_build_vline_segment_omit:nn #1 #2
{
\tl_set:Nx \l__tblr_w_tl
- { \__tblr_text_item:ne { vline } { [#2] / @vline-width } }
+ { \__tblr_spec_item:ne { vline } { [#2] / @vline-width } }
\skip_horizontal:N \l__tblr_w_tl
}
@@ -4103,29 +5925,25 @@
\cs_new_protected:Npn \__tblr_build_vline_segment_real:nn #1 #2
{
\tl_set:Nx \l__tblr_s_tl
- { \__tblr_prop_item:ne { table } { rulesep } }
- \tl_set:Nx \l__tblr_b_tl
- {
- \__tblr_text_item:ne { hline }
- { [\int_eval:n{#1 + 1}](1) / @hline-height }
- }
- \tl_if_empty:NT \l__tblr_b_tl { \tl_set:Nn \l__tblr_b_tl { 0pt } }
+ { \__tblr_prop_item:ne { inner } { rulesep } }
\hbox_set:Nn \l__tblr_a_box
{
\int_step_inline:nn { \l__tblr_n_tl }
{
\tl_set:Nx \l__tblr_w_tl
- { \__tblr_text_item:ne { vline } { [#2](##1) / @vline-width } }
+ { \__tblr_spec_item:ne { vline } { [#2](##1) / @vline-width } }
\vbox_set_to_ht:Nnn \l__tblr_b_box
{ \dim_eval:n { \l__tblr_row_ht_dim + \l__tblr_row_dp_dim } }
{
\tl_set:Nx \l__tblr_f_tl
- { \__tblr_text_item:ne { vline } { [#1][#2](##1) / fg } }
+ { \__tblr_spec_item:ne { vline } { [#1][#2](##1) / fg } }
\tl_if_empty:NF \l__tblr_f_tl { \color{\l__tblr_f_tl} }
+ \__tblr_get_vline_above_below_skips:nnn {#1} {#2} {##1}
+ \skip_vertical:N \l__tblr_vline_aboveskip_dim
\__tblr_get_vline_segment_child:nnnxx {#1} {#2} {##1}
{ \dim_eval:n { \l__tblr_row_ht_dim } }
- { \dim_eval:n { \l__tblr_row_dp_dim + \l__tblr_b_tl } }
- \skip_vertical:n { - \l__tblr_b_tl }
+ { \dim_eval:n { \l__tblr_row_dp_dim } }
+ \skip_vertical:N \l__tblr_vline_belowskip_dim
}
\box_set_wd:Nn \l__tblr_b_box { \l__tblr_w_tl }
\box_use:N \l__tblr_b_box
@@ -4139,6 +5957,68 @@
\box_use:N \l__tblr_c_box
}
+\dim_new:N \l__tblr_vline_aboveskip_dim
+\dim_new:N \l__tblr_vline_belowskip_dim
+
+%% Calculate above and below skips from abovepos and belowpos specifications
+%% #1: row number; #2: column number; #3: vline index;
+\cs_new_protected:Npn \__tblr_get_vline_above_below_skips:nnn #1 #2 #3
+ {
+ \tl_set:Nx \l__tblr_vline_abovepos_tl
+ { \__tblr_spec_item:ne { vline } { [#1][#2](#3) / abovepos } }
+ \tl_if_empty:NT \l__tblr_vline_abovepos_tl
+ {
+ \tl_set:Nn \l__tblr_vline_abovepos_tl {0} % default position
+ }
+ \tl_set:Nx \l__tblr_vline_belowpos_tl
+ { \__tblr_spec_item:ne { vline } { [#1][#2](#3) / belowpos } }
+ \tl_if_empty:NT \l__tblr_vline_belowpos_tl
+ {
+ \tl_set:Nn \l__tblr_vline_belowpos_tl {0} % default position
+ }
+ \fp_compare:nNnF { \l__tblr_vline_abovepos_tl } = {0}
+ {
+ \dim_set:Nn \l_tmpa_dim
+ { \__tblr_spec_item:ne { hline } { [#1] / @hline-height } }
+ \fp_compare:nNnTF { \l__tblr_vline_abovepos_tl } < {0}
+ {
+ \dim_set:Nn \l__tblr_vline_aboveskip_dim
+ { - \l__tblr_vline_abovepos_tl \l__tblr_row_abovesep_dim }
+ }
+ {
+ \dim_set:Nn \l__tblr_vline_aboveskip_dim
+ { - \l__tblr_vline_abovepos_tl \l_tmpa_dim }
+ }
+ }
+ %% To join two vline segment above and below a cline,
+ %% we choose to extend every vline downwards a little (#55).
+ \fp_compare:nNnTF { \l__tblr_vline_belowpos_tl } = {0}
+ {
+ \dim_set:Nn \l__tblr_vline_belowskip_dim
+ {
+ - \__tblr_spec_item:ne { hline }
+ { [\int_eval:n { #1 + 1 }](1) / @hline-height }
+ + 0pt
+ }
+ }
+ {
+ \dim_set:Nn \l_tmpa_dim
+ {
+ \__tblr_spec_item:ne { hline }
+ { [\int_eval:n { #1 + 1 }] / @hline-height }
+ }
+ \fp_compare:nNnTF { \l__tblr_vline_belowpos_tl } < {0}
+ {
+ \dim_set:Nn \l__tblr_vline_belowskip_dim
+ { - \l__tblr_vline_belowpos_tl \l__tblr_row_belowsep_dim }
+ }
+ {
+ \dim_set:Nn \l__tblr_vline_belowskip_dim
+ { - \l__tblr_vline_belowpos_tl \l_tmpa_dim }
+ }
+ }
+ }
+
\tl_new:N \l__tblr_cell_rowspan_tl
\tl_new:N \l__tblr_cell_colspan_tl
\dim_new:N \l__tblr_cell_wd_dim
@@ -4146,8 +6026,8 @@
\cs_new_protected:Npn \__tblr_build_cell:NN #1 #2
{
- \int_set:Nn \c@rownum {#1}
\int_set:Nn \c@colnum {#2}
+ \__tblr_update_colsep_registers:
\group_begin:
\tl_set:Nx \l__tblr_w_tl
{ \__tblr_data_item:nen { column } {#2} { @col-width } }
@@ -4183,9 +6063,13 @@
{
\hbox_set_to_wd:Nnn \l__tblr_a_box { \l__tblr_cell_wd_dim }
{
- \tl_if_eq:NnF \g__tblr_cell_halign_tl {l} { \hfil }
- \__tblr_get_cell_text:nn {#1} {#2}
- \tl_if_eq:NnF \g__tblr_cell_halign_tl {r} { \hfil }
+ \tl_if_eq:NnTF \g__tblr_cell_halign_tl {j}
+ { \__tblr_get_cell_text:nn {#1} {#2} }
+ {
+ \tl_if_eq:NnF \g__tblr_cell_halign_tl {l} { \hfil }
+ \__tblr_get_cell_text:nn {#1} {#2}
+ \tl_if_eq:NnF \g__tblr_cell_halign_tl {r} { \hfil }
+ }
}
\vbox_set_to_ht:Nnn \l__tblr_b_box { \l__tblr_cell_ht_dim }
{
@@ -4305,20 +6189,23 @@
%% #1: row number; #2: column number; #3: dimen register for rowsep above.
%% #4: dimen register for total height; #5: dimen register for rowsep below.
%% We can use \l__tblr_row_item_skip_size_prop which was made before
+%% But when vspan=even, there are no itemskip in the prop list.
+%% Therefore we need to calculate them from the sizes of items and skips
\cs_new_protected:Npn \__tblr_get_span_vertical_sizes:NNNNN #1 #2 #3 #4 #5
{
\dim_set:Nn #3
{ \__tblr_data_item:nen { row } {#1} { abovesep } }
\dim_zero:N #4
- \int_step_inline:nnn { #1 } { #1 + \l__tblr_cell_rowspan_tl - 2 }
- {
- \dim_add:Nn #4
- { \prop_item:Ne \l__tblr_row_item_skip_size_prop { itemskip[##1] } }
- }
\dim_add:Nn #4
+ { \prop_item:Ne \l__tblr_row_item_skip_size_prop { item[#1] } }
+ \int_step_inline:nnn { #1 + 1 } { #1 + \l__tblr_cell_rowspan_tl - 1 }
{
- \prop_item:Ne \l__tblr_row_item_skip_size_prop
- { item[\int_eval:n { #1 + \l__tblr_cell_rowspan_tl - 1 }] }
+ \dim_add:Nn #4
+ {
+ \prop_item:Ne \l__tblr_row_item_skip_size_prop { skip[##1] }
+ +
+ \prop_item:Ne \l__tblr_row_item_skip_size_prop { item[##1] }
+ }
}
\dim_set:Nn #5
{
@@ -4331,28 +6218,24 @@
%% #1: row number; #2: column number; #3: dimen register for colsep left.
%% #4: dimen register for total width; #5: dimen register for colsep right.
%% We can use \l__tblr_col_item_skip_size_prop which was made before
-%% But when hspan=minimal, there are no itemskip in the prop list.
+%% But when hspan=even or hspan=minimal, there are no itemskip in the prop list.
%% Therefore we need to calculate them from the sizes of items and skips
\cs_new_protected:Npn \__tblr_get_span_horizontal_sizes:NNNNN #1 #2 #3 #4 #5
{
\dim_set:Nn #3
{ \__tblr_data_item:nen { column } {#2} { leftsep } }
\dim_zero:N #4
- \int_step_inline:nnn { #2 } { #2 + \l__tblr_cell_colspan_tl - 2 }
+ \dim_add:Nn #4
+ { \prop_item:Ne \l__tblr_col_item_skip_size_prop { item[#2] } }
+ \int_step_inline:nnn { #2 + 1 } { #2 + \l__tblr_cell_colspan_tl - 1 }
{
\dim_add:Nn #4
- { \prop_item:Ne \l__tblr_col_item_skip_size_prop { item[##1] } }
- \dim_add:Nn #4
{
- \prop_item:Ne \l__tblr_col_item_skip_size_prop
- { skip[\int_eval:n { ##1 + 1 }] }
+ \prop_item:Ne \l__tblr_col_item_skip_size_prop { skip[##1] }
+ +
+ \prop_item:Ne \l__tblr_col_item_skip_size_prop { item[##1] }
}
}
- \dim_add:Nn #4
- {
- \prop_item:Ne \l__tblr_col_item_skip_size_prop
- { item[\int_eval:n { #2 + \l__tblr_cell_colspan_tl - 1 }] }
- }
\dim_set:Nn #5
{
\__tblr_data_item:nen { column }
@@ -4373,7 +6256,10 @@
\bool_new:N \g__tblr_tracing_text_bool
\bool_new:N \g__tblr_tracing_command_bool
-\bool_new:N \g__tblr_tracing_table_bool
+\bool_new:N \g__tblr_tracing_option_bool
+\bool_new:N \g__tblr_tracing_theme_bool
+\bool_new:N \g__tblr_tracing_outer_bool
+\bool_new:N \g__tblr_tracing_inner_bool
\bool_new:N \g__tblr_tracing_column_bool
\bool_new:N \g__tblr_tracing_row_bool
\bool_new:N \g__tblr_tracing_cell_bool
@@ -4384,6 +6270,10 @@
\bool_new:N \g__tblr_tracing_target_bool
\bool_new:N \g__tblr_tracing_cellspan_bool
\bool_new:N \g__tblr_tracing_intarray_bool
+\bool_new:N \g__tblr_tracing_page_bool
+\bool_new:N \g__tblr_tracing_step_bool
+
+\bool_gset_true:N \g__tblr_tracing_step_bool
\keys_define:nn { tblr-set-tracing }
{
@@ -4391,8 +6281,14 @@
-text .code:n = \bool_gset_false:N \g__tblr_tracing_text_bool,
+command .code:n = \bool_gset_true:N \g__tblr_tracing_command_bool,
-command .code:n = \bool_gset_false:N \g__tblr_tracing_command_bool,
- +table .code:n = \bool_gset_true:N \g__tblr_tracing_table_bool,
- -table .code:n = \bool_gset_false:N \g__tblr_tracing_table_bool,
+ +option .code:n = \bool_gset_true:N \g__tblr_tracing_option_bool,
+ -option .code:n = \bool_gset_false:N \g__tblr_tracing_option_bool,
+ +theme .code:n = \bool_gset_true:N \g__tblr_tracing_theme_bool,
+ -theme .code:n = \bool_gset_false:N \g__tblr_tracing_theme_bool,
+ +outer .code:n = \bool_gset_true:N \g__tblr_tracing_outer_bool,
+ -outer .code:n = \bool_gset_false:N \g__tblr_tracing_outer_bool,
+ +inner .code:n = \bool_gset_true:N \g__tblr_tracing_inner_bool,
+ -inner .code:n = \bool_gset_false:N \g__tblr_tracing_inner_bool,
+column .code:n = \bool_gset_true:N \g__tblr_tracing_column_bool,
-column .code:n = \bool_gset_false:N \g__tblr_tracing_column_bool,
+row .code:n = \bool_gset_true:N \g__tblr_tracing_row_bool,
@@ -4413,6 +6309,10 @@
-cellspan .code:n = \bool_gset_false:N \g__tblr_tracing_cellspan_bool,
+intarray .code:n = \bool_gset_true:N \g__tblr_tracing_intarray_bool,
-intarray .code:n = \bool_gset_false:N \g__tblr_tracing_intarray_bool,
+ +page .code:n = \bool_gset_true:N \g__tblr_tracing_page_bool,
+ -page .code:n = \bool_gset_false:N \g__tblr_tracing_page_bool,
+ +step .code:n = \bool_gset_true:N \g__tblr_tracing_step_bool,
+ -step .code:n = \bool_gset_false:N \g__tblr_tracing_step_bool,
all .code:n = \__tblr_enable_all_tracings:,
none .code:n = \__tblr_disable_all_tracings:,
}
@@ -4421,7 +6321,10 @@
{
\bool_gset_true:N \g__tblr_tracing_text_bool
\bool_gset_true:N \g__tblr_tracing_command_bool
- \bool_gset_true:N \g__tblr_tracing_table_bool
+ \bool_gset_true:N \g__tblr_tracing_option_bool
+ \bool_gset_true:N \g__tblr_tracing_theme_bool
+ \bool_gset_true:N \g__tblr_tracing_outer_bool
+ \bool_gset_true:N \g__tblr_tracing_inner_bool
\bool_gset_true:N \g__tblr_tracing_column_bool
\bool_gset_true:N \g__tblr_tracing_row_bool
\bool_gset_true:N \g__tblr_tracing_cell_bool
@@ -4432,13 +6335,18 @@
\bool_gset_true:N \g__tblr_tracing_target_bool
\bool_gset_true:N \g__tblr_tracing_cellspan_bool
\bool_gset_true:N \g__tblr_tracing_intarray_bool
+ \bool_gset_true:N \g__tblr_tracing_page_bool
+ \bool_gset_true:N \g__tblr_tracing_step_bool
}
\cs_new_protected_nopar:Npn \__tblr_disable_all_tracings:
{
\bool_gset_false:N \g__tblr_tracing_text_bool
\bool_gset_false:N \g__tblr_tracing_command_bool
- \bool_gset_false:N \g__tblr_tracing_table_bool
+ \bool_gset_false:N \g__tblr_tracing_option_bool
+ \bool_gset_false:N \g__tblr_tracing_theme_bool
+ \bool_gset_false:N \g__tblr_tracing_outer_bool
+ \bool_gset_false:N \g__tblr_tracing_inner_bool
\bool_gset_false:N \g__tblr_tracing_column_bool
\bool_gset_false:N \g__tblr_tracing_row_bool
\bool_gset_false:N \g__tblr_tracing_cell_bool
@@ -4449,6 +6357,8 @@
\bool_gset_false:N \g__tblr_tracing_target_bool
\bool_gset_false:N \g__tblr_tracing_cellspan_bool
\bool_gset_false:N \g__tblr_tracing_intarray_bool
+ \bool_gset_false:N \g__tblr_tracing_page_bool
+ \bool_gset_false:N \g__tblr_tracing_step_bool
}
\NewDocumentCommand \LogTabularrayTracing { m }
@@ -4459,6 +6369,7 @@
\keys_define:nn { tblr-log-tracing }
{
+ step .code:n = \__tblr_log_tracing_step:n {#1},
unknown .code:n = \__tblr_log_tracing:N \l_keys_key_str
}
@@ -4470,7 +6381,7 @@
\cs_new_protected:Npn \__tblr_log_tracing_text:
{
- \__tblr_text_log:n { text }
+ \__tblr_spec_log:n { text }
}
\cs_new_protected:Npn \__tblr_log_tracing_command:
@@ -4478,9 +6389,26 @@
\__tblr_prop_log:n { command }
}
-\cs_new_protected:Npn \__tblr_log_tracing_table:
+\cs_new_protected:Npn \__tblr_log_tracing_option:
+ {
+ \__tblr_prop_log:n { note }
+ \__tblr_prop_log:n { remark }
+ \__tblr_prop_log:n { more }
+ }
+
+\cs_new_protected:Npn \__tblr_log_tracing_theme:
+ {
+ \__tblr_style_log:
+ }
+
+\cs_new_protected:Npn \__tblr_log_tracing_outer:
+ {
+ \__tblr_spec_log:n { outer }
+ }
+
+\cs_new_protected:Npn \__tblr_log_tracing_inner:
{
- \__tblr_prop_log:n { table }
+ \__tblr_prop_log:n { inner }
}
\cs_new_protected:Npn \__tblr_log_tracing_column:
@@ -4500,12 +6428,12 @@
\cs_new_protected:Npn \__tblr_log_tracing_vline:
{
- \__tblr_text_log:n { vline }
+ \__tblr_spec_log:n { vline }
}
\cs_new_protected:Npn \__tblr_log_tracing_hline:
{
- \__tblr_text_log:n { hline }
+ \__tblr_spec_log:n { hline }
}
\cs_new_protected:Npn \__tblr_log_tracing_colspec:
@@ -4537,9 +6465,279 @@
\prop_log:N \l__tblr_row_span_to_row_prop
}
+\cs_new_protected:Npn \__tblr_log_tracing_page:
+ {
+ \dim_log:N \pagegoal
+ \dim_log:N \pagetotal
+ }
+
+\cs_new_protected:Npn \__tblr_log_tracing_step:n #1
+ {
+ \bool_if:NT \g__tblr_tracing_step_bool { \tl_log:x {Step :~ #1} }
+ }
+
\cs_new_protected:Npn \__tblr_do_if_tracing:nn #1 #2
{
\bool_if:cT { g__tblr_tracing_ #1 _bool } {#2}
}
-\ExplSyntaxOff
+%%% --------------------------------------------------------
+%% \section{Tabularray Libraries}
+%%% --------------------------------------------------------
+
+%% \NewTblrLibrary and \UseTblrLibrary commands
+
+\NewDocumentCommand \NewTblrLibrary { m m }
+ {
+ \cs_new_protected:cpn { __tblr_use_lib_ #1: } {#2}
+ }
+
+\NewDocumentCommand \UseTblrLibrary { m }
+ {
+ \clist_map_inline:nn {#1} { \use:c { __tblr_use_lib_ ##1: } }
+ }
+
+%% Library amsmath and environments +array, +matrix, +cases, ...
+
+\NewTblrLibrary { amsmath }
+ {
+ \RequirePackage { amsmath, environ }
+ \NewTblrEnviron { +array }
+ \SetTblrInner[+array]{colsep = 5pt}
+ \NewEnviron { +matrix } [1] [] {
+ \begin{+array}[expand = \BODY]{
+ column{1} = {leftsep = 0pt}, column{Z} = {rightsep = 0pt},
+ cells = {c}, ##1
+ }
+ \BODY
+ \end{+array}
+ }
+ \NewEnviron { +bmatrix } [1] [] {
+ \left[\begin{+array}[expand = \BODY]{
+ column{1} = {leftsep = 0pt}, column{Z} = {rightsep = 0pt},
+ cells = {c}, ##1
+ }
+ \BODY
+ \end{+array}\right]
+ \ignorespacesafterend
+ }
+ \NewEnviron { +Bmatrix } [1] [] {
+ \left\lbrace\begin{+array}[expand = \BODY]{
+ column{1} = {leftsep = 0pt}, column{Z} = {rightsep = 0pt},
+ cells = {c}, ##1
+ }
+ \BODY
+ \end{+array}\right\rbrace
+ }
+ \NewEnviron { +pmatrix } [1] [] {
+ \left(\begin{+array}[expand = \BODY]{
+ column{1} = {leftsep = 0pt}, column{Z} = {rightsep = 0pt},
+ cells = {c}, ##1
+ }
+ \BODY
+ \end{+array}\right)
+ }
+ \NewEnviron { +vmatrix } [1] [] {
+ \left\lvert\begin{+array}[expand = \BODY]{
+ column{1} = {leftsep = 0pt}, column{Z} = {rightsep = 0pt},
+ cells = {c}, ##1
+ }
+ \BODY
+ \end{+array}\right\rvert
+ }
+ \NewEnviron { +Vmatrix } [1] [] {
+ \left\lVert\begin{+array}[expand = \BODY]{
+ column{1} = {leftsep = 0pt}, column{Z} = {rightsep = 0pt},
+ cells = {c}, ##1
+ }
+ \BODY
+ \end{+array}\right\rVert
+ }
+ \NewEnviron { +cases } [1] [] {
+ \left\lbrace\begin{+array}[expand = \BODY]{
+ column{1} = {leftsep = 0pt}, column{Z} = {rightsep = 0pt},
+ colspec = {ll}, stretch = 1.2, ##1
+ }
+ \BODY
+ \end{+array}\right.
+ }
+ }
+
+%% Library booktabs and commands \toprule, \midrule, \bottomrule
+
+\NewTblrLibrary { booktabs }
+ {
+ % We only use dimensions \aboverulesep and \belowrulesep in booktabs package
+ \RequirePackage { booktabs }
+ \newcommand \tblr@booktabs@hline [1] [] { \hline [##1] }
+ \newcommand \tblr@booktabs@oldhline [1] [] {
+ \hline [abovespace = \aboverulesep, belowspace = \belowrulesep, ##1]
+ }
+ \newcommand \tblr@booktabs@cline [2] [] { \cline [##1] {##2} }
+ \newcommand \tblr@booktabs@oldcline [2] [] {
+ \cline [abovespace = \aboverulesep, belowspace = \belowrulesep, ##1] {##2}
+ }
+ \newcommand \tblr@booktabs@cline@more [2] [] { \SetHline [+] {##2} {##1} }
+ \newcommand \tblr@booktabs@oldcline@more [2] [] {
+ \SetHline [+] {##2} {
+ abovespace = \aboverulesep, belowspace = \belowrulesep, ##1
+ }
+ }
+ \NewTableCommand \toprule [1] [] {
+ \tblr@booktabs@hline [wd=\heavyrulewidth, ##1]
+ }
+ \NewTableCommand \midrule [1] [] {
+ \tblr@booktabs@hline [wd=\lightrulewidth, ##1]
+ }
+ \NewTableCommand \bottomrule [1] [] {
+ \tblr@booktabs@hline [wd=\heavyrulewidth, ##1]
+ }
+ \NewTableCommand \cmidrule [2] [] {
+ \tblr@booktabs@cline [wd=\cmidrulewidth, endpos, ##1] {##2}
+ }
+ \NewTableCommand \cmidrulemore [2] [] {
+ \tblr@booktabs@cline@more [wd=\cmidrulewidth, endpos, ##1] {##2}
+ }
+ \newcommand \tblr@booktabs@change@more [1] { \cmidrulemore }
+ \NewTableCommand \morecmidrules {
+ \peek_meaning:NTF \cmidrule { \tblr@booktabs@change@more } { \relax }
+ }
+ \NewTblrEnviron { booktabs }
+ \SetTblrInner [ booktabs ] { rowsep = 0pt }
+ \RequirePackage { etoolbox }
+ \AtBeginEnvironment { booktabs }
+ {
+ \let \tblr@booktabs@hline = \tblr@booktabs@oldhline
+ \let \tblr@booktabs@cline = \tblr@booktabs@oldcline
+ \let \tblr@booktabs@cline@more = \tblr@booktabs@oldcline@more
+ }
+ \NewTableCommand \specialrule [3]
+ { \hline [##1, abovespace = ##2, belowspace = ##3] }
+ \NewTableCommand \addrowspace [1] [\defaultaddspace]
+ { \SetVspace { abovespace+ = (##1) / 2, belowspace+ = (##1) / 2 } }
+ \NewTableCommand \addlinespace [1] [\defaultaddspace]
+ { \SetVspace { abovespace+ = (##1) / 2, belowspace+ = (##1) / 2 } }
+ }
+
+%% Library counter for resetting all counters
+
+\tl_new:N \__tblr_saved_trial_counters_tl
+\tl_new:N \__tblr_saved_cell_counters_tl
+
+\cs_new_protected:Npn \__tblr_save_counters:n #1 { }
+\cs_new_protected:Npn \__tblr_restore_counters:n #1 { }
+
+%% We use code from tabularx package for resetting all LaTeX counters,
+%% where internal macro \cl@@ckpt looks like the following:
+%% \@elt{page} \@elt{equation} \@elt{enumi} \@elt{enumii} \@elt{enumiii} ...
+
+\NewTblrLibrary { counter }
+ {
+ \cs_set_protected:Npn \__tblr_save_counters:n ##1
+ {
+ \def \@elt ####1 { \global\value{####1} = \the\value{####1} \relax }
+ \tl_set:cx { __tblr_saved_ ##1 _counters_tl } { \cl@@ckpt }
+ \let \@elt = \relax
+ }
+ \cs_set_protected:Npn \__tblr_restore_counters:n ##1
+ {
+ \tl_use:c { __tblr_saved_ ##1 _counters_tl }
+ }
+ }
+
+%% Library diagbox and command \diagbox
+
+\NewTblrLibrary { diagbox }
+ {
+ \RequirePackage{ diagbox }
+ \cs_set_eq:NN \__tblr_lib_saved_diagbox:w \diagbox
+ \NewContentCommand \diagbox [3] []
+ {
+ \__tblr_lib_diagbox_fix:n
+ {
+ \__tblr_lib_saved_diagbox:w
+ [ leftsep=\leftsep, rightsep=\rightsep, ##1 ]
+ { \__tblr_lib_diagbox_math_or_text:n {##2} }
+ { \__tblr_lib_diagbox_math_or_text:n {##3} }
+ }
+ }
+ \NewContentCommand \diagboxthree [4] []
+ {
+ \__tblr_lib_diagbox_fix:n
+ {
+ \__tblr_lib_saved_diagbox:w
+ [ leftsep=\leftsep, rightsep=\rightsep, ##1 ]
+ { \__tblr_lib_diagbox_math_or_text:n {##2} }
+ { \__tblr_lib_diagbox_math_or_text:n {##3} }
+ { \__tblr_lib_diagbox_math_or_text:n {##4} }
+ }
+ }
+ }
+
+\cs_new_protected:Npn \__tblr_lib_diagbox_math_or_text:n #1
+ {
+ \bool_if:NTF \l__tblr_cell_math_mode_bool {$#1$} {#1}
+ }
+
+\box_new:N \l__tblr_diag_box
+
+\cs_new_protected:Npn \__tblr_lib_diagbox_fix:n #1
+ {
+ \hbox_set:Nn \l__tblr_diag_box {#1}
+ \box_set_ht:Nn \l__tblr_diag_box { \box_ht:N \l__tblr_diag_box - \abovesep }
+ \box_set_dp:Nn \l__tblr_diag_box { \box_dp:N \l__tblr_diag_box - \belowsep }
+ \box_use:N \l__tblr_diag_box
+ }
+
+%% Library siunitx and S columns
+
+\NewTblrLibrary { siunitx }
+ {
+ \RequirePackage { siunitx }
+ \NewColumnType { S } [1] [] { Q[si = {##1}, c] }
+ \NewColumnType { s } [1] [] { Q[si = {##1}, c, cmd = \TblrUnit] }
+ \__tblr_data_new_key:nnn { cell } { si } { str }
+ \keys_define:nn { tblr-column }
+ {
+ si .code:n = \__tblr_siunitx_setcolumn:n {##1}
+ }
+ \cs_new_protected:Npn \__tblr_siunitx_setcolumn:n ##1
+ {
+ \__tblr_column_gput_cell:nn { si } {##1}
+ \__tblr_column_gput_cell:nn { cmd } { \TblrNum }
+ }
+ \NewDocumentCommand \TblrNum { m }
+ {
+ \__tblr_siunitx_process:Nn \tablenum {##1}
+ }
+ \NewDocumentCommand \TblrUnit { m }
+ {
+ \__tblr_siunitx_process:Nn \si {##1}
+ }
+ \cs_new_protected:Npn \__tblr_siunitx_process:Nn ##1 ##2
+ {
+ \tl_if_head_is_group:nTF {##2}
+ { ##2 }
+ {
+ \group_begin:
+ \tl_set:Nx \l_tmpa_tl
+ {
+ \__tblr_data_item:neen { cell }
+ { \int_use:N \c@rownum } { \int_use:N \c@colnum } { si }
+ }
+ \exp_args:NV \sisetup \l_tmpa_tl
+ ##1 {##2}
+ \group_end:
+ }
+ }
+ }
+
+%% Library varwidth and measure option
+
+\NewTblrLibrary { varwidth }
+ {
+ \RequirePackage { varwidth }
+ \clist_gput_left:Nn \g__tblr_table_known_keys_clist { measure }
+ \keys_define:nn { tblr } { measure .tl_set:N = \l__tblr_inner_spec_measure_tl }
+ }
+
diff --git a/macros/latex/contrib/tabularray/tabularray.pdf b/macros/latex/contrib/tabularray/tabularray.pdf
index 1a21a9f22a..c5f234aefc 100644
--- a/macros/latex/contrib/tabularray/tabularray.pdf
+++ b/macros/latex/contrib/tabularray/tabularray.pdf
Binary files differ
diff --git a/macros/latex/contrib/tabularray/tabularray.sty b/macros/latex/contrib/tabularray/tabularray.sty
index f5ad547d71..5ec77339f3 100644
--- a/macros/latex/contrib/tabularray/tabularray.sty
+++ b/macros/latex/contrib/tabularray/tabularray.sty
@@ -1,49 +1,65 @@
%%% % -*- coding: utf-8 -*-
%%% ----------------------------------------------------------------------------
%%% Tabularray: Typeset tabulars and arrays with LaTeX3
-%%% Author : Jianrui Lyu <tolvjr@163.com>
+%%% Copyright : 2021-2022 (c) Jianrui Lyu <tolvjr@163.com>
%%% Repository: https://github.com/lvjr/tabularray
%%% License : The LaTeX Project Public License 1.3
%%% ----------------------------------------------------------------------------
%%% --------------------------------------------------------
-%% \section{Scratch Variables and Function Variants}
+%%> \section{Scratch Variables and Function Variants}
%%% --------------------------------------------------------
-\NeedsTeXFormat{LaTeX2e}
+%% \DeclareRelease and \DeclareCurrentRelease are added in LaTeX 2018-04-01
+\NeedsTeXFormat{LaTeX2e}[2018-04-01]
+\DeclareRelease{v2021}{}{tabularray-2021.sty}
+\DeclareCurrentRelease{}{2022-01-01}
+
\RequirePackage{expl3}
-\ProvidesExplPackage{tabularray}{2021-12-01}{2021Q}
+\ProvidesExplPackage{tabularray}{2022-03-01}{2022A}
{Typeset tabulars and arrays with LaTeX3}
-\RequirePackage{xparse}
-
-\AtBeginDocument{\@ifpackageloaded{xcolor}{\RequirePackage{ninecolors}}{}}
-
-%% Backport \tl_if_eq:NnTF for old texlive 2020
-\cs_if_exist:NF \tl_if_eq:NnTF
+%% \IfFormatAtLeastTF, xparse and lthooks are added in LaTeX 2020-10-01
+%% Note that \@ifl@t@r or \@ifpackagelater means 'this date or later'
+\msg_new:nnn { tabularray } { latex-too-old }
{
- \tl_new:N \l__tblr_backport_b_tl
- \prg_new_protected_conditional:Npnn \tl_if_eq:Nn #1 #2 { T, F, TF }
- {
- \group_begin:
- \tl_set:Nn \l__tblr_backport_b_tl {#2}
- \exp_after:wN
- \group_end:
- \if_meaning:w #1 \l__tblr_backport_b_tl
- \prg_return_true:
- \else:
- \prg_return_false:
- \fi:
- }
- \prg_generate_conditional_variant:Nnn \tl_if_eq:Nn { c } { TF, T, F }
+ Your ~ LaTeX ~ release ~ is ~ too ~ old. \\
+ Please ~ update ~ to ~ 2020-10-01 ~ first.
+ }
+\@ifl@t@r\fmtversion{2020-10-01}{}{
+ %% Support TeX Live 2020 on Overleaf
+ \msg_warning:nn { tabularray } { latex-too-old }
+ \usepackage{xparse}
+}
+
+\AtBeginDocument{
+ \@ifpackageloaded{xcolor}{\RequirePackage{ninecolors}}{}
+ \@ifpackageloaded{hyperref}{
+ \newenvironment{tblrNoHyper}{\NoHyper}{\endNoHyper}
+ }{
+ \newenvironment{tblrNoHyper}{}{}
}
+}
-%% Compatible with texlive 2020
-\cs_if_exist:NF \seq_map_indexed_function:NN
+\NewDocumentCommand \TblrParboxRestore { } { \@parboxrestore }
+
+\NewDocumentCommand \TblrAlignBoth { }
{
- \cs_set_eq:NN \seq_map_indexed_function:NN \seq_indexed_map_function:NN
+ \let \\ = \@normalcr
+ \leftskip = \z@skip
+ \@rightskip = \z@skip
+ \rightskip = \@rightskip
+ \parfillskip = \@flushglue
}
+\NewDocumentCommand \TblrAlignLeft { } { \raggedright }
+
+\NewDocumentCommand \TblrAlignCenter { } { \centering }
+
+\NewDocumentCommand \TblrAlignRight { } { \raggedleft }
+
+\cs_set_eq:NN \TblrNewPage \newpage
+
\cs_generate_variant:Nn \msg_error:nnnn { nnVn }
\cs_generate_variant:Nn \prop_item:Nn { Ne, NV }
\cs_generate_variant:Nn \prop_put:Nnn { Nxn, Nxx, NxV }
@@ -55,6 +71,7 @@
\cs_generate_variant:Nn \tl_put_left:Nn { Nv }
\prg_generate_conditional_variant:Nnn \clist_if_in:Nn { Nx } { TF }
\prg_generate_conditional_variant:Nnn \prop_if_in:Nn { c } { T }
+\prg_generate_conditional_variant:Nnn \regex_match:Nn { NV } { TF }
\prg_generate_conditional_variant:Nnn \str_if_eq:nn { xn } { TF }
\prg_generate_conditional_variant:Nnn \tl_if_eq:nn { en } { T, TF }
\prg_generate_conditional_variant:Nnn \tl_if_head_eq_catcode:nN { VN } { TF }
@@ -102,9 +119,10 @@
\int_new:N \g__tblr_table_count_int
%% Some commands for horizontal alignment
-\cs_new_eq:NN \__tblr_halign_command_l: \raggedright
-\cs_new_eq:NN \__tblr_halign_command_c: \centering
-\cs_new_eq:NN \__tblr_halign_command_r: \raggedleft
+\cs_new_eq:NN \__tblr_halign_command_j: \TblrAlignBoth
+\cs_new_eq:NN \__tblr_halign_command_l: \TblrAlignLeft
+\cs_new_eq:NN \__tblr_halign_command_c: \TblrAlignCenter
+\cs_new_eq:NN \__tblr_halign_command_r: \TblrAlignRight
%% Some counters for row and column numbering.
%% We may need to restore all LaTeX counters in measuring and building cells,
@@ -127,7 +145,7 @@
\dim_new:N \rightsep
%%% --------------------------------------------------------
-%% \section{Data Structures Based on Property Lists}
+%%> \section{Data Structures Based on Property Lists}
%%% --------------------------------------------------------
\int_new:N \g_tblr_level_int % store table nesting level
@@ -238,7 +256,7 @@
\cs_generate_variant:Nn \__tblr_gadd_dimen_value:Nnn { cnn }
%%% --------------------------------------------------------
-%% \section{Data Structures Based on Token Lists}
+%%> \section{Data Structures Based on Token Lists}
%%% --------------------------------------------------------
\cs_new_protected:Npn \__tblr_clear_spec_lists:
@@ -318,7 +336,7 @@
}
%%% --------------------------------------------------------
-%% \section{Data Structures Based on Integer Arrays}
+%%> \section{Data Structures Based on Integer Arrays}
%%% --------------------------------------------------------
\msg_new:nnn { tabularray } { intarray-beyond-bound }
@@ -362,7 +380,6 @@
\__tblr_data_new_key:nnn { row } { @row-foot } { dim }
\__tblr_data_new_key:nnn { row } { @row-upper } { dim }
\__tblr_data_new_key:nnn { row } { @row-lower } { dim }
-\__tblr_data_new_key:nnn { row } { break } { int }
\int_new:N \g__tblr_data_column_key_count_int
\__tblr_data_new_key:nnn { column } { width } { dim }
@@ -763,7 +780,7 @@
}
%%% --------------------------------------------------------
-%% \section{Child Selectors}
+%%> \section{Child Selectors}
%%% --------------------------------------------------------
\clist_new:N \g_tblr_used_child_selectors_clist
@@ -810,15 +827,42 @@
\clist_new:N \l_tblr_childs_clist
\tl_new:N \l_tblr_childs_total_tl
-\NewChildSelector { odd }
+\NewChildSelector { odd } [1] []
{
- \int_step_inline:nnnn {1} {2} { \l_tblr_childs_total_tl }
- { \clist_put_right:Nn \l_tblr_childs_clist {##1} }
+ \tl_if_blank:nTF {#1}
+ {
+ \int_step_inline:nnnn {1} {2} { \l_tblr_childs_total_tl }
+ { \clist_put_right:Nn \l_tblr_childs_clist {##1} }
+ }
+ { \__tblr_child_selector_odd_or_even:nn { odd } {#1} }
}
-\NewChildSelector { even }
+\NewChildSelector { even } [1] []
{
- \int_step_inline:nnnn {2} {2} { \l_tblr_childs_total_tl }
+ \tl_if_blank:nTF {#1}
+ {
+ \int_step_inline:nnnn {2} {2} { \l_tblr_childs_total_tl }
+ { \clist_put_right:Nn \l_tblr_childs_clist {##1} }
+ }
+ { \__tblr_child_selector_odd_or_even:nn { even } {#1} }
+ }
+
+\tl_new:N \l__tblr_child_from_tl
+\tl_new:N \l__tblr_child_to_tl
+
+%% #1: odd or even; #2: selector option
+\cs_new_protected:Npn \__tblr_child_selector_odd_or_even:nn #1 #2
+ {
+ \seq_set_split:Nnn \l_tmpa_seq {-} { #2 - Z }
+ \tl_set:Nx \l__tblr_child_from_tl { \seq_item:Nn \l_tmpa_seq {1} }
+ \tl_set:Nx \l__tblr_child_to_tl { \seq_item:Nn \l_tmpa_seq {2} }
+ \tl_use:c { int_if_ #1 :nF } { \l__tblr_child_from_tl }
+ {
+ \tl_set:Nx \l__tblr_child_from_tl
+ { \int_eval:n { \l__tblr_child_from_tl + 1 } }
+ }
+ \__tblr_child_name_to_index:VN \l__tblr_child_to_tl \l__tblr_child_to_tl
+ \int_step_inline:nnnn { \l__tblr_child_from_tl } {2} { \l__tblr_child_to_tl }
{ \clist_put_right:Nn \l_tblr_childs_clist {##1} }
}
@@ -842,7 +886,7 @@
__tblr_child_selector_ \seq_item:Nn \l__tblr_childs_regex_seq {2} :w
\cs_end:
}
- \exp_args:Nx \l__tblr_childs_selector_tl
+ \exp_last_unbraced:Nx \l__tblr_childs_selector_tl
{ \seq_item:Nn \l__tblr_childs_regex_seq{3} }
}
{
@@ -865,9 +909,6 @@
}
}
-\tl_new:N \l__tblr_child_from_tl
-\tl_new:N \l__tblr_child_to_tl
-
\cs_new_protected_nopar:Npn \__tblr_get_childs_normal_aux:w #1 - #2 \scan_stop
{
\__tblr_child_name_to_index:nN {#1} \l__tblr_child_from_tl
@@ -888,9 +929,10 @@
}
{ \tl_set:Nx #2 { #1 } }
}
+\cs_generate_variant:Nn \__tblr_child_name_to_index:nN { VN }
%%% --------------------------------------------------------
-%% \section{New Table Commands}
+%%> \section{New Table Commands}
%%% --------------------------------------------------------
%% We need some commands to modify table/row/column/cell specifications.
@@ -985,7 +1027,7 @@
{
\clist_if_in:NnTF \g__tblr_content_commands_clist { #1 }
{
- \msg_warning:nnn { tabularray } { defined-content-command } { #1 }
+ \msg_error:nnn { tabularray } { defined-content-command } { #1 }
\clist_log:N \g__tblr_content_commands_clist
}
{
@@ -1003,7 +1045,7 @@
}
%%% --------------------------------------------------------
-%% \section{New Dash Styles}
+%%> \section{New Dash Styles}
%%% --------------------------------------------------------
%% \NewDashStyle commands
@@ -1073,7 +1115,7 @@
\NewDashStyle {dotted} {on ~ 0.4pt ~ off ~ 1pt}
%%% --------------------------------------------------------
-%% \section{Set Hlines and Vlines}
+%%> \section{Set Hlines and Vlines}
%%% --------------------------------------------------------
\tl_set:Nn \@tblr@dash { dash }
@@ -1128,10 +1170,6 @@
\NewTableCommand \hline [1] [] { \SetHline [+] {-} {#1} }
-%% Some keys can be set by any hline, such as abovespace and belowspace keys.
-%% Using special hline of index 0, you can set these keys without adding any hlines.
-\NewTableCommand \SetVspace [1] { \SetHline [0] {-} {#1} }
-
%% #1: the index of the hline (may be + or =)
%% #2: which columns of the hline, separate by commas
%% #3: key=value pairs
@@ -1145,19 +1183,13 @@
\cs_new_protected:Npn \tblr_set_hline:nnn #1 #2 #3
{
\group_begin:
- %% We can not use \int_compare:nNnTF here since #1 may be + or = .
- %% Also we treat hline of index 0 specially, not adding hline count.
- \tl_if_eq:nnTF {#1} {0}
- { \keys_set:nn { tblr-hline } {#3} }
+ \keys_set_groups:nnn { tblr-hline } { text } {#3}
+ \tl_if_eq:NnF \l__tblr_hline_dash_tl { \exp_not:N \@tblr@text }
{
- \keys_set_groups:nnn { tblr-hline } { text } {#3}
- \tl_if_eq:NnF \l__tblr_hline_dash_tl { \exp_not:N \@tblr@text }
- {
- \__tblr_set_hline_num:n {#1}
- \tl_clear:N \l__tblr_hline_dash_tl
- \keys_set:nn { tblr-hline } { dash = solid, #3 }
- \__tblr_set_hline_cmd:n {#2}
- }
+ \__tblr_set_hline_num:n {#1}
+ \tl_clear:N \l__tblr_hline_dash_tl
+ \keys_set:nn { tblr-hline } { dash = solid, #3 }
+ \__tblr_set_hline_cmd:n {#2}
}
\group_end:
}
@@ -1233,7 +1265,6 @@
text .groups:n = { text },
wd .code:n = \tl_set:Nn \l__tblr_hline_wd_tl { \dim_eval:n {#1} },
fg .code:n = \tl_set:Nn \l__tblr_hline_fg_tl {#1},
- baseline .code:n = \__tblr_hline_set_baseline:n {#1},
leftpos .code:n = \tl_set:Nx \l__tblr_hline_leftpos_tl {#1},
rightpos .code:n = \tl_set:Nx \l__tblr_hline_rightpos_tl {#1},
l .meta:n = { leftpos = #1 },
@@ -1243,12 +1274,6 @@
lr .meta:n = { leftpos = #1, rightpos = #1 },
lr .default:n = { -0.8 },
endpos .bool_set:N = \l__tblr_hline_endpos_bool,
- abovespace .code:n = \__tblr_row_gput_above:ne { belowsep } { \dim_eval:n {#1} },
- belowspace .code:n = \__tblr_row_gput:ne { abovesep } { \dim_eval:n {#1} },
- abovespace+ .code:n = \__tblr_row_gadd_dimen_above:ne
- { belowsep } { \dim_eval:n {#1} },
- belowspace+ .code:n = \__tblr_row_gadd_dimen:ne
- { abovesep } { \dim_eval:n {#1} },
unknown .code:n = \__tblr_hline_unknown_key:V \l_keys_key_str,
}
@@ -1325,22 +1350,20 @@
{ [\int_use:N \c@rownum][#1](\l__tblr_hline_num_tl) / #2 } { #3 }
}
-\NewTableCommand \firsthline [1] [] { \SetHline [+] {-} { #1, baseline=below } }
-\NewTableCommand \lasthline [1] [] { \SetHline [+] {-} { #1, baseline=above } }
+\msg_new:nnn { tabularray } { obsolete-firsthline }
+ { \firsthline ~ is ~ obsolete; ~ use ~ 'baseline=T' ~ instead. }
-\cs_new_protected:Npn \__tblr_hline_set_baseline:n #1
+\msg_new:nnn { tabularray } { obsolete-lasthline }
+ { \lasthline ~ is ~ obsolete; ~ use ~ 'baseline=B' ~ instead. }
+
+\NewTableCommand \firsthline [1] []
{
- \tl_if_eq:nnTF {#1} {above}
- {
- \__tblr_prop_gput:nnx { inner }
- { baseline } { \int_eval:n { \c@rownum - 1 } }
- }
- {
- \tl_if_eq:nnT {#1} {below}
- {
- \__tblr_prop_gput:nnx { inner } { baseline } { \int_use:N \c@rownum }
- }
- }
+ \msg_error:nn { tabularray } { obsolete-firsthline }
+ }
+
+\NewTableCommand \lasthline [1] []
+ {
+ \msg_error:nn { tabularray } { obsolete-lasthline }
}
%% \SetVlines command for setting every vline in the table
@@ -1540,7 +1563,107 @@
}
%%% --------------------------------------------------------
-%% \section{Set Cells}
+%%> \section{Set Hborders and Vborders}
+%%% --------------------------------------------------------
+
+%% Hborder holds keys not related to a specified hline
+\NewTableCommand \hborder [1] { \tblr_set_hborder:n {#1} }
+
+\cs_new_protected:Npn \tblr_set_hborder:n #1
+ {
+ \keys_set:nn { tblr-hborder } {#1}
+ }
+
+\cs_new_protected:Npn \tblr_set_hborder:nn #1 #2
+ {
+ \group_begin:
+ \__tblr_get_childs:nx {#1} { \int_eval:n { \c@rowcount + 1 } }
+ \clist_map_inline:Nn \l_tblr_childs_clist
+ {
+ \int_set:Nn \c@rownum {##1}
+ \tblr_set_hborder:n {#2}
+ }
+ \group_end:
+ }
+
+%% This function is called when parsing table specifications
+%% Note that #1 always includes an outer pair of braces
+\cs_new_protected:Npn \__tblr_set_hborder_aux:nn #1 #2
+ {
+ \tblr_set_hborder:nn #1 {#2}
+ }
+\cs_generate_variant:Nn \__tblr_set_hborder_aux:nn { Vn }
+
+\keys_define:nn { tblr-hborder }
+ {
+ abovespace .code:n = \__tblr_row_gput_above:ne
+ { belowsep } { \dim_eval:n {#1} },
+ belowspace .code:n = \__tblr_row_gput:ne { abovesep } { \dim_eval:n {#1} },
+ abovespace+ .code:n = \__tblr_row_gadd_dimen_above:ne
+ { belowsep } { \dim_eval:n {#1} },
+ belowspace+ .code:n = \__tblr_row_gadd_dimen:ne
+ { abovesep } { \dim_eval:n {#1} },
+ pagebreak .code:n = \__tblr_hborder_gput_pagebreak:n {#1},
+ pagebreak .default:n = yes,
+ baseline .code:n = \__tblr_outer_gput_spec:ne
+ { baseline } { - \int_use:N \c@rownum },
+ }
+
+\tl_const:Nn \c__tblr_pagebreak_yes_tl { 1 }
+\tl_const:Nn \c__tblr_pagebreak_auto_tl { 0 }
+\tl_const:Nn \c__tblr_pagebreak_no_tl { -1 }
+
+\cs_new_protected:Npn \__tblr_hborder_gput_pagebreak:n #1
+ {
+ \tl_if_exist:cT { c__tblr_pagebreak_ #1 _tl }
+ {
+ \__tblr_spec_gput:nee { hline }
+ { [\int_use:N \c@rownum] / @pagebreak }
+ { \tl_use:c { c__tblr_pagebreak_ #1 _tl } }
+ }
+ }
+
+%% Vborder holds keys not related to a specified vline
+\NewTableCommand \vborder [1] { \tblr_set_vborder:n {#1} }
+
+\cs_new_protected:Npn \tblr_set_vborder:n #1
+ {
+ \keys_set:nn { tblr-vborder } {#1}
+ }
+
+\cs_new_protected:Npn \tblr_set_vborder:nn #1 #2
+ {
+ \group_begin:
+ \__tblr_get_childs:nx {#1} { \int_eval:n { \c@colcount + 1 } }
+ \clist_map_inline:Nn \l_tblr_childs_clist
+ {
+ \int_set:Nn \c@colnum {##1}
+ \tblr_set_vborder:n {#2}
+ }
+ \group_end:
+ }
+
+%% This function is called when parsing table specifications
+%% Note that #1 always includes an outer pair of braces
+\cs_new_protected:Npn \__tblr_set_vborder_aux:nn #1 #2
+ {
+ \tblr_set_vborder:nn #1 {#2}
+ }
+\cs_generate_variant:Nn \__tblr_set_vborder_aux:nn { Vn }
+
+\keys_define:nn { tblr-vborder }
+ {
+ leftspace .code:n = \__tblr_column_gput_left:ne
+ { rightsep } { \dim_eval:n {#1} },
+ rightspace .code:n = \__tblr_column_gput:ne { leftsep } { \dim_eval:n {#1} },
+ leftspace+ .code:n = \__tblr_column_gadd_dimen_left:ne
+ { rightsep } { \dim_eval:n {#1} },
+ rightspace+ .code:n = \__tblr_column_gadd_dimen:ne
+ { leftsep } { \dim_eval:n {#1} },
+ }
+
+%%% --------------------------------------------------------
+%%> \section{Set Cells}
%%% --------------------------------------------------------
%% \SetCells command for setting every cell in the table
@@ -1767,7 +1890,7 @@
{ 1 }
}
\int_step_variable:nnNn
- { \c@rownum } { \int_eval:n { \c@rownum + #1 -1 } } \l__tblr_i_tl
+ { \c@rownum } { \int_eval:n { \c@rownum + #1 - 2 } } \l__tblr_i_tl
{
\__tblr_spec_gput:nee { vline }
{ [\l__tblr_i_tl][\int_use:N \c@colnum](\l__tblr_n_tl) / belowpos } {1}
@@ -1777,59 +1900,26 @@
}
\cs_generate_variant:Nn \__tblr_set_span_spec:nn { VV }
-%% Legacy \multicolumn and \multirow commands
-%% Both of them could be replaced with \SetCell command
-%% Note that they don't have cell text as the last arguments
+%% Obsolete \multicolumn and \multirow commands
+
+\msg_new:nnn { tabularray } { obsolete-multicolumn }
+ { \multicolumn ~ is ~ obsolete; ~ use ~ \SetCell ~ instead. }
-%% If \multicolumn is followed by \multirow,
-%% We need to call \tblr_set_cell together
-%% in order to omit all hlines inside the span cell.
-\tl_new:N \g__tblr_multicolumn_num_tl
-\tl_new:N \g__tblr_multicolumn_spec_tl
+\msg_new:nnn { tabularray } { obsolete-multirow }
+ { \multirow ~ is ~ obsolete; ~ use ~ \SetCell ~ instead. }
-%% There maybe p{2em} inside #2 of \multicolumn command
\NewTableCommand \multicolumn [2]
{
- \tl_gclear:N \g__tblr_multicolumn_num_tl
- \tl_gclear:N \g__tblr_multicolumn_spec_tl
- \tl_map_inline:nn {#2}
- {
- \bool_lazy_and:nnF
- { \tl_if_single_token_p:n {##1} }
- { \token_if_eq_charcode_p:NN ##1 | }
- { \tl_put_right:Nn \g__tblr_multicolumn_spec_tl {,##1} }
- }
- \peek_meaning:NTF \multirow
- { \tl_gset:Nn \g__tblr_multicolumn_num_tl {#1} }
- { \tblr_set_cell:nV { c = #1 } \g__tblr_multicolumn_spec_tl }
+ \msg_error:nn { tabularray } { obsolete-multicolumn }
}
\NewTableCommand \multirow [3] [m]
{
- \tl_if_eq:nnTF {#1} {c}
- { \tl_set:Nn \l_tmpa_tl {, m} }
- {
- \tl_if_eq:nnTF {#1} {t}
- { \tl_set:Nn \l_tmpa_tl {, h} }
- { \tl_if_eq:nnTF {#1} {b}
- { \tl_set:Nn \l_tmpa_tl {, f} }
- { \tl_set:Nn \l_tmpa_tl {, #1} }
- }
- }
- \tl_if_eq:nnF {#3} {*}
- { \tl_if_eq:nnF {#3} {=} { \tl_put_right:Nn \l_tmpa_tl {, wd=#3} } }
- \tl_if_empty:NTF \g__tblr_multicolumn_num_tl
- { \tblr_set_cell:nV { r = #2 } \l_tmpa_tl }
- {
- \tl_put_left:NV \l_tmpa_tl \g__tblr_multicolumn_spec_tl
- \exp_args:Nx \tblr_set_cell:nV
- { c = \g__tblr_multicolumn_num_tl, r = #2 } \l_tmpa_tl
- \tl_gclear:N \g__tblr_multicolumn_num_tl
- }
+ \msg_error:nn { tabularray } { obsolete-multirow }
}
%%% --------------------------------------------------------
-%% \section{Set Columns and Rows}
+%%> \section{Set Columns and Rows}
%%% --------------------------------------------------------
%% \SetColumns command for setting every column in the table
@@ -1937,6 +2027,12 @@
}
\cs_generate_variant:Nn \__tblr_column_gput:nn { ne }
+\cs_new_protected:Npn \__tblr_column_gput_left:nn #1 #2
+ {
+ \__tblr_data_gput:nenn { column } { \int_eval:n { \c@colnum - 1 } } {#1} {#2}
+ }
+\cs_generate_variant:Nn \__tblr_column_gput_left:nn { ne }
+
\cs_new_protected:Npn \__tblr_column_gadd_dimen:nn #1 #2
{
\__tblr_data_gadd_dimen_value:nenn { column }
@@ -1944,6 +2040,13 @@
}
\cs_generate_variant:Nn \__tblr_column_gadd_dimen:nn { ne }
+\cs_new_protected:Npn \__tblr_column_gadd_dimen_left:nn #1 #2
+ {
+ \__tblr_data_gadd_dimen_value:nenn { column }
+ { \int_eval:n { \c@colnum - 1 } } {#1} {#2}
+ }
+\cs_generate_variant:Nn \__tblr_column_gadd_dimen_left:nn { ne }
+
%% #1: key; #2: value
\cs_new_protected:Npn \__tblr_column_gput_cell:nn #1 #2
{
@@ -2080,9 +2183,8 @@
abovesep+ .code:n = \__tblr_row_gadd_dimen:ne { abovesep } { \dim_eval:n {#1} },
belowsep+ .code:n = \__tblr_row_gadd_dimen:ne { belowsep } { \dim_eval:n {#1} },
rowsep+ .meta:n = { abovesep+ = #1, belowsep+ = #1},
- break .code:n = \__tblr_row_gput:nn { break } {#1},
- pagebreak .meta:n = { break = 1 },
- nopagebreak .meta:n = { break = -1 },
+ baseline .code:n = \__tblr_outer_gput_spec:ne
+ { baseline } { \int_use:N \c@rownum },
unknown .code:n = \__tblr_row_unknown_key:V \l_keys_key_str,
}
@@ -2158,16 +2260,16 @@
\NewTableCommand \pagebreak
{
- \tblr_set_row:nn {} { break = 1 }
+ \hborder { pagebreak = yes }
}
\NewTableCommand \nopagebreak
{
- \tblr_set_row:nn {} { break = -1 }
+ \hborder { pagebreak = no }
}
%%% --------------------------------------------------------
-%% \section{Column Types and Row Types}
+%%> \section{Column Types and Row Types}
%%% --------------------------------------------------------
%% Some primitive column/row types
@@ -2344,8 +2446,8 @@
\str_if_in:cnTF { g_tblr_used_ \g__tblr_column_or_row_tl _types_str } {#1}
{
\tl_if_eq:NnTF \g__tblr_column_or_row_tl { row }
- { \msg_warning:nnnn { tabularray } { used-colrow-type } { Row } {#1} }
- { \msg_warning:nnnn { tabularray } { used-colrow-type } { Column } {#1} }
+ { \msg_error:nnnn { tabularray } { used-colrow-type } { Row } {#1} }
+ { \msg_error:nnnn { tabularray } { used-colrow-type } { Column } {#1} }
\str_log:c { g_tblr_used_ \g__tblr_column_or_row_tl _types_str }
}
{
@@ -2457,13 +2559,13 @@
}
%%% --------------------------------------------------------
-%% \section{Set Environments and New Environments}
+%%> \section{Set Environments and New Environments}
%%% --------------------------------------------------------
\tl_new:N \l__tblr_initial_tblr_outer_tl
\tl_set:Nn \l__tblr_initial_tblr_outer_tl
{
- halign = c, valign = m, headsep = 6pt, footsep = 6pt,
+ halign = c, baseline = m, headsep = 6pt, footsep = 6pt,
presep = 1.5\bigskipamount, postsep = 1.5\bigskipamount,
}
@@ -2485,13 +2587,13 @@
%% #1: env name
\NewDocumentCommand \NewTblrEnviron { m }
{
- \tl_new:c { l__tblr_default_ #1 _outer_tl }
- \tl_set_eq:cN { l__tblr_default_ #1 _outer_tl } \l__tblr_initial_tblr_outer_tl
- \tl_new:c { l__tblr_default_ #1 _inner_tl }
\NewDocumentEnvironment {#1} { O{c} m +b }
{
\__tblr_environ_code:nnnn {#1} {##1} {##2} {##3}
} { }
+ \tl_new:c { l__tblr_default_ #1 _inner_tl }
+ \tl_new:c { l__tblr_default_ #1 _outer_tl }
+ \tl_set_eq:cN { l__tblr_default_ #1 _outer_tl } \l__tblr_initial_tblr_outer_tl
\ignorespaces
}
@@ -2550,7 +2652,7 @@
}
%%% --------------------------------------------------------
-%% \section{Split Table Contents}
+%%> \section{Split Table Contents}
%%% --------------------------------------------------------
%% Insert and remove braces for nesting environments inside cells
@@ -2628,7 +2730,7 @@
{
\tl_if_head_eq_meaning:nNTF {##1} *
{
- \tl_set:Nn \l__tblr_b_tl { \SetRow { break = -1 } }
+ \tl_set:Nn \l__tblr_b_tl { \hborder { pagebreak = no } }
\tl_set:Nx \l__tblr_c_tl { \tl_tail:n {##1} }
\tl_trim_spaces:N \l__tblr_c_tl %% Ignore spaces between * and [dimen]
\tl_if_head_eq_meaning:VNT \l__tblr_c_tl [
@@ -2681,7 +2783,6 @@
\__tblr_extract_table_commands:N \l_tmpa_tl
\__tblr_trim_par_space_tokens:N \l_tmpa_tl
\__tblr_spec_gput:neV { text } { [#1][\int_use:N \c@colnum] } \l_tmpa_tl
- \__tblr_add_multicolumn_empty_cell:
}
%% Decrease row count by 1 if the last row has only one empty cell text
%% We need to do it here since the > or < column type may add text to cells
@@ -2711,26 +2812,12 @@
\regex_replace_once:NnN \c__tblr_trim_right_space_par_regex {} #1
}
-%% Add empty cells after the \multicolumn span cell
-\cs_new_protected:Npn \__tblr_add_multicolumn_empty_cell:
- {
- \int_step_inline:nn { \l__multicolumn_cell_number_int - 1 }
- {
- \int_incr:N \c@colnum
- \__tblr_spec_gput:nen { text }
- { [\int_use:N \c@rownum][\int_use:N \c@colnum] } { }
- }
- }
-
%%% --------------------------------------------------------
-%% \section{Extract Table Commands from Cell Text}
+%%> \section{Extract Table Commands from Cell Text}
%%% --------------------------------------------------------
%% Extract table commands defined with \NewTableCommand from cell text
-\clist_gset:Nn \g__tblr_table_commands_unbrace_next_clist {\multirow, \multicolumn}
-\bool_new:N \l__tblr_table_command_unbrace_next_bool
-\int_new:N \l__multicolumn_cell_number_int
\tl_new:N \l__tblr_saved_table_commands_before_cell_text_tl
\tl_new:N \l__tblr_saved_cell_text_after_table_commands_tl
@@ -2738,7 +2825,6 @@
{
\tl_clear:N \l__tblr_saved_table_commands_before_cell_text_tl
\tl_clear:N \l__tblr_saved_cell_text_after_table_commands_tl
- \int_set:Nn \l__multicolumn_cell_number_int {1}
\exp_last_unbraced:NV \__tblr_extract_table_commands_next:n #1 \q_stop
\tl_if_empty:NF \l__tblr_saved_table_commands_before_cell_text_tl
{
@@ -2755,14 +2841,7 @@
\tl_if_single_token:nTF {#1}
{
\clist_if_in:NnTF \g__tblr_table_commands_clist { #1 }
- {
- \clist_if_in:NnTF \g__tblr_table_commands_unbrace_next_clist { #1 }
- { \bool_set_true:N \l__tblr_table_command_unbrace_next_bool }
- { \bool_set_false:N \l__tblr_table_command_unbrace_next_bool }
- \token_if_eq_meaning:NNTF #1 \multicolumn
- { \__tblr_extract_multicolumn_command:Nn #1 }
- { \__tblr_extract_one_table_command:N #1 }
- }
+ { \__tblr_extract_one_table_command:N #1 }
{
\token_if_eq_meaning:NNF #1 \q_stop
{ \__tblr_save_real_cell_text:w #1 }
@@ -2771,12 +2850,6 @@
{ \__tblr_save_real_cell_text:w {#1} }
}
-\cs_new_protected:Npn \__tblr_extract_multicolumn_command:Nn #1 #2
- {
- \int_set:Nn \l__multicolumn_cell_number_int {#2}
- \__tblr_extract_one_table_command:N #1 {#2}
- }
-
\cs_new_protected:Npn \__tblr_extract_one_table_command:N #1
{
\int_set:Nn \l__tblr_a_int
@@ -2811,15 +2884,9 @@
\int_decr:N \l__tblr_a_int
\__tblr_extract_table_command_arg_m:n
}
- {
- \bool_if:NTF \l__tblr_table_command_unbrace_next_bool
- { \__tblr_last_unbraced:Nn \__tblr_extract_table_commands_next:n }
- { \__tblr_extract_table_commands_next:n }
- }
+ { \__tblr_extract_table_commands_next:n }
}
-\cs_new_protected:Npn \__tblr_last_unbraced:Nn #1 #2 { #1 #2 }
-
%% The outermost set of braces of cell text #1 will be removed
\cs_new_protected:Npn \__tblr_save_real_cell_text:w #1 \q_stop
{
@@ -2827,7 +2894,7 @@
}
%%% --------------------------------------------------------
-%% \section{Initialize Table Inner Specifications}
+%%> \section{Initialize Table Inner Specifications}
%%% --------------------------------------------------------
\prop_gset_from_keyval:Nn \g__tblr_initial_table_prop
@@ -2858,7 +2925,7 @@
\prop_gset_from_keyval:Nn \g__tblr_initial_cells_prop
{
- halign = l,
+ halign = j,
valign = t,
width = -1pt, % cell width unset
rowspan = 1,
@@ -2937,10 +3004,10 @@
\clist_new:N \g__tblr_table_known_keys_clist
\clist_gset:Nn \g__tblr_table_known_keys_clist
{
- colspec, rowspec, width, hspan, vspan, stretch, verb,
- column, row, cell, vline, hline, columns, rows, cells, vlines, hlines,
+ colspec, rowspec, column, row, cell, hline, vline, hborder, vborder, width,
+ rowhead, rowfoot, columns, rows, cells, hlines, vlines, % hborders, vborders,
leftsep, rightsep, colsep, abovesep, belowsep, rowsep, rulesep,
- rowhead, rowfoot,
+ baseline, hspan, vspan, stretch, verb,
}
\keys_define:nn { tblr }
@@ -2967,6 +3034,7 @@
rulesep .code:n = \__tblr_keys_gput:nn { rulesep } {#1},
rowhead .code:n = \__tblr_keys_gput:nn { rowhead } {#1},
rowfoot .code:n = \__tblr_keys_gput:nn { rowfoot } {#1},
+ baseline .code:n = \__tblr_outer_gput_spec:nn { baseline } {#1},
unknown .code:n = \__tblr_table_special_key:Vn \l_keys_key_str {#1},
}
@@ -3007,14 +3075,21 @@
\cs_generate_variant:Nn \__tblr_keys_gput:nn { nx }
%%% --------------------------------------------------------
-%% \section{Initialize and Parse Table Outer Specifications}
+%%> \section{Initialize and Parse Table Outer Specifications}
%%% --------------------------------------------------------
+\msg_new:nnn { tabularray } { used-theme-name }
+ { theme ~ name ~ #1 ~ has ~ been ~ used! }
+
%% #1: theme names; #2: template and style commands
\NewDocumentCommand \NewTblrTheme { m +m }
{
- \tl_set:cn { g__tblr_theme_ #1 _code_tl } {#2}
- \ignorespaces
+ \tl_if_exist:cTF { g__tblr_theme_ #1 _code_tl }
+ { \msg_error:nnn { tabularray } { used-theme-name } { #1 } }
+ {
+ \tl_set:cn { g__tblr_theme_ #1 _code_tl } {#2}
+ \ignorespaces
+ }
}
\cs_new_protected:Npn \__tblr_use_theme:n #1
@@ -3038,13 +3113,17 @@
long .code:n = \__tblr_outer_gput_spec:nn { long } { true },
tall .code:n = \__tblr_outer_gput_spec:nn { tall } { true },
halign .code:n = \__tblr_outer_gput_spec:nn { halign } {#1},
- valign .code:n = \__tblr_outer_gput_spec:nn { valign } {#1},
+ baseline .code:n = \__tblr_outer_gput_spec:nn { baseline } {#1},
l .meta:n = { halign = l },
c .meta:n = { halign = c },
r .meta:n = { halign = r },
- t .meta:n = { valign = t },
- m .meta:n = { valign = m },
- b .meta:n = { valign = b },
+ t .meta:n = { baseline = t },
+ T .meta:n = { baseline = T },
+ m .meta:n = { baseline = m },
+ M .meta:n = { baseline = M },
+ b .meta:n = { baseline = b },
+ B .meta:n = { baseline = B },
+ valign .meta:n = { baseline = #1 }, % obsolete, will be removed some day
expand .code:n = \__tblr_outer_gput_spec:nn { expand } {#1},
headsep .code:n = \__tblr_outer_gput_spec:nn { headsep } {#1},
footsep .code:n = \__tblr_outer_gput_spec:nn { footsep } {#1},
@@ -3061,6 +3140,7 @@
{
\__tblr_spec_gput:nen { outer } {#1} {#2}
}
+\cs_generate_variant:Nn \__tblr_outer_gput_spec:nn { ne }
\regex_const:Nn \c__tblr_option_key_name_regex { ^ [A-Za-z\-] + $ }
@@ -3102,7 +3182,7 @@
\cs_generate_variant:Nn \__tblr_outer_gput_more:nn { Vn }
%%% --------------------------------------------------------
-%% \section{Typeset and Calculate Sizes}
+%%> \section{Typeset and Calculate Sizes}
%%% --------------------------------------------------------
%% Calculate the width and height for every cell and border
@@ -3125,12 +3205,47 @@
\cs_new_protected:Npn \__tblr_make_strut_box:
{
\tl_set:Nx \l__tblr_s_tl { \__tblr_prop_item:ne { inner } { stretch } }
- \hbox_set:Nn \l__tblr_strut_ht_box
- { \vrule height \l__tblr_s_tl \box_ht:N \strutbox width ~ 0pt }
- \hbox_set:Nn \l__tblr_strut_dp_box
- { \vrule depth \l__tblr_s_tl \box_dp:N \strutbox width ~ 0pt }
+ \fp_compare:nNnTF { \l__tblr_s_tl } > {0}
+ {
+ \hbox_set:Nn \l__tblr_strut_ht_box
+ { \vrule height \l__tblr_s_tl \box_ht:N \strutbox width ~ 0pt }
+ \hbox_set:Nn \l__tblr_strut_dp_box
+ { \vrule depth \l__tblr_s_tl \box_dp:N \strutbox width ~ 0pt }
+ \cs_set_eq:NN \__tblr_use_strut_ht_box: \__tblr_use_strut_ht_box_real:
+ \cs_set_eq:NN \__tblr_use_strut_dp_box: \__tblr_use_strut_dp_box_real:
+ }
+ {
+ \fp_compare:nNnTF { \l__tblr_s_tl } < {0}
+ {
+ \cs_set_eq:NN \__tblr_use_strut_ht_box: \__tblr_use_strut_ht_box_vmode:
+ }
+ {
+ \cs_set_eq:NN \__tblr_use_strut_ht_box: \__tblr_use_strut_ht_box_hmode:
+ }
+ \cs_set_eq:NN \__tblr_use_strut_dp_box: \__tblr_use_strut_dp_box_ignore:
+ }
}
+\cs_new_protected:Npn \__tblr_use_strut_ht_box_real:
+ {
+ \mode_leave_vertical:
+ \box_use:N \l__tblr_strut_ht_box
+ }
+\cs_new_protected:Npn \__tblr_use_strut_ht_box_hmode:
+ {
+ \mode_leave_vertical:
+ }
+\cs_new_protected:Npn \__tblr_use_strut_ht_box_vmode:
+ {
+ \@minipagetrue % for lists (see issue #99)
+ }
+
+\cs_new_protected:Npn \__tblr_use_strut_dp_box_real:
+ {
+ \box_use:N \l__tblr_strut_dp_box
+ }
+\cs_new_protected:Npn \__tblr_use_strut_dp_box_ignore: { }
+
%% Calculate the thickness for every hline and vline
\cs_new_protected:Npn \__tblr_calculate_line_sizes:
{
@@ -3207,7 +3322,11 @@
{
%% When using text as vline, we need to omit abovepos and belowpos.
\unskip
- \hbox_set:Nn \l__tblr_d_box { \l__tblr_b_tl }
+ \hbox_set:Nn \l__tblr_d_box
+ {
+ \bool_if:NTF \l__tblr_math_mode_bool
+ { $ \l__tblr_b_tl $ } { \l__tblr_b_tl }
+ }
\box_set_ht:Nn \l__tblr_d_box {#4}
\box_set_dp:Nn \l__tblr_d_box {#5}
\box_use:N \l__tblr_d_box
@@ -3265,7 +3384,11 @@
\__tblr_get_hline_dash_style:N \l__tblr_b_tl
\xleaders \l__tblr_b_tl \hfil
}
- { \l__tblr_b_tl \hfil }
+ {
+ \bool_if:NTF \l__tblr_math_mode_bool
+ { $ \l__tblr_b_tl $ } { \l__tblr_b_tl }
+ \hfil
+ }
\group_end:
}
@@ -3329,6 +3452,7 @@
%% You can use these two counters in cell text
\int_zero:N \c@rownum
\int_zero:N \c@colnum
+ \__tblr_save_counters:n { table }
\int_step_inline:nn { \c@rowcount }
{
\int_incr:N \c@rownum
@@ -3355,6 +3479,7 @@
\g__tblr_cell_foot_dim
}
}
+ \__tblr_restore_counters:n { table }
\int_step_inline:nn { \c@colcount }
{
\tl_set:Nx \l__tblr_w_tl
@@ -3388,9 +3513,7 @@
\cs_new_protected:Npn \__tblr_measure_cell_update_sizes:nnNNNN #1 #2 #3 #4 #5 #6
{
\__tblr_get_cell_alignments:nn {#1} {#2}
- \__tblr_save_counters:n { trial }
\hbox_set:Nn \l_tmpa_box { \__tblr_get_cell_text:nn {#1} {#2} }
- \__tblr_restore_counters:n { trial }
\__tblr_update_cell_size:nnNNNN {#1} {#2} #3 #4 #5 #6
\__tblr_update_row_size:nnNNN {#1} {#2} #4 #5 #6
\__tblr_update_col_size:nN {#2} #3
@@ -3423,13 +3546,21 @@
\cs_new_protected:Npn \__tblr_get_cell_text_real:nn #1 #2
{
\group_begin:
- \tl_set:Nx \l__tblr_cell_cmd_tl
- { \__tblr_data_item:neen { cell } {#1} {#2} { cmd } }
- \tl_if_empty:NTF \l__tblr_cell_cmd_tl
- { \tl_set:Nx \l__tblr_c_tl { \__tblr_spec_item:ne { text } {[#1][#2]} } }
- {
- \tl_set:Nx \l__tblr_c_tl { { \__tblr_spec_item:ne { text } {[#1][#2]} } }
- \tl_put_left:NV \l__tblr_c_tl \l__tblr_cell_cmd_tl
+ \tl_set:Nx \l__tblr_c_tl { \__tblr_spec_item:ne { text } {[#1][#2]} }
+ %% when the cell text is guarded by a pair of curly braces,
+ %% we unbrace it and ignore cmd option of the cell, see issue #90.
+ \bool_lazy_and:nnTF
+ { \tl_if_single_p:N \l__tblr_c_tl }
+ { \exp_args:NV \tl_if_head_is_group_p:n \l__tblr_c_tl }
+ { \exp_last_unbraced:NNV \tl_set:Nn \l__tblr_c_tl \l__tblr_c_tl }
+ {
+ \tl_set:Nx \l__tblr_cell_cmd_tl
+ { \__tblr_data_item:neen { cell } {#1} {#2} { cmd } }
+ \tl_if_empty:NF \l__tblr_cell_cmd_tl
+ {
+ \tl_set:Nx \l__tblr_c_tl
+ { \exp_not:V \l__tblr_cell_cmd_tl { \exp_not:V \l__tblr_c_tl } }
+ }
}
\tl_set:Nx \l__tblr_cell_mode_tl
{ \__tblr_data_item:neen { cell } {#1} {#2} { mode } }
@@ -3462,14 +3593,17 @@
}
\dim_compare:nNnT { \l__tblr_w_tl } < { 0pt } % column width unset
{
+ \__tblr_save_counters:n { cell }
\bool_if:NTF \l__tblr_cell_math_mode_bool
{
- \hbox_set:Nn \l_tmpa_box { \l__tblr_c_tl }
+ %% Note that font = \boldmath will increase cell width (issue #137)
+ \hbox_set:Nn \l_tmpa_box { \l__tblr_f_tl \l__tblr_c_tl }
\tl_set:Nx \l__tblr_w_tl { \box_wd:N \l_tmpa_box }
}
{
\__tblr_get_cell_size_with_box:
}
+ \__tblr_restore_counters:n { cell }
}
\tl_set:Nx \l__tblr_cell_fg_tl
{ \__tblr_data_item:neen { cell } {#1} {#2} { foreground } }
@@ -3480,11 +3614,9 @@
\cs_new_protected:Npn \__tblr_get_cell_size_with_box:
{
- \__tblr_save_counters:n { cell }
\tl_if_eq:NnTF \l__tblr_inner_spec_measure_tl { vbox }
{ \__tblr_get_cell_size_with_vbox: }
{ \__tblr_get_cell_size_with_hbox: }
- \__tblr_restore_counters:n { cell }
}
%% Varwidth won't work as expected when \color command occurs in it,
@@ -3494,6 +3626,9 @@
%% or users may use it in the middle of the cell text,
%% so we have redefine \color command and disable it before measuring cell.
+%% In order to correctly measure an enumerate environment,
+%% we need to enclose varwidth with NoHyper environment (see issue #196).
+
\NewDocumentCommand \__tblr_fake_color_command:w { o m } { }
\cs_new_protected:Npn \__tblr_get_cell_size_with_vbox:
@@ -3501,10 +3636,12 @@
\hbox_set:Nn \l_tmpa_box
{
\cs_set_eq:NN \color \__tblr_fake_color_command:w
+ \begin{tblrNoHyper}
\begin{varwidth}{\paperwidth}
\l__tblr_f_tl
\__tblr_rescan_cell_tokens:N \l__tblr_c_tl
\end{varwidth}
+ \end{tblrNoHyper}
}
\tl_set:Nx \l__tblr_w_tl { \box_wd:N \l_tmpa_box }
}
@@ -3582,15 +3719,15 @@
\cs_new_protected:Npn \__tblr_make_vcell_text:NN #1 #2
{
\dim_set:Nn \tex_hsize:D { #2 }
- \@arrayparboxrestore
+ \TblrParboxRestore
\cs:w __tblr_halign_command_ \g__tblr_cell_halign_tl : \cs_end:
- \mode_leave_vertical:
- \box_use:N \l__tblr_strut_ht_box
+ %% \mode_leave_vertical: has been moved into \__tblr_use_strut_ht_box:
+ \__tblr_use_strut_ht_box:
\tl_if_empty:NF \l__tblr_cell_fg_tl { \exp_args:NV \color \l__tblr_cell_fg_tl }
\bool_if:NTF \l__tblr_cell_math_mode_bool
{ #1 }
{ \__tblr_rescan_cell_tokens:N #1 }
- \box_use:N \l__tblr_strut_dp_box
+ \__tblr_use_strut_dp_box:
}
%% When using verb option, there is an end-of-line character at the end.
@@ -3775,7 +3912,7 @@
}
%%% --------------------------------------------------------
-%% \section{Calculate and Adjust Extendable Columns}
+%%> \section{Calculate and Adjust Extendable Columns}
%%% --------------------------------------------------------
%% Compute column widths when there are some extendable columns
@@ -3943,7 +4080,7 @@
}
%%% --------------------------------------------------------
-%% \section{Calculate and Adjust Multispan Cells}
+%%> \section{Calculate and Adjust Multispan Cells}
%%% --------------------------------------------------------
%% Compute and adjust widths when there are some span cells.
@@ -4479,6 +4616,7 @@
\keys_set:nn { tblr-def-template } {#1}
\ignorespaces
}
+\cs_new_eq:NN \DeclareTblrTemplate \DefTblrTemplate
\cs_new_protected:Npn \__tblr_def_template:n #1
{
@@ -4869,11 +5007,16 @@
}
\SetTblrTemplate { note-border } { empty }
+\cs_set_eq:NN \TblrOverlap \rlap
+
\NewDocumentCommand \TblrNote { m }
{
\cs_if_exist:NT \hypersetup { \ExpTblrTemplate { note-border }{ default } }
- \__tblr_hyper_link:nn {#1}
- { \textsuperscript { \sffamily \UseTblrFont { note-tag } #1 } }
+ \TblrOverlap
+ {
+ \__tblr_hyper_link:nn {#1}
+ { \textsuperscript { \sffamily \UseTblrFont { note-tag } #1 } }
+ }
}
\DefTblrTemplate { note-tag } { empty } { }
@@ -5146,16 +5289,26 @@
\__tblr_build_table_label_entry:
\UseTblrTemplate { firsthead } { default }
}
- \__tblr_build_table_head_aux:Nn
- \l__tblr_table_middlehead_box { \UseTblrTemplate { middlehead } { default } }
- \__tblr_build_table_head_aux:Nn
- \l__tblr_table_lasthead_box { \UseTblrTemplate { lasthead } { default } }
- \__tblr_build_table_foot_aux:Nn
- \l__tblr_table_firstfoot_box { \UseTblrTemplate { firstfoot } { default } }
- \__tblr_build_table_foot_aux:Nn
- \l__tblr_table_middlefoot_box { \UseTblrTemplate { middlefoot } { default } }
- \__tblr_build_table_foot_aux:Nn
- \l__tblr_table_lastfoot_box { \UseTblrTemplate { lastfoot } { default } }
+ \__tblr_build_table_head_aux:Nn \l__tblr_table_middlehead_box
+ {
+ \UseTblrTemplate { middlehead } { default }
+ }
+ \__tblr_build_table_head_aux:Nn \l__tblr_table_lasthead_box
+ {
+ \UseTblrTemplate { lasthead } { default }
+ }
+ \__tblr_build_table_foot_aux:Nn \l__tblr_table_firstfoot_box
+ {
+ \UseTblrTemplate { firstfoot } { default }
+ }
+ \__tblr_build_table_foot_aux:Nn \l__tblr_table_middlefoot_box
+ {
+ \UseTblrTemplate { middlefoot } { default }
+ }
+ \__tblr_build_table_foot_aux:Nn \l__tblr_table_lastfoot_box
+ {
+ \UseTblrTemplate { lastfoot } { default }
+ }
}
\cs_new_protected:Npn \__tblr_build_tall_table_head_foot:
@@ -5192,9 +5345,12 @@
\vbox_set:Nn #1
{
\hsize = \tablewidth
- \parindent = 0pt \relax
- \vbox:n {#2}
- \skip_vertical:n { \__tblr_spec_item:nn { outer } { headsep } }
+ \TblrParboxRestore % it will set \linewidth = \hsize
+ \vbox_set:Nn \l_tmpa_box {#2}
+ \box_use:N \l_tmpa_box
+ \dim_compare:nNnT
+ { \box_ht:N \l_tmpa_box + \box_dp:N \l_tmpa_box } > { 0pt }
+ { \skip_vertical:n { \__tblr_spec_item:nn { outer } { headsep } } }
}
}
@@ -5203,9 +5359,12 @@
\vbox_set:Nn #1
{
\hsize = \tablewidth
- \skip_vertical:n { \__tblr_spec_item:nn { outer } { footsep } }
- \parindent = 0pt \relax
- \vbox:n {#2}
+ \TblrParboxRestore % it will set \linewidth = \hsize
+ \vbox_set:Nn \l_tmpb_box {#2}
+ \dim_compare:nNnT
+ { \box_ht:N \l_tmpb_box + \box_dp:N \l_tmpb_box } > { 0pt }
+ { \skip_vertical:n { \__tblr_spec_item:nn { outer } { footsep } } }
+ \box_use:N \l_tmpb_box
}
}
@@ -5217,11 +5376,11 @@
\tl_if_eq:enTF { \__tblr_spec_item:nn { outer } { tall } } { true }
{
\__tblr_build_tall_table:e
- { \__tblr_spec_item:nn { outer } { valign } }
+ { \__tblr_spec_item:nn { outer } { baseline } }
}
{
\__tblr_build_short_table:e
- { \__tblr_spec_item:nn { outer } { valign } }
+ { \__tblr_spec_item:nn { outer } { baseline } }
}
}
}
@@ -5288,7 +5447,7 @@
\int_incr:N \l__tblr_table_page_int
\int_set:Nn \l__tblr_long_from_int { \l__tblr_prev_i_int + 1 }
}
- \newpage
+ \TblrNewPage
\hbox{}\kern-\topskip\nobreak
\noindent
\LogTblrTracing { page }
@@ -5302,7 +5461,7 @@
{ \int_use:N \l__tblr_long_from_int }
{ \int_use:N \l__tblr_curr_i_int }
\int_incr:N \l__tblr_table_page_int
- \newpage
+ \TblrNewPage
\hbox{}\kern-\topskip\nobreak
\noindent
\LogTblrTracing { page }
@@ -5356,12 +5515,17 @@
\int_compare:nNnTF {#2} < {#1}
{
\tl_set:Nx \l__tblr_b_tl
- { \__tblr_data_item:nen { row } { \int_eval:n { #2 + 1 } } { break } }
- \int_compare:nNnTF { \l__tblr_b_tl } < { 0 }
+ {
+ \__tblr_spec_item:ne { hline }
+ { [ \int_eval:n { #2 + 1 } ] / @pagebreak }
+ }
+ % Note that \l__tblr_b_tl may be empty
+ \int_compare:nNnTF { \l__tblr_b_tl + 0 } < { 0 }
{ \bool_set_true:N \l_tmpa_bool }
{
\bool_set_false:N \l_tmpa_bool
- \int_compare:nNnT { \l__tblr_b_tl } > { 0 } { \bool_set_true:N #4 }
+ \int_compare:nNnT { \l__tblr_b_tl + 0 } > { 0 }
+ { \bool_set_true:N #4 }
}
}
{ \bool_set_false:N \l_tmpa_bool }
@@ -5425,7 +5589,7 @@
\hrule height ~ 0pt
\box_use:N \l__tblr_table_foot_box
}
- \__tblr_halign_whole:Nn \l__tblr_table_box #1
+ \__tblr_halign_whole:Nn \l__tblr_table_box {#1}
}
\cs_generate_variant:Nn \__tblr_build_page_table:nnn { nnx }
@@ -5463,7 +5627,6 @@
\cs_new_protected:Npn \__tblr_build_tall_table:n #1
{
\mode_leave_vertical:
- \raggedright
\__tblr_build_tall_table_head_foot:
\__tblr_build_one_table:nn {1} {\c@rowcount}
\vbox_set:Nn \l__tblr_table_box
@@ -5474,7 +5637,7 @@
\hrule height ~ 0pt
\box_use:N \l__tblr_table_lastfoot_box
}
- \__tblr_valign_whole:Nn \l__tblr_table_box #1
+ \__tblr_valign_whole:Nn \l__tblr_table_box {#1}
}
\cs_generate_variant:Nn \__tblr_build_tall_table:n { e }
@@ -5484,7 +5647,7 @@
{
\mode_leave_vertical:
\__tblr_build_one_table:nn {1} {\c@rowcount}
- \__tblr_valign_whole:Nn \l__tblr_table_box #1
+ \__tblr_valign_whole:Nn \l__tblr_table_box {#1}
}
\cs_generate_variant:Nn \__tblr_build_short_table:n { e }
@@ -5561,9 +5724,15 @@
\tl_new:N \__tblr_vbox_align_tl
\tl_const:Nn \__tblr_vbox_t_tl {t}
+\tl_const:Nn \__tblr_vbox_T_tl {T}
\tl_const:Nn \__tblr_vbox_m_tl {m}
+\tl_const:Nn \__tblr_vbox_M_tl {M}
\tl_const:Nn \__tblr_vbox_c_tl {c}
\tl_const:Nn \__tblr_vbox_b_tl {b}
+\tl_const:Nn \__tblr_vbox_B_tl {B}
+
+\regex_const:Nn \c__tblr_is_positive_integer_regex { ^ \d+ $ }
+\regex_const:Nn \c__tblr_is_negative_integer_regex { ^ - \d+ $ }
\cs_new_protected:Npn \__tblr_valign_whole:Nn #1 #2
{
@@ -5576,12 +5745,34 @@
{ \__tblr_valign_whole_middle:N #1 }
\__tblr_vbox_c_tl
{ \__tblr_valign_whole_middle:N #1 }
+ \__tblr_vbox_M_tl
+ { \__tblr_valign_whole_middle_row_or_border:N #1 }
\__tblr_vbox_t_tl
{ \__tblr_valign_whole_top:N #1 }
+ \__tblr_vbox_T_tl
+ {
+ \tl_set:Nn \__tblr_vbox_align_tl {1}
+ \__tblr_valign_whole_at_row_from_above:N #1
+ }
\__tblr_vbox_b_tl
{ \__tblr_valign_whole_bottom:N #1 }
+ \__tblr_vbox_B_tl
+ {
+ \tl_set:Nx \__tblr_vbox_align_tl { \int_use:N \c@rowcount }
+ \__tblr_valign_whole_at_row_from_below:N #1
+ }
+ }
+ {
+ \regex_match:NVTF \c__tblr_is_positive_integer_regex \__tblr_vbox_align_tl
+ { \__tblr_valign_whole_at_row:N #1 }
+ {
+ \regex_match:NVTF
+ \c__tblr_is_negative_integer_regex \__tblr_vbox_align_tl
+ { \__tblr_valign_whole_at_border:N #1 }
+ { \__tblr_valign_whole_middle:N #1 }
+ }
}
- { \__tblr_valign_whole_middle:N #1 }
+ \box_use_drop:N #1
\group_end:
}
@@ -5592,74 +5783,147 @@
\cs_new_protected:Npn \__tblr_valign_whole_top:N #1
{
- \tl_set:Nx \l__tblr_a_tl
- { \__tblr_spec_item:ne { hline } { [1] / @hline-height } }
- %% Note that \l__tblr_b_tl may be empty
- \tl_set:Nx \l__tblr_b_tl
- { \__tblr_prop_item:ne { inner } { baseline } }
- \bool_lazy_or:nnTF
- { \dim_compare_p:nNn { \l__tblr_a_tl } = { 0pt } }
- { \int_compare_p:nNn { \l__tblr_b_tl + 0 } = { 1 } }
+ \dim_set:Nn \l__tblr_h_dim { \__tblr_valign_get_hline_total:n {1} }
+ \dim_compare:nNnT \l__tblr_h_dim = { 0pt }
+ { \dim_add:Nn \l__tblr_h_dim { \__tblr_valign_get_row_height:n {1} } }
+ \box_set_ht:Nn #1 { \l__tblr_h_dim }
+ \box_set_dp:Nn #1 { \l__tblr_t_dim - \l__tblr_h_dim }
+ }
+
+\cs_new_protected:Npn \__tblr_valign_whole_bottom:N #1
+ {
+ \dim_set:Nn \l__tblr_d_dim
+ { \__tblr_valign_get_hline_total:n { \int_eval:n { \c@rowcount + 1 } } }
+ \dim_compare:nNnTF \l__tblr_d_dim = { 0pt }
{
- \dim_set:Nn \l__tblr_h_dim
- {
- \__tblr_data_item:nnn { row } {1} { abovesep }
- +
- ( \__tblr_data_item:nnn { row } {1} { @row-height }
- +
- \__tblr_data_item:nnn { row } {1} { @row-upper }
- -
- \__tblr_data_item:nnn { row } {1} { @row-lower }
- ) / 2
- }
- \dim_set:Nn \l__tblr_d_dim { \l__tblr_t_dim - \l__tblr_h_dim }
+ \dim_set:Nn \l__tblr_d_dim
+ { \__tblr_valign_get_row_depth:n { \int_use:N \c@rowcount } }
}
+ { \dim_zero:N \l__tblr_d_dim }
+ \box_set_ht:Nn #1 { \l__tblr_t_dim - \l__tblr_d_dim }
+ \box_set_dp:Nn #1 { \l__tblr_d_dim }
+ }
+
+\cs_new_protected:Npn \__tblr_valign_whole_middle_row_or_border:N #1
+ {
+ \int_if_odd:nTF { \c@rowcount }
{
- \dim_set:Nn \l__tblr_h_dim { 0pt }
- \dim_set_eq:NN \l__tblr_d_dim \l__tblr_t_dim
+ \tl_set:Nx \__tblr_vbox_align_tl { \int_eval:n { (\c@rowcount + 1) / 2 } }
+ \__tblr_valign_whole_at_row_from_above:N #1
+ }
+ {
+ \tl_set:Nx \__tblr_vbox_align_tl { \int_eval:n { \c@rowcount / 2 + 1 } }
+ \__tblr_valign_whole_at_border_from_above:N #1
}
- \box_set_ht:Nn #1 { \l__tblr_h_dim }
- \box_set_dp:Nn #1 { \l__tblr_d_dim }
- \box_use_drop:N #1
}
-\cs_new_protected:Npn \__tblr_valign_whole_bottom:N #1
+\cs_new_protected:Npn \__tblr_valign_whole_at_row:N #1
{
- \tl_set:Nx \l__tblr_a_tl
+ \int_compare:nNnTF { 2 * \__tblr_vbox_align_tl } > { \c@rowcount }
+ { \__tblr_valign_whole_at_row_from_below:N #1 }
+ { \__tblr_valign_whole_at_row_from_above:N #1 }
+ }
+
+\cs_new_protected:Npn \__tblr_valign_whole_at_row_from_above:N #1
+ {
+ \dim_set:Nn \l__tblr_h_dim
+ { \__tblr_valign_get_hline_total:n { \__tblr_vbox_align_tl } }
+ \dim_add:Nn \l__tblr_h_dim
+ { \__tblr_valign_get_row_height:n { \__tblr_vbox_align_tl } }
+ \int_step_inline:nn { \__tblr_vbox_align_tl - 1 }
{
- \__tblr_spec_item:ne { hline }
- { [\int_eval:n {\c@rowcount + 1}] / @hline-height }
+ \dim_add:Nn \l__tblr_h_dim { \__tblr_valign_get_hline_total:n {##1} }
+ \dim_add:Nn \l__tblr_h_dim { \__tblr_valign_get_row_total:n {##1} }
}
- %% Note that \l__tblr_b_tl may be empty
- \tl_set:Nx \l__tblr_b_tl
- { \__tblr_prop_item:ne { inner } { baseline } }
- \bool_lazy_or:nnTF
- { \dim_compare_p:nNn { \l__tblr_a_tl } = { 0pt } }
- { \int_compare_p:nNn { \l__tblr_b_tl + 0 } = { \c@rowcount } }
+ \box_set_ht:Nn #1 { \l__tblr_h_dim }
+ \box_set_dp:Nn #1 { \l__tblr_t_dim - \l__tblr_h_dim }
+ }
+
+\cs_new_protected:Npn \__tblr_valign_whole_at_row_from_below:N #1
+ {
+ \dim_set:Nn \l__tblr_d_dim
+ { \__tblr_valign_get_hline_total:n { \int_eval:n {\c@rowcount + 1} } }
+ \dim_add:Nn \l__tblr_d_dim
+ { \__tblr_valign_get_row_depth:n { \__tblr_vbox_align_tl } }
+ \int_step_inline:nnn { \__tblr_vbox_align_tl + 1 } { \c@rowcount }
{
- \dim_set:Nn \l__tblr_d_dim
- {
- ( \__tblr_data_item:nen { row }
- { \int_use:N \c@rowcount } { @row-height }
- -
- \__tblr_data_item:nen { row }
- { \int_use:N \c@rowcount } { @row-upper }
- +
- \__tblr_data_item:nen { row }
- { \int_use:N \c@rowcount } { @row-lower }
- ) / 2
- +
- \__tblr_data_item:nnn { row } {1} { belowsep }
- }
- \dim_set:Nn \l__tblr_h_dim { \l__tblr_t_dim - \l__tblr_d_dim }
+ \dim_add:Nn \l__tblr_d_dim { \__tblr_valign_get_hline_total:n {##1} }
+ \dim_add:Nn \l__tblr_d_dim { \__tblr_valign_get_row_total:n {##1} }
}
+ \box_set_dp:Nn #1 { \l__tblr_d_dim }
+ \box_set_ht:Nn #1 { \l__tblr_t_dim - \l__tblr_d_dim }
+ }
+
+\cs_new_protected:Npn \__tblr_valign_whole_at_border:N #1
+ {
+ \tl_set:Nx \__tblr_vbox_align_tl { \int_eval:n { - \__tblr_vbox_align_tl } }
+ \int_compare:nNnTF { 2 * \__tblr_vbox_align_tl - 2 } > { \c@rowcount }
+ { \__tblr_valign_whole_at_border_from_below:N #1 }
+ { \__tblr_valign_whole_at_border_from_above:N #1 }
+ }
+
+\cs_new_protected:Npn \__tblr_valign_whole_at_border_from_above:N #1
+ {
+ \dim_set:Nn \l__tblr_h_dim
+ { \__tblr_valign_get_hline_total:n { \__tblr_vbox_align_tl } }
+ \int_step_inline:nn { \__tblr_vbox_align_tl - 1 }
{
- \dim_set:Nn \l__tblr_d_dim { 0pt }
- \dim_set_eq:NN \l__tblr_h_dim \l__tblr_t_dim
+ \dim_add:Nn \l__tblr_h_dim { \__tblr_valign_get_hline_total:n {##1} }
+ \dim_add:Nn \l__tblr_h_dim { \__tblr_valign_get_row_total:n {##1} }
}
\box_set_ht:Nn #1 { \l__tblr_h_dim }
+ \box_set_dp:Nn #1 { \l__tblr_t_dim - \l__tblr_h_dim }
+ }
+
+\cs_new_protected:Npn \__tblr_valign_whole_at_border_from_below:N #1
+ {
+ \dim_zero:N \l__tblr_d_dim
+ \int_step_inline:nnn { \__tblr_vbox_align_tl } { \c@rowcount }
+ {
+ \dim_add:Nn \l__tblr_d_dim { \__tblr_valign_get_row_total:n {##1} }
+ \dim_add:Nn \l__tblr_d_dim
+ { \__tblr_valign_get_hline_total:n { \int_eval:n { ##1 + 1 } } }
+ }
\box_set_dp:Nn #1 { \l__tblr_d_dim }
- \box_use_drop:N #1
+ \box_set_ht:Nn #1 { \l__tblr_t_dim - \l__tblr_d_dim }
+ }
+
+\cs_new_nopar:Npn \__tblr_valign_get_hline_total:n #1
+ {
+ \__tblr_spec_item:ne { hline } { [#1] / @hline-height }
+ }
+
+\cs_new_nopar:Npn \__tblr_valign_get_row_total:n #1
+ {
+ \__tblr_data_item:nnn { row } {#1} { abovesep }
+ +
+ \__tblr_data_item:nnn { row } {#1} { @row-height }
+ +
+ \__tblr_data_item:nnn { row } {#1} { belowsep }
+ }
+
+\cs_new_nopar:Npn \__tblr_valign_get_row_height:n #1
+ {
+ \__tblr_data_item:nnn { row } {#1} { abovesep }
+ +
+ ( \__tblr_data_item:nnn { row } {#1} { @row-height }
+ +
+ \__tblr_data_item:nnn { row } {#1} { @row-upper }
+ -
+ \__tblr_data_item:nnn { row } {#1} { @row-lower }
+ ) / 2
+ }
+
+\cs_new_nopar:Npn \__tblr_valign_get_row_depth:n #1
+ {
+ ( \__tblr_data_item:nen { row } {#1} { @row-height }
+ -
+ \__tblr_data_item:nen { row } {#1} { @row-upper }
+ +
+ \__tblr_data_item:nen { row } {#1} { @row-lower }
+ ) / 2
+ +
+ \__tblr_data_item:nnn { row } {#1} { belowsep }
}
%%% --------------------------------------------------------
@@ -6064,7 +6328,8 @@
\hbox_set_to_wd:Nnn \l__tblr_a_box { \l__tblr_cell_wd_dim }
{
\tl_if_eq:NnTF \g__tblr_cell_halign_tl {j}
- { \__tblr_get_cell_text:nn {#1} {#2} }
+ % cell width may be less than column width for j cells
+ { \__tblr_get_cell_text:nn {#1} {#2} \hfil }
{
\tl_if_eq:NnF \g__tblr_cell_halign_tl {l} { \hfil }
\__tblr_get_cell_text:nn {#1} {#2}
@@ -6245,14 +6510,13 @@
}
%%% --------------------------------------------------------
-%% \section{Tracing Tabularray}
+%%> \section{Tracing Tabularray}
%%% --------------------------------------------------------
-\NewDocumentCommand \SetTabularrayTracing { m }
+\NewDocumentCommand \SetTblrTracing { m }
{
\keys_set:nn { tblr-set-tracing } {#1}
}
-\cs_new_eq:NN \SetTblrTracing \SetTabularrayTracing
\bool_new:N \g__tblr_tracing_text_bool
\bool_new:N \g__tblr_tracing_command_bool
@@ -6361,11 +6625,10 @@
\bool_gset_false:N \g__tblr_tracing_step_bool
}
-\NewDocumentCommand \LogTabularrayTracing { m }
+\NewDocumentCommand \LogTblrTracing { m }
{
\keys_set:nn { tblr-log-tracing } {#1}
}
-\cs_new_eq:NN \LogTblrTracing \LogTabularrayTracing
\keys_define:nn { tblr-log-tracing }
{
@@ -6482,7 +6745,7 @@
}
%%% --------------------------------------------------------
-%% \section{Tabularray Libraries}
+%%> \section{Tabularray Libraries}
%%% --------------------------------------------------------
%% \NewTblrLibrary and \UseTblrLibrary commands
@@ -6571,17 +6834,18 @@
\RequirePackage { booktabs }
\newcommand \tblr@booktabs@hline [1] [] { \hline [##1] }
\newcommand \tblr@booktabs@oldhline [1] [] {
- \hline [abovespace = \aboverulesep, belowspace = \belowrulesep, ##1]
+ \hline [##1]
+ \hborder { abovespace = \aboverulesep, belowspace = \belowrulesep }
}
\newcommand \tblr@booktabs@cline [2] [] { \cline [##1] {##2} }
\newcommand \tblr@booktabs@oldcline [2] [] {
- \cline [abovespace = \aboverulesep, belowspace = \belowrulesep, ##1] {##2}
+ \cline [##1] {##2}
+ \hborder { abovespace = \aboverulesep, belowspace = \belowrulesep }
}
\newcommand \tblr@booktabs@cline@more [2] [] { \SetHline [+] {##2} {##1} }
\newcommand \tblr@booktabs@oldcline@more [2] [] {
- \SetHline [+] {##2} {
- abovespace = \aboverulesep, belowspace = \belowrulesep, ##1
- }
+ \SetHline [+] {##2} {##1}
+ \hborder { abovespace = \aboverulesep, belowspace = \belowrulesep }
}
\NewTableCommand \toprule [1] [] {
\tblr@booktabs@hline [wd=\heavyrulewidth, ##1]
@@ -6603,20 +6867,29 @@
\peek_meaning:NTF \cmidrule { \tblr@booktabs@change@more } { \relax }
}
\NewTblrEnviron { booktabs }
+ \NewTblrEnviron { longtabs }
+ \NewTblrEnviron { talltabs }
\SetTblrInner [ booktabs ] { rowsep = 0pt }
+ \SetTblrInner [ longtabs ] { rowsep = 0pt }
+ \SetTblrInner [ talltabs ] { rowsep = 0pt }
+ \SetTblrOuter [ longtabs ] { long }
+ \SetTblrOuter [ talltabs ] { tall }
\RequirePackage { etoolbox }
- \AtBeginEnvironment { booktabs }
+ \newcommand \tblr@booktabs@begin@hook
{
\let \tblr@booktabs@hline = \tblr@booktabs@oldhline
\let \tblr@booktabs@cline = \tblr@booktabs@oldcline
\let \tblr@booktabs@cline@more = \tblr@booktabs@oldcline@more
}
+ \AtBeginEnvironment { booktabs } { \tblr@booktabs@begin@hook }
+ \AtBeginEnvironment { longtabs } { \tblr@booktabs@begin@hook }
+ \AtBeginEnvironment { talltabs } { \tblr@booktabs@begin@hook }
\NewTableCommand \specialrule [3]
- { \hline [##1, abovespace = ##2, belowspace = ##3] }
+ { \hline [##1] \hborder { abovespace = ##2, belowspace = ##3 } }
\NewTableCommand \addrowspace [1] [\defaultaddspace]
- { \SetVspace { abovespace+ = (##1) / 2, belowspace+ = (##1) / 2 } }
+ { \hborder { abovespace+ = (##1) / 2, belowspace+ = (##1) / 2 } }
\NewTableCommand \addlinespace [1] [\defaultaddspace]
- { \SetVspace { abovespace+ = (##1) / 2, belowspace+ = (##1) / 2 } }
+ { \hborder { abovespace+ = (##1) / 2, belowspace+ = (##1) / 2 } }
}
%% Library counter for resetting all counters
diff --git a/macros/latex/contrib/tabularray/tabularray.tex b/macros/latex/contrib/tabularray/tabularray.tex
index c2fddc1e36..95416b6d46 100644
--- a/macros/latex/contrib/tabularray/tabularray.tex
+++ b/macros/latex/contrib/tabularray/tabularray.tex
@@ -1,15 +1,19 @@
% -*- coding: utf-8 -*-
% !TEX program = lualatex
\documentclass[oneside]{book}
-\newcommand*{\myversion}{2021Q}
+\newcommand*{\myversion}{2022A}
\newcommand*{\mylpad}[1]{\ifnum#1<10 0\the#1\else\the#1\fi}
\usepackage[a4paper,margin=2.5cm]{geometry}
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{4pt plus 1pt minus 1pt}
+
\usepackage{codehigh} % https://ctan.org/pkg/codehigh
\usepackage{tabularray}
\usepackage{array,multirow,amsmath}
\usepackage{chemmacros,environ}
+\usepackage{enumitem}
\usepackage[firstpage=true]{background}
\backgroundsetup{contents={}}
@@ -84,8 +88,8 @@
%color = black,
contents = {
\begin{tblr}{
- width = \paperwidth, columns = {1}, rows= {4em},
- cell{odd}{odd} = {gray9}, cell{even}{even} = {gray9},
+ width = \paperwidth, columns = {1}, rows= {4em, gray9},
+ hlines = {2.8pt,white}, vlines = {2.8pt,white},
}
& & & & & & & & & & & & & & \\
& & & & & & & & & & & & & & \\
@@ -105,8 +109,6 @@
& & & & & & & & & & & & & & \\
& & & & & & & & & & & & & & \\
& & & & & & & & & & & & & & \\
- & & & & & & & & & & & & & & \\
- & & & & & & & & & & & & & & \\
\end{tblr}
}
}
@@ -154,6 +156,13 @@
\chapter{Overview of Features}
+Before using \verb!tabularray! package, it is better to know how to typeset simple text and
+math tables with traditional \verb!tabular!, \verb!tabularx! and \verb!array! environments,
+because we will compare \verb!tblr! environment from \verb!tabularray! package with these
+environments. You may read web pages on LaTeX tables on
+\href{https://www.learnlatex.org/en/lesson-08}{LearnLaTeX} and
+\href{https://www.overleaf.com/learn/latex/Tables}{Overleaf} first.
+
\section{Vertical Space}
After loading \verb!tabularray! package in the preamble,
@@ -185,7 +194,7 @@ The following is our first example:
\end{tblr}
\end{demohigh}
-You may notice that there is extra space above and below the table rows with \verb!tblr! envirenment.
+You may notice that there is extra space above and below the table rows with \verb!tblr! environment.
This space makes the table look better.
If you don't like it, you could use \verb!\SetTblrInner! command:
@@ -202,7 +211,7 @@ If you don't like it, you could use \verb!\SetTblrInner! command:
\end{tblr}
\end{demohigh}
-But in many cases, this rowsep is useful:
+But in many cases, this \verb!rowsep! is useful:
\begin{demo}
$\begin{array}{rrr}
@@ -367,7 +376,7 @@ It was a hard job to typeset cells with multiple rows and multiple columns. For
& \multicolumn{2}{c|}{2 Columns}
& \multicolumn{2}{c|}{\multirow{2}{*}{2 Rows 2 Columns}} \\
\cline{2-3}
-  & 2-2 & 2-3 & \multicolumn{2}{c|}{} \\
+ & 2-2 & 2-3 & \multicolumn{2}{c|}{} \\
\hline
3-1 & 3-2 & 3-3 & 3-4 & 3-5 \\
\hline
@@ -387,7 +396,7 @@ Therefore it's much simpler to typeset spanned cells:
& \SetCell[c=2]{c} 2 Columns
& & \SetCell[r=2,c=2]{c} 2 Rows 2 Columns & \\
\hline
-  & 2-2 & 2-3 & & \\
+ & 2-2 & 2-3 & & \\
\hline
3-1 & 3-2 & 3-3 & 3-4 & 3-5 \\
\hline
@@ -484,7 +493,7 @@ It's better to specify horizontal alignment in \verb!colspec!,
and vertical alignment in \verb!rowspec!, respectively.
Inside \verb!rowspec!, \verb!|! is the hline type.
-Therefore we need not to write \verb!\hline! commnad, which makes table code cleaner.
+Therefore we need not to write \verb!\hline! command, which makes table code cleaner.
\section{Hlines and Vlines}
@@ -505,7 +514,8 @@ Seven & Eight & Nine \\
\section{Colorful Tables}
To add colors to your tables, you need to load \verb!xcolor! package first.
-\verb!Tabularray! package will also load \verb!ninecolors! package for proper color contrast.
+\verb!Tabularray! package will also load
+\href{https://ctan.org/pkg/ninecolors}{\texttt{ninecolors}} package for proper color contrast.
First you can specify background option for \verb!Q! rows/columns inside \verb!rowspec!/\verb!colspec!:
\begin{demohigh}
@@ -564,6 +574,7 @@ Hlines and vlines can also have colors:
\end{demohigh}
\chapter{Basic Interfaces}
+\label{chap:basic}
\section{Old and New Interfaces}
@@ -583,9 +594,11 @@ hence totally separating the styles and the contents of tables.
]{verb}
Old Interfaces & New Interfaces \\
\verb!\SetHlines! & \K{hlines} \\
- \verb!\SetHline!, \verb!\hline!, \verb!\cline! & \K{hline}, \K{rowspec} \\
+ \verb!\SetHline!, \verb!\hline!, \verb!\hborder!, \verb!\cline!
+ & \K{hline}, \K{hborder}, \K{rowspec} \\
\verb!\SetVlines! & \K{vlines} \\
- \verb!\SetVline!, \verb!\vline!, \verb!\rline! & \K{vline}, \K{colspec} \\
+ \verb!\SetVline!, \verb!\vline!, \verb!\vborder!, \verb!\rline!
+ & \K{vline}, \K{vborder}, \K{colspec} \\
\verb!\SetCells! & \K{cells} \\
\verb!\SetCell! & \K{cell} \\
\verb!\SetRows! & \K{rows} \\
@@ -611,10 +624,6 @@ All available keys for hlines and vlines are described in Table \ref{key:hline}
\K{leftpos} & crossing or trimming position at the left side & \V{1} \\
\K{rightpos} & crossing or trimming position at the right side & \V{1} \\
\K{endpos} & adjust leftpos/rightpos for only the leftmost/rightmost column & \V{false} \\
- \K{abovespace} & set \V{belowsep} of previous row (see Table \ref{key:row}) & \V{2pt} \\
- \K{belowspace} & set \V{abovesep} of current row (see Table \ref{key:row}) & \V{2pt} \\
- \K{abovespace+} & increase \V{belowsep} of previous row & \None \\
- \K{belowspace+} & increase \V{abovesep} of current row & \None \\
\end{spectblr}
\vspace{-2em}
\begin{spectblr}[
@@ -720,7 +729,7 @@ Their values are the same as options \verb!hlines! and \verb!vlines!:
\end{tblr}
\end{demohigh}
-You can use \verb!X!, \verb!Y!, \verb!Z! to denote the last three childs, respectively.
+You can use \verb!X!, \verb!Y!, \verb!Z! to denote the last three children, respectively.
It is especially useful when you are writing long tables:
\begin{demohigh}
@@ -892,6 +901,42 @@ The usages of table commands \verb!\vline!, \verb!\rline!, \verb!\SetVline!, \ve
are similar to those of \verb!\hline!, \verb!\cline!, \verb!\SetHline!, \verb!\SetHlines!, respectively.
But normally you don't need to use them.
+\section{Hborders and Vborders}
+
+Options \verb!hborder{i}! and \verb!vborder{j}! are similar to \verb!hline{i}! and \verb!vline{j}!,
+respectively, but they hold border specifications not related to one specific hline and vline.
+All available keys for \verb!hborder{i}! and \verb!vborder{j}! are described in
+Table~\ref{key:hborder} and Table~\ref{key:vborder}.
+
+\begin{spectblr}[
+ caption = {Keys for Hborders},
+ label = {key:hborder},
+]{}
+ Key & Description and Values & Initial Value \\
+ \K{pagebreak} & pagebreak at this position: \V{yes}, \V{no} or \V{auto}
+ (See Chapter~\ref{chap:long}) & \V{auto} \\
+ \K{abovespace} & set \V{belowsep} of previous row (see Table \ref{key:row}) & \V{2pt} \\
+ \K{belowspace} & set \V{abovesep} of current row (see Table \ref{key:row}) & \V{2pt} \\
+ \K{abovespace+} & increase \V{belowsep} of previous row & \None \\
+ \K{belowspace+} & increase \V{abovesep} of current row & \None \\
+\end{spectblr}
+\vspace{-2em}
+\begin{spectblr}[
+ caption = {Keys for Vborders},
+ label = {key:vborder},
+]{}
+ Key & Description and Values & Initial Value \\
+ \K{leftspace} & set \V{rightsep} of previous column (see Table \ref{key:column}) & \V{6pt} \\
+ \K{rightspace} & set \V{leftsep} of current column (see Table \ref{key:column}) & \V{6pt} \\
+ \K{leftspace+} & increase \V{rightsep} of previous column & \None \\
+ \K{rightspace+} & increase \V{leftsep} of current column & \None \\
+\end{spectblr}
+
+Furthermore, table command \verb!\hborder{<specs>}! at the beginning of row \verb!i!
+is the same as table option \verb!hborder{i}={<specs>}!,
+and table command \verb!\vborder{<specs>}! at the beginning of column \verb!j!
+is the same as table option \verb!vborder{j}={<specs>}!.
+
\section{Cells and Spancells}
All available keys for cells are described in Table \ref{key:cell} and Table \ref{key:cellspan}.
@@ -904,7 +949,7 @@ All available keys for cells are described in Table \ref{key:cell} and Table \re
Key & Description and Values & Initial Value \\
\underline{\K{halign}}
& horizontal alignment: \V{l} (left), \V{c} (center), \V{r} (right) or \V{j} (justify)
- & \V{l} \\
+ & \V{j} \\
\underline{\K{valign}}
& vertical alignment: \V{t} (top), \V{m} (middle), \V{b} (bottom),
\V{h} (head) or \V{f} (foot)
@@ -1040,8 +1085,8 @@ All available keys for rows and columns are described in Table \ref{key:row} and
]{verb}
Key & Description and Values & Initial Value \\
\underline{\K{halign}}
- & horizontal alignment: \V{l} (left), \V{c} (center), or \V{r} (right)
- & \V{l} \\
+ & horizontal alignment: \V{l} (left), \V{c} (center), \V{r} (right) or \V{j} (justify)
+ & \V{j} \\
\underline{\K{valign}}
& vertical alignment: \V{t} (top), \V{m} (middle), \V{b} (bottom),
\V{h} (head) or \V{f} (foot)
@@ -1071,8 +1116,8 @@ All available keys for rows and columns are described in Table \ref{key:row} and
]{verb}
Key & Description and Values & Initial Value \\
\underline{\K{halign}}
- & horizontal alignment: \V{l} (left), \V{c} (center), or \V{r} (right)
- & \V{l} \\
+ & horizontal alignment: \V{l} (left), \V{c} (center), \V{r} (right) or \V{j} (justify)
+ & \V{j} \\
\underline{\K{valign}}
& vertical alignment: \V{t} (top), \V{m} (middle), \V{b} (bottom),
\V{h} (head) or \V{f} (foot)
@@ -1220,7 +1265,7 @@ with column/row type specifiers.
\subsection{Colspec and Width}
-Option \verb!width! are for setting the width of the table with extendable columns.
+Option \verb!width! is for setting the width of the table with extendable columns.
The following example demonstrates the usage of \verb!width! option.
\nopagebreak
\begin{demohigh}
@@ -1302,13 +1347,31 @@ It can have an optional argument when it's defined.
\chapter{Extra Interfaces}
\label{chap:extra}
-\section{Table Specifications}
+In general, \verb!tblr! environment can accepts both inner and outer specifications:
+
+\begin{codehigh}
+\begin{tblr}[<outer specs>]{<inner specs>}
+ <table body>
+\end{tblr}
+\end{codehigh}
+
+\textbf{Inner specifications} are all specifications written in the \underline{mandatory} argument
+of \verb!tblr! environment, which include new interfaces described in Chapter \ref{chap:basic}.
-All available keys for the whole table are described in Table \ref{key:table}.
+\textbf{Outer specifications} are all specifications written in the \underline{optional} argument
+of \verb!tblr! environment, most of which are used for long tables (see Chapter \ref{chap:long}).
+
+You can use \verb!\SetTblrInner! and \verb!\SetTblrOuter! commands
+to set default inner and outer specifications of tables, respectively.
+
+\section{Inner Specifications}
+
+In addition to new interfaces in Chapter \ref{chap:basic},
+there are several inner specifications which are described in Table~\ref{key:inner}.
\begin{spectblr}[
- caption = {Keys for the Whole Table},
- label = {key:table},
+ caption = {Keys for Inner Specifications},
+ label = {key:inner},
]{}
Key & Description and Values & Initial Value \\
\K{rulesep} & space between two hlines or vlines & \V{2pt} \\
@@ -1321,8 +1384,12 @@ All available keys for the whole table are described in Table \ref{key:table}.
\K{colsep} & set horizontal space to both sides of every column & \V{6pt} \\
\K{hspan} & horizontal span algorithm: \V{default}, \V{even}, or \V{minimal} & \V{default} \\
\K{vspan} & vertical span algorithm: \V{default} or \V{even} & \V{default} \\
+ \K{verb} & you need this key to use verb commands & \None \\
+ \K{baseline} & set the baseline of the table & \V{m} \\
\end{spectblr}
+\subsection{Space between Double Rules}
+
The following example shows that we can replace \verb!\doublerulesep! parameter with \verb!rulesep! key.
\nopagebreak
\begin{demohigh}
@@ -1335,6 +1402,8 @@ The following example shows that we can replace \verb!\doublerulesep! parameter
\end{tblr}
\end{demohigh}
+\subsection{Minimal Strut for Cell Text}
+
The following example shows that we can replace \verb!\arraystretch! parameter with \verb!stretch! key.
\begin{demohigh}
@@ -1345,6 +1414,8 @@ The following example shows that we can replace \verb!\arraystretch! parameter w
\end{tblr}
\end{demohigh}
+\subsection{Rowseps and Colseps for All}
+
The following example uses \verb!rowsep! and \verb!colsep! keys to set padding for all rows and columns.
\nopagebreak
\begin{demohigh}
@@ -1356,6 +1427,8 @@ The following example uses \verb!rowsep! and \verb!colsep! keys to set padding f
\end{tblr}
\end{demohigh}
+\subsection{Hspan and Vspan Algorithms}
+
With \verb!hspan=default! or \verb!hspan=even!,
\verb!tabularray! package will compute column widths from span widths.
But with \verb!hspan=minimal!, it will compute span widths from column widths.
@@ -1419,56 +1492,102 @@ The following examples show the results from different \verb!vspan! values.
\end{tblr}
\end{demohigh}
-\section{Default Specifications}
+\subsection{Use Verbatim Commands}
-\verb!Tabularray! package provides \verb!\SetTblrInner! and \verb!\SetTblrOuter! commands
-for you to change the default inner and outer specifications of tables.
-Inner specifications are all specifications written in the mandatory argument of the \verb!tblr! environment,
-while outer specifications are all specifications written in the optional argument of the \verb!tblr! environment.
-At this time, most of the outer specifications are used for long tables (see Chapter \ref{chap:long}).
+With \verb!verb! key, you can write \verb!\verb! commands in the cell text:
-In the below example, the first line draws all hlines and vlines for all tables created afterwards,
-while the second line makes all tables created afterwards vertically align at bottom.
+\begin{demohigh}
+\begin{tblr}{hlines,verb}
+ 20 & 30 & \verb!\hello{world}!40 \\
+ 50 & \verb!\hello!60 & 70 \\
+\end{tblr}
+\end{demohigh}
-\begin{codehigh}
-\SetTblrInner{hlines,vlines}
-\SetTblrOuter{valign=b}
-\end{codehigh}
+\subsection{Set Baseline for the Table}
-You can define new \verb!tabularray! environments using \verb!\NewTblrEnviron! command:
+With \verb!baseline! key, you can set baseline for the table.
+All possible values for \verb!baseline! are as follows:
+
+\begin{center}
+\begin{tblr}{width=0.6\textwidth,colspec={cX[l]},hlines}
+ \V{t} & align the table at the top \\
+ \V{T} & align the table at the first row \\
+ \V{m} & align the table at the middle, initial value \\
+ \V{b} & align the table at the bottom \\
+ \V{B} & align the table at the last row \\
+ \V{<n>} & align the table at row \V{<n>} (a positive integer) \\
+\end{tblr}
+\end{center}
+
+If there is no hline above the first row, you get the same result with either \V{t} or \V{T}.
+But you get different results if there are one or more hlines above the row:
\begin{demohigh}
-\NewTblrEnviron{mytblr}
-\SetTblrInner[mytblr]{hlines,vlines}
-\SetTblrOuter[mytblr]{valign=b}
-Text \begin{mytblr}{cccc}
- Alpha & Beta & Gamma & Delta \\
- Epsilon & Zeta & Eta & Theta \\
- Iota & Kappa & Lambda & Mu \\
-\end{mytblr} Text
+Baseline\begin{tblr}{hlines,baseline=t}
+ Alpha & Beta & Gamma \\
+ Epsilon & Zeta & Eta \\
+ Iota & Kappa & Lambda \\
+\end{tblr}Baseline
\end{demohigh}
-If not giving the optional argument to \verb!\SetTblrInner! or \verb!\SetTblrOuter! command,
-we set the default specifications for \verb!tblr! environment.
-And different tabularray environments could have different default specifications.
+\begin{demohigh}
+Baseline\begin{tblr}{hlines,baseline=T}
+ Alpha & Beta & Gamma \\
+ Epsilon & Zeta & Eta \\
+ Iota & Kappa & Lambda \\
+\end{tblr}Baseline
+\end{demohigh}
-\section{New Table Commands}
+The differences between \verb!b! and \verb!B! are similar to \verb!t! and \verb!T!.
+In fact, these two values \verb!T! and \verb!B! are better replacements
+for currently obsolete \verb!\firsthline! and \verb!\lasthline! commands.
-All commands which change the specifications of tables \textcolor{red3}{must} be defined with \verb!\NewTableCommand!.
-The following example demonstrates how to define a new table command:
+\section{Outer Specifications}
+
+Except for specifications to be introduced in Chapter \ref{chap:long},
+there are several other outer specifications which are described in Table~\ref{key:outer}.
+
+\begin{spectblr}[
+ caption = {Keys for Outer Specifications},
+ label = {key:outer},
+]{}
+ Key & Description and Values & Initial Value \\
+ \K{baseline} & set the baseline of the table & \V{m} \\
+ \K{long} & change the table to a long table & \None \\
+ \K{tall} & change the table to a tall table & \None \\
+ \K{expand} & you need this key to use verb commands & \None \\
+\end{spectblr}
+
+\subsection{Set Baseline in Another Way}
+
+You may notice that you can write \K{baseline} option as either an inner or an outer specification.
+It is true that either way would do the job. But there is a small difference:
+when \verb!baseline=t/T/m/b/B! is an outer specification,
+you can omit the key name and write the value only.
\begin{demohigh}
-\NewTableCommand\myhline{\hline[0.1em,red5]}
-\begin{tblr}{llll}
-\myhline
- Alpha & Beta & Gamma & Delta \\
- Epsilon & Zeta & Eta & Theta \\
- Iota & Kappa & Lambda & Mu \\
-\myhline
-\end{tblr}
+Baseline\begin{tblr}[m]{hlines}
+ Alpha & Beta & Gamma \\
+ Epsilon & Zeta & Eta \\
+ Iota & Kappa & Lambda \\
+\end{tblr}Baseline
\end{demohigh}
-\section{Expand Macros First}
+\subsection{Long and Tall Tables}
+
+You can change a table to long table by passing outer specification \K{long},
+or change it to tall table by passing outer specification \K{tall} (see Chapter~\ref{chap:long}).
+Therefore the following two tables are the same:
+\begin{codehigh}
+\begin{longtblr}{lcr}
+ Alpha & Beta & Gamma
+\end{longtblr}
+\begin{tblr}[long]{lcr}
+ Alpha & Beta & Gamma
+\end{tblr}
+\end{codehigh}
+
+\subsection{Expand Macros First}
\verb!Tabularray! need to see every \verb!&! and \verb!\\! when splitting the table body
with \verb!l3regex!. And you can not put cell text inside any table command defined with
@@ -1495,17 +1614,61 @@ The macro \underline{can not} be defined with \verb!\NewDocumentCommand! or
\end{tblr}
\end{demohigh}
-With this \verb!expand! option, you can also use \verb!environ! package
-to define a new environment based on \verb!tblr! environment:
+\section{Default Specifications}
+
+\verb!Tabularray! package provides \verb!\SetTblrInner! and \verb!\SetTblrOuter! commands
+for you to change the default inner and outer specifications of tables.
+
+In the below example, the first line draws all hlines and vlines for all tables created afterwards,
+while the second line makes all tables created afterwards vertically align at the last row.
+
+\begin{codehigh}
+\SetTblrInner{hlines,vlines}
+\SetTblrOuter{baseline=B}
+\end{codehigh}
+
+\section{New Tabularray Environments}
+
+You can define new \verb!tabularray! environments using \verb!\NewTblrEnviron! command:
\begin{demohigh}
-\NewEnviron{fancytblr}{
- Before Text
- \begin{tblr}[expand=\BODY]{hlines}
- \BODY
- \end{tblr}
- After Text
-}
+\NewTblrEnviron{mytblr}
+\SetTblrInner[mytblr]{hlines,vlines}
+\SetTblrOuter[mytblr]{baseline=B}
+Text \begin{mytblr}{cccc}
+ Alpha & Beta & Gamma & Delta \\
+ Epsilon & Zeta & Eta & Theta \\
+ Iota & Kappa & Lambda & Mu \\
+\end{mytblr} Text
+\end{demohigh}
+
+If not giving the optional argument to \verb!\SetTblrInner! or \verb!\SetTblrOuter! command,
+we set the default specifications for \verb!tblr! environment.
+And different tabularray environments could have different default specifications.
+
+\section{New General Environments}
+
+With \verb!+b! argument type of \verb!\NewDocumentEnvironment! command,
+you can also define a new general environment based on \verb!tblr! environment
+(note that there is an extra pair of curly braces at the end):
+
+\NewDocumentEnvironment{fancytblr}{+b}{
+ Before Text
+ \begin{tblr}{hlines}
+ #1
+ \end{tblr}
+ After Text
+}{}
+\begin{codehigh}
+\NewDocumentEnvironment{fancytblr}{+b}{
+ Before Text
+ \begin{tblr}{hlines}
+ #1
+ \end{tblr}
+ After Text
+}{}
+\end{codehigh}
+\begin{demohigh}
\begin{fancytblr}
One & Two & Three \\
Four & Five & Six \\
@@ -1513,14 +1676,60 @@ to define a new environment based on \verb!tblr! environment:
\end{fancytblr}
\end{demohigh}
-\section{Use Verbatim Commands}
+\section{New Table Commands}
-With inner specification \verb!verb!, you can write \verb!\verb! commands in the cell text:
+All commands which change the specifications of tables \textcolor{red3}{must} be defined with \verb!\NewTableCommand!.
+The following example demonstrates how to define a new table command:
\begin{demohigh}
-\begin{tblr}{hlines,verb}
- 20 & 30 & \verb!\hello{world}!40 \\
- 50 & \verb!\hello!60 & 70 \\
+\NewTableCommand\myhline{\hline[0.1em,red5]}
+\begin{tblr}{llll}
+\myhline
+ Alpha & Beta & Gamma & Delta \\
+ Epsilon & Zeta & Eta & Theta \\
+ Iota & Kappa & Lambda & Mu \\
+\myhline
+\end{tblr}
+\end{demohigh}
+
+\section{Odd and Even Selectors}
+
+From version 2022A, child selectors \verb!odd! and \verb!even! accept an optional argument,
+in which you can specify the start index and the end index of the children.
+
+\begin{demohigh}
+\begin{tblr}{
+ cell{odd}{1} = {red9},
+ cell{odd[4]}{2} = {green9},
+ cell{odd[3-X]}{3} = {blue9},
+}
+ Head & Head & Head \\
+ Talk A & Place A & Date A \\
+ Talk B & Place B & Date B \\
+ Talk C & Place C & Date C \\
+ Talk D & Place D & Date D \\
+ Talk E & Place E & Date E \\
+ Talk F & Place F & Date F \\
+ Talk G & Place G & Date G \\
+ Talk H & Place H & Date H \\
+\end{tblr}
+\end{demohigh}
+
+\begin{demohigh}
+\begin{tblr}{
+ cell{even}{1} = {yellow9},
+ cell{even[4]}{2} = {cyan9},
+ cell{even[3-X]}{3} = {purple9},
+}
+ Head & Head & Head \\
+ Talk A & Place A & Date A \\
+ Talk B & Place B & Date B \\
+ Talk C & Place C & Date C \\
+ Talk D & Place D & Date D \\
+ Talk E & Place E & Date E \\
+ Talk F & Place F & Date F \\
+ Talk G & Place G & Date G \\
+ Talk H & Place H & Date H \\
\end{tblr}
\end{demohigh}
@@ -1773,7 +1982,7 @@ Alpha & Beta & Gamma \\
As you can see in the above example, the appearance of long tables of \verb!tabularray! package
is similar to that of \verb!threeparttablex! packages.
-We support table footnotes, but not page footnotes in \verb!tabularray! package.
+It supports table footnotes, but not page footnotes.
\newpage
@@ -1837,7 +2046,7 @@ The source code for the above long table is shown below. It is mainly self-expla
\end{longtblr}
\end{codehigh}
-As you can see in the above code, we typeset long tables with \verb!longtblr! environemnt.
+As you can see in the above code, we typeset long tables with \verb!longtblr! environment.
And we can totally separate contents and styles of long tables with \verb!tabularray! package.
Row head and row foot consist of some lines of the table and should appear in every page.
@@ -1885,7 +2094,9 @@ in \verb!longtable!, except for the counter.
The template system for table heads and table foots in \verb!tabularray! is largely inspired
by \verb!beamer!, \verb!caption! and \verb!longtable! packages. For elements in Table \ref{tblr:element},
-you can use \verb!\DefTblrTemplate! to define and modify templates,
+you can use \verb!\DefTblrTemplate!\footnote{From version 2022A,
+\texttt{\string\DefTblrTemplate} has another name \texttt{\string\DeclareTblrTemplate}.}
+to define and modify templates,
and use \verb!\SetTblrTemplate! to choose default templates. In defining templates,
you can include other templates with \verb!\UseTblrTemplate! and \verb!\ExpTblrTemplate! commands.
@@ -1996,7 +2207,7 @@ The \verb!capcont! template will be used in \verb!middlehead! and \verb!lasthead
\UseTblrTemplate{caption-tag}{default}
\UseTblrTemplate{caption-sep}{default}
\UseTblrTemplate{caption-text}{default}
- \UseTblrTemplate{conthead}{default}
+ \UseTblrTemplate{conthead-text}{default}
}
\end{codehigh}
@@ -2066,6 +2277,14 @@ The templates for table heads and foots are defined as including other templates
\end{codehigh}
Note that you can define the same template for multiple elements in \verb!\DefTblrTemplate! command.
+If you only want to show table caption in the first page, you may change the definitions of
+\verb!middlehead! and \verb!lasthead! elements:
+
+\begin{codehigh}
+\DefTblrTemplate{middlehead,lasthead}{default}{
+ \UseTblrTemplate{conthead}{default}
+}
+\end{codehigh}
\section{Change Styles}
@@ -2077,12 +2296,14 @@ All available keys for template elements are described in Table \ref{key:element
remark{Note} = {In most cases, you can omit the underlined key names and write only their values.
The keys \K{halign}, \K{indent} and \K{hang} are only for main templates.}
]{}
- Key Name & Key Description \\
- \underline{\K{fg}} & foreground color \\
- \underline{\K{font}} & font commands \\
- \underline{\K{halign}} & horizontal alignment: \V{l} (left), \V{c} (center), or \V{r} (right) \\
- \K{indent} & parindent value \\
- \K{hang} & hangindent value \\
+ Key Name & Key Description & Initial Value\\
+ \underline{\K{fg}} & foreground color & \None \\
+ \underline{\K{font}} & font commands & \None \\
+ \underline{\K{halign}}
+ & horizontal alignment: \V{l} (left), \V{c} (center), \V{r} (right) or \V{j} (justify)
+ & \V{j} \\
+ \K{indent} & parindent value & \V{0pt} \\
+ \K{hang} & hangindent value & \V{0pt} or \V{0.7em} \\
\end{spectblr}
You may change the styles of elements with \verb!\SetTblrStyle! command:
@@ -2228,7 +2449,7 @@ you can also specify rule width and color in the optional argument of any of the
\end{tblr}
\end{demohigh}
-If you need more than one cmidrules, you can use \verb!\cmidrulemore! command.
+If you need more than one \verb!\cmidrule!s, you can use \verb!\cmidrulemore! command.
\begin{demohigh}
\begin{tblr}{llll}
@@ -2320,6 +2541,9 @@ and the other half to \verb!abovesep! of current row.
\end{booktabs}
\end{demohigh}
+From version 2022A, there is a \verb!longtabs! environment for writing long \verb!booktabs! tables,
+and a \verb!talltabs! environment for writing tall \verb!booktabs! tables.
+
\section{Library \texttt{counter}}
You need to load \verb!counter! library with \verb!\UseTblrLibrary{counter}!,
@@ -2434,23 +2658,93 @@ By default, it uses \verb!\hbox! to measure the sizes.
This causes an error if a cell contains some vertical material, such as lists or display maths.
With \verb!\UseTblrLibrary{varwidth}! in the preamble of the document,
-\verb!tabularray! loads \verb!varwidth! package,
-and adds a new inner specification \verb!measure! for tables.
+\verb!tabularray! will load \verb!varwidth! package,
+and add a new inner specification \verb!measure! for tables.
After setting \verb!measure=vbox!, it will use \verb!\vbox! to measure cell widths.
\begin{demohigh}
-\begin{tblr}{measure=vbox}
-\hline
+\begin{tblr}{hlines,measure=vbox}
Text Text Text Text Text Text Text
\begin{itemize}
\item List List List List List List
\item List List List List List List List
\end{itemize}
Text Text Text Text Text Text Text \\
-\hline
\end{tblr}
\end{demohigh}
+From version 2022A, you can remove extra space above and below lists,
+by adding option \verb!stretch=-1!.
+The following example also needs \verb!enumitem! package and its \verb!nosep! option:
+
+{\centering\begin{tblr}{
+ hlines,vlines,rowspec={Q[l,t]Q[l,b]},
+ measure=vbox,stretch=-1,
+}
+ \begin{itemize}[nosep]
+ \item List List List List List
+ \item List List List List List List
+ \end{itemize} & oooo \\
+ \begin{itemize}[nosep]
+ \item List List List List List
+ \item List List List List List List
+ \end{itemize} & gggg \\
+\end{tblr}\par}
+
+%% BUG: there is extra vertical space at the beginning of the first cell if I use demohigh
+%\begin{demohigh}
+\begin{codehigh}
+\begin{tblr}{
+ hlines,vlines,rowspec={Q[l,t]Q[l,b]},
+ measure=vbox,stretch=-1,
+}
+ \begin{itemize}[nosep]
+ \item List List List List List
+ \item List List List List List List
+ \end{itemize} & oooo \\
+ \begin{itemize}[nosep]
+ \item List List List List List
+ \item List List List List List List
+ \end{itemize} & gggg \\
+\end{tblr}
+\end{codehigh}
+%\end{demohigh}
+
+Note that option \verb!stretch=-1! also removes struts from cells, therefore it may not work well
+in \verb!tabularray! environments with \verb!rowsep=0pt!, such as
+\verb!booktabs!/\verb!longtabs!/\verb!talltabs! environments from \verb!booktabs! library.
+
+\chapter{History and Future}
+
+\section{The Future}
+
+Starting from 2022, except for hotfix releases for critical bugs,
+all new releases will be published only in March, June, September or December.
+You may watch the milestones page for the scheduled dates of upcoming releases
+and their changes:\newline
+\centerline{\url{https://github.com/lvjr/tabularray/milestones}}
+
+To make the upcoming releases more stable, you are very welcome to test the latest package file
+in the repository. To test it, you only need to download the following \verb!tabularray.sty!
+and put it into the folder of your TeX documents:\newline
+\centerline{\url{https://github.com/lvjr/tabularray/raw/main/tabularray.sty}}
+
+\section{The History}
+
+The change log of \verb!tabularray! package will be updated on the wiki page:\newline
+\centerline{\url{https://github.com/lvjr/tabularray/wiki/ChangeLog}}
+
+In version 2022A, there were several breaking changes:
+
+\begin{itemize}[nosep]
+ \item \verb!\multicolumn! command was removed; it is better to use \verb!\SetCell! command.
+ \item \verb!\multirow! command was removed; it is better to use \verb!\SetCell! command.
+ \item \verb!\firsthline! command was removed; it is better to use \verb!baseline=T! option.
+ \item \verb!\lasthline! command was removed; it is better to use \verb!baseline=B! option.
+\end{itemize}
+
+For your old documents, you can still rollback to version 2021 by \verb!\usepackage{tabularray}[=v2021]!.
+
\chapter{The Source Code}
%\CodeHigh{lite}
diff --git a/support/TeX4ht/source/ChangeLog b/support/TeX4ht/source/ChangeLog
index 4bfe3f26b8..cab7d98f06 100644
--- a/support/TeX4ht/source/ChangeLog
+++ b/support/TeX4ht/source/ChangeLog
@@ -1,3 +1,12 @@
+2022-02-28 Michal Hoftich <michal.h21@gmail.com>
+
+ * tex4ht-html4.tex (html4-math.4ht): removed math configuration for
+ the quotation environment, it was probably mistake that it existed.
+ https://github.com/Witiko/markdown/issues/90
+ * tex4ht-html4.tex (html4.4ht, html4-math.4ht): correctly close
+ <div>.
+ https://github.com/Witiko/markdown/issues/90
+
2022-02-22 Michal Hoftich <michal.h21@gmail.com>
* tex4ht-4ht.tex (
diff --git a/systems/doc/pdftex/manual/ChangeLog b/systems/doc/pdftex/manual/ChangeLog
index 8d85229fc3..70cf61a930 100644
--- a/systems/doc/pdftex/manual/ChangeLog
+++ b/systems/doc/pdftex/manual/ChangeLog
@@ -1,3 +1,46 @@
+2022-02-28 Karl Berry <karl@freefriends.org>
+
+ * pdftex-t.tex (ptex_devel): svn://tug.org url.
+
+2021-11-06 Marcel Kr\"uger <tex@2krueger.de>
+
+ * pdftex-t.tex (\showstream): document.
+
+2021-11-06 Marcel Kr\"uger <tex@2krueger.de>
+
+ * pdftex-t.tex: missed bookmarks for \pdfgentounicode and
+ a few other primitives.
+
+2021-11-04 Karl Berry <karl@freefriends.org>
+
+ * pdftex-t.tex: size GFDL for two pages, since it was spilling over.
+ Let first bodyfont size stand.
+ Rearrange some text for new font size.
+
+2021-11-04 Marcel Kr\"uger <tex@2krueger.de>
+
+ * pdftex-t.tex: document structured destinations (\pdfdest struct NNN).
+ Also bump document font size to 11pt.
+
+2021-09-25 Karl Berry <karl@freefriends.org>
+
+ * pdftex-t.tex (\pdfstartlink): organize into lists.
+
+2021-07-25 Karl Berry <karl@freefriends.org>
+
+ * pdftex-t.tex: oops, \partokencontext sorts before \partokenname.
+ * pdftex-t.tex (\partokenname, \partokencontext): document these
+ new primitives.
+
+2021-07-24 Karl Berry <karl@freefriends.org>
+
+ * pdftex-t.tex (Installation): rename this section from "Getting
+ started", and move to the end.
+ (Macro programming, Typesetting, Tracing, \PDFTEX\ execution
+ environment): split "Miscellanous" primitives subsection into these.
+ (Character translation): move to before Abbreviations.
+ No substantive changes to the content in any of this.
+
2021-02-18 Karl Berry <karl@freefriends.org>
* pdftex-t.tex: update for 2021:
diff --git a/systems/doc/pdftex/manual/Makefile b/systems/doc/pdftex/manual/Makefile
index 05c57fc29a..adbb1c7c95 100644
--- a/systems/doc/pdftex/manual/Makefile
+++ b/systems/doc/pdftex/manual/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile 848 2021-02-18 17:49:17Z karl $
+# $Id: Makefile 875 2022-03-01 02:08:10Z karl $
# Makefile for pdfTeX documentation. Public domain.
# Get version we're documenting from the \def in the manual.
@@ -88,7 +88,7 @@ pdftex-syntax.txt: pdftex-t.tex pdftex-syntax.tex syntaxform.awk
# Install from this source directory to TL.
# svn co svn://u:pw@tug.org/texlive/trunk/Master/texmf-dist/doc/pdftex
-tltree = /r/tug/home/texlive/karl/Master/texmf-dist
+tltree = /v/texlive/karl/Master/texmf-dist
dest = $(tltree)/doc/pdftex/manual
INSTALL_DATA = cp -p
@@ -145,3 +145,6 @@ maintainer-clean: clean
rm -f pdftex-w.pdf pdftex-w.txt
clobber allclean realclean distclean: maintainer-clean
+
+spell:
+ myspell pdftex-t.tex
diff --git a/systems/doc/pdftex/manual/pdftex-a.pdf b/systems/doc/pdftex/manual/pdftex-a.pdf
index f5d6372f93..4fa8985b52 100644
--- a/systems/doc/pdftex/manual/pdftex-a.pdf
+++ b/systems/doc/pdftex/manual/pdftex-a.pdf
Binary files differ
diff --git a/systems/doc/pdftex/manual/pdftex-syntax.txt b/systems/doc/pdftex/manual/pdftex-syntax.txt
index 7125d653fd..31b92f29e9 100644
--- a/systems/doc/pdftex/manual/pdftex-syntax.txt
+++ b/systems/doc/pdftex/manual/pdftex-syntax.txt
@@ -44,6 +44,7 @@
\pdfuniqueresname (integer)
\rpcode <font> <8-bit number> (integer)
\shbscode <font> <8-bit number> (integer)
+\showstream (integer)
\stbscode <font> <8-bit number> (integer)
\tagcode <font> <8-bit number> (integer)
\tracinglostchars (integer)
@@ -123,6 +124,7 @@
%% General commands:
\letterspacefont <control sequence> <font> <integer>
+\partokenname <control sequence>
\pdfannot <annot type spec> (h, v, m)
\pdfcatalog <general text> [openaction <action spec>]
\pdfcolorstack <stack number> <stack action> <general text>
@@ -188,11 +190,12 @@
| goto <goto-action spec>
| thread <thread-action spec>
<user-action spec> --> <general text>
-<goto-action spec> --> <numid>
- | [<file spec>] <nameid>
- | [<file spec>] [<page spec>] <general text>
- | <file spec> <nameid> <newwindow spec>
- | <file spec> [<page spec>] <general text> <newwindow spec>
+<goto-action struct spec> --> struct (<numid> | nameid | <general text>)
+<goto-action spec> --> [<goto-action struct spec>] <numid>
+ | [<file spec>] [<goto-action struct spec>] <nameid>
+ | [<file spec>] [<goto-action struct spec>] [<page spec>] <general text>
+ | <file spec> [<goto-action struct spec>] <nameid> <newwindow spec>
+ | <file spec> [<goto-action struct spec>] [<page spec>] <general text> <newwindow spec>
<thread-action spec> --> [<file spec>] <numid>
| [<file spec>] <nameid>
<colorspace spec> --> colorspace <number>
@@ -202,8 +205,9 @@
<numid> --> num <number>
<nameid> --> name <general text>
<newwindow spec> --> newwindow | nonewwindow
-<dest spec> --> <numid> <dest type>
- | <nameid> <dest type>
+<dest spec> --> [struct <number>] \\
+ (<numid> | <nameid>)
+ <dest type>
<dest type> --> xyz [zoom <number>]
| fitr <rule spec>
| fitbh
@@ -226,3 +230,8 @@
<pdfspecial id> --> pdf: | PDF:
<pdfspecial modifier> --> direct:
<stack action> --> set | push | pop | current
+<goto-action spec> --> [<goto-action struct spec>] <numid>
+ | [<file spec>] [<goto-action struct spec>] <nameid>
+ | [<file spec>] [<goto-action struct spec>] [<page spec>] <general text>
+ | <file spec> [<goto-action struct spec>] <nameid> <newwindow spec>
+ | <file spec> [<goto-action struct spec>] [<page spec>] <general text> <newwindow spec>
diff --git a/systems/doc/pdftex/manual/pdftex-t.tex b/systems/doc/pdftex/manual/pdftex-t.tex
index 2f323fedce..02af91417f 100644
--- a/systems/doc/pdftex/manual/pdftex-t.tex
+++ b/systems/doc/pdftex/manual/pdftex-t.tex
@@ -1,7 +1,7 @@
% interface=english modes=letter,screen output=pdftex
% vim: tw=79
-% $Id: pdftex-t.tex 849 2021-02-18 17:55:44Z karl $
+% $Id: pdftex-t.tex 875 2022-03-01 02:08:10Z karl $
% The number of lines on the title page depends on exactly
% what \PDF\ code is generated.
@@ -38,7 +38,7 @@
August\or September\or October\or November\or December\else ERROR\fi}
}
-\svnscan $Id: pdftex-t.tex 849 2021-02-18 17:55:44Z karl $
+\svnscan $Id: pdftex-t.tex 875 2022-03-01 02:08:10Z karl $
\def\currentpdftex{1.40.22}
@@ -73,17 +73,17 @@
\abbreviation [JPEG] {jpeg} {Joint Photographic Experts Group}
\abbreviation [LATEX] {\LaTeX} {general purpose macro package}
\abbreviation [MAC] {Macintosh} {Macintosh hardware platform}
-\abbreviation [MACOSX] {Mac\,OS\,X} {Macintosh operating system version 10}
-\abbreviation [MACTEX] {Mac\TeX} {\MAC\ \WEBC\ distribution}
+\abbreviation [MACOSX] {Mac\,OS\,X} {Macintosh operating system version 10+}
+\abbreviation [MACTEX] {Mac\TeX} {\MAC\ \TEXLIVE\ distribution}
\abbreviation [METAFONT] {\MetaFont} {graphic programming environment, bitmap output}
\abbreviation [METAPOST] {\MetaPost} {graphic programming environment, vector output}
\abbreviation [MIKTEX] {MiK\TeX} {\WIN\ distribution}
\abbreviation [MLTEX] {ml\TeX} {ML\TeX\ extension to \TEX}
\abbreviation [MPTOPDF] {mptopdf} {\METAPOST\ to \PDF\ conversion tool}
\abbreviation [MSDOS] {ms-dos} {Microsoft DOS platform (Intel)}
-\abbreviation [PDFETEX] {pdfe\TeX} {\ETEX\ extension producing \PDF\ output}
-\abbreviation [PDFLATEX] {pdf\LaTeX} {\TEX\ extension producing \PDF\ output (\LATEX\ format loaded)}
-\abbreviation [PDFTEX] {pdf\TeX} {\TEX\ extension producing \PDF\ output}
+\abbreviation [PDFETEX] {pdfe\TeX} {\ETEX\ extension supporting \PDF\ output}
+\abbreviation [PDFLATEX] {pdf\LaTeX} {\LATEX\ format using \PDFTEX, producing \PDF}
+\abbreviation [PDFTEX] {pdf\TeX} {\TEX\ extension supporting \PDF\ output}
\abbreviation [PDF] {pdf} {Portable Document Format}
\abbreviation [PDFA] {pdf/\kern-.16em a} {PDF A/ standards}
\abbreviation [PERL] {Perl} {Perl programming environment}
@@ -100,19 +100,18 @@
\abbreviation [TCX] {tcx} {\TEX\ Character Translation}
\abbreviation [TDS] {tds} {\TEX\ Directory Standard}
\abbreviation [TEXEXEC] {\TeX exec} {\CONTEXT\ command line interface}
-\abbreviation [TEXINFO] {Texinfo} {generate typeset documentation from info pages}
+\abbreviation [TEXINFO] {Texinfo} {\GNU\ documentation format}
\abbreviation [TEXUTIL] {\TeX util} {\CONTEXT\ utility tool}
\abbreviation [TEX] {\TeX} {typographic language and program}
-\abbreviation [TEXLIVE] {\TeX\ Live} {\TeX\ Live distribution (multiple platform)}
+\abbreviation [TEXLIVE] {\TeX\ Live} {\TeX\ Live distribution (cross-platform)}
\abbreviation [TFM] {tfm} {\TEX\ Font Metrics}
\abbreviation [TIF] {tiff} {Tagged Interchange File format}
\abbreviation [TUG] {tug} {\TEX\ Users Group}
\abbreviation [UNIX] {Unix} {Unix platform}
\abbreviation [URL] {url} {Uniform Resource Locator}
-\abbreviation [WEBC] {Web2c} {official multi||platform \WEB\ environment}
+\abbreviation [WEBC] {Web2c} {Implementation framework for \TEX\ and friends}
\abbreviation [WEB] {web} {literate programming environment}
\abbreviation [WIN] {Windows} {Microsoft Windows platform}
-\abbreviation [ZIP] {zip} {compressed file format}
%D It makes sense to predefine the name of the author of \PDFTEX, doesn't it?
@@ -123,7 +122,7 @@
\useURL [ptex_org] [http://www.pdftex.org] % links to ptex_examples
\useURL [ptex_ctan] [https://ctan.org/pkg/pdftex]
-\useURL [ptex_devel] [http://foundry.supelec.fr/projects/pdftex]
+\useURL [ptex_devel] [svn://tug.org/pdftex/branches/stable]
% where bug reports should go:
\useURL [ptex_bugs] [mailto:pdftex@tug.org] [] [pdftex@tug.org]
@@ -142,9 +141,6 @@
\useURL [thanh_truetype_tub] [https://tug.org/TUGboat/tb30-1/tb94thanh.pdf]
\useURL [jbig2enc] [https://github.com/agl/jbig2enc]
-%D The primitive definitions are specified a bit fuzzy using the next set of
-%D commands. Some day I'll write some proper macros to deal with this.
-
% keep next 2 lines as temporary kludge for a while to make \type{} of
% older ConTeXt versions handle these two new primitives; the original
% problem with \type{} is already solved in ConTeXt as of 2006-02-14.
@@ -153,7 +149,8 @@
\def\Syntax #1{\strut\kern-.25em{#1}\kern-.25em\relax}
\def\Next {\crlf\hbox to 2em{}\nobreak}
-\def\Sugar #1{\unskip\unskip\unskip\kern.25em{#1}\kern.25em\ignorespaces}
+\def\Sugar #1{\unskip\unskip\unskip\kern.25em{#1}\kern.25em
+ \penalty0 \ignorespaces} % allow break
%
\def\Lbrace {\Sugar{\tttf\leftargument}}
\def\Literal #1{\Sugar{\type{#1}}}
@@ -337,8 +334,6 @@
\setupfontsynonym [SerifBoldSlanted] [handling=quality]
\setupfontsynonym [SerifBoldItalic] [handling=quality]
- %setupfontsynonym [Mono] [handling=quality] % sloooow
-
% We use adobe metrics instead of urw metrics because tetex only
% ships the former. Beware, these metrics differ!
@@ -347,7 +342,7 @@
\usetypescript [palatino][\defaultencoding]
\setupbodyfont
- [palatino,10pt]
+ [palatino,11pt]
\definefontsynonym[TitleFont][SerifBold]
@@ -364,8 +359,6 @@
\setupfontsynonym [SansBoldSlanted] [handling=quality]
\setupfontsynonym [SansBoldItalic] [handling=quality]
- %setupfontsynonym [Mono] [handling=quality] % sloooow
-
\definetypeface[optima][ss][sans][optima-nova] [default][encoding=\defaultencoding]
\definetypeface[optima][tt][mono][latin-modern][default][encoding=\defaultencoding,rscale=1.1]
@@ -692,7 +685,7 @@ Please send questions or suggestions by email to \from[ptex_bugs].
\subsection{Legal Notice}
-Copyright \copyright\ 1996||2020 \THANH.
+Copyright \copyright\ 1996||2022 \THANH.
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;
@@ -830,496 +823,6 @@ We now turn to specifics of \PDFTEX.
%***********************************************************************
-\section{Getting started}
-
-This section describes the steps needed to get \PDFTEX\ running on
-a system where \PDFTEX\ is not yet installed. Nowadays virtually all
-\TEX\ distributions have \PDFTEX\ as a component, such as \TEXLIVE,
-\MIKTEX, \PROTEXT, and \MACTEX. The ready to run
-\TEXLIVE\ distribution comes with \PDFTEX\ versions for many \UNIX,
-\WIN, and \MACOSX\ systems; more information can be found at
-\hbox{\from[texlive].} There are also \WIN-specific distributions which
-contain \PDFTEX, under \from[win32]: \MIKTEX\ by Christian Schenk, and
-\PROTEXT\ (based on \MIKTEX) by Thomas Feuerstack. When you use any
-of these distributions, you don't need to bother with the \PDFTEX\
-installation procedure in the next sections.
-
-If there is no precompiled \PDFTEX\ binary for your system, or the version
-coming with a distribution is not the current one and you would like to
-try out a fresh \PDFTEX\ immediately, you will need to build \PDFTEX\
-from sources; read on. You should already have a working \TEX\ system,
-\eg\ \TEXLIVE, into which the freshly compiled \PDFTEX\ will
-be integrated. Note that the installation description in this manual
-is \WEBC||specific.
-
-%***********************************************************************
-
-\subsection{Getting sources and binaries}
-
-The latest sources of \PDFTEX\ are distributed for compilation on \UNIX\
-systems (including \GNU/Linux), and \WIN\ systems. The primary home
-page is \from[ptex_org], where you also find bug tracking information.
-Development sources are at \from[ptex_devel]. Precompiled \PDFTEX\
-binaries for various systems might be available in subdirectories below
-\from[ctan_systems], or via \TEX\ distribution web pages.
-
-%***********************************************************************
-
-\subsection{Compiling}
-
-The compilation is expected to be easy on \UNIX||like systems and
-can be described best by example. Assuming that the file \filename
-{pdftex.zip} is downloaded to some working directory, \eg\
-\filename {\$HOME/pdftex}, on a \UNIX\ system the following steps are
-needed to compile \PDFTEX:
-
-\startesctyping
-cd pdftex.../source
-./build-pdftex.sh
-\stopesctyping
-
-The binary \filename{pdftex} is then built in the subdirectory
-\filename{build/texk/web2c}.
-
-The obsolescent binary \filename{pdfetex} is still generated for backward
-compatibility, but since version 1.40 it is just a symbolic link to or copy
-of the file \filename{pdftex}.
-
-As well as the main \filename{pdftex} binary, binaries for the utilities
-\filename{pdftosrc} and \filename{ttf2afm} are generated.
-
-Incidentally, for \PDFTEX\ maintains, a sibling script to
-\type{build-pdftex.sh} is included, namely \type{sync-pdftex.sh}, which
-syncs changes from a \TEXLIVE\ source repository to a \PDFTEX\ source
-repository. Read the script before using it. And don't use it unless
-you understand what you read.
-
-%***********************************************************************
-
-\subsection{Placing files}
-
-The next step is to put the freshly compiled \filename{pdftex},
-\filename{pdftosrc}, and \filename{ttf2afm} binaries into the binary
-directory (\eg\ for a typical \TEXLIVE\ system, and on the appropriate
-platform) \filename{/usr/local/texlive/\rcsyear/bin/x86_64-linux}.
-
-If you're doing this into a live hierarchy, don't forget to do a
-\type{texconfig-sys init} afterwards, so that all formats are
-regenerated system-wide with the fresh \filename{pdftex} binary.
-
-%***********************************************************************
-
-\subsection{Setting search paths}
-
-\WEBC||based programs, including \PDFTEX, use the \WEBC\ run||time
-configuration file called \filename {texmf.cnf}. The location
-of this file is the appropriate position within the \TDS\ tree
-relative to the place of the \PDFTEX\ binary; on a \TEXLIVE\ system,
-\filename{texmf.cnf} is typically located either in the directory
-\filename{texmf-dist/web2c}. The path to
-file \filename{texmf.cnf} can also be set up by the environment variable
-\type{TEXMFCNF}.
-
-The configuration files in the major \TEX\ distributions (such as
-\filename{texmf.cnf} in \TEXLIVE) should already be set up for normal
-use, so you shouldn't need to edit it. You might still like to read it
-to see where the various bits and pieces are going.
-
-\PDFTEX\ uses the search path variables shown in
-\in{table}[tbl:spathvar], among others.
-
-\startbuffer
-\starttabulate[|l|l|]
-\HL
-\NC \bf used for \NC \bf texmf.cnf \NC\NR
-\HL
-\NC output files \NC \type{TEXMFOUTPUT} \NC\NR
-\NC input files, images \NC \type{TEXINPUTS} \NC\NR
-\NC format files \NC \type{TEXFORMATS} \NC\NR
-\NC \TeX\ pool files \NC \type{TEXPOOL} \NC\NR
-\NC encoding files \NC \type{ENCFONTS} \NC\NR
-\NC font map files \NC \type{TEXFONTMAPS} \NC\NR
-\NC \TFM\ files \NC \type{TFMFONTS} \NC\NR
-\NC virtual fonts \NC \type{VFFONTS} \NC\NR
-\NC Type~1 fonts \NC \type{T1FONTS} \NC\NR
-\NC TrueType fonts \NC \type{TTFONTS} \NC\NR
-\NC OpenType fonts \NC \type{OPENTYPEFONTS} \NC\NR
-\NC bitmap fonts \NC \type{PKFONTS} \NC\NR
-\HL
-\stoptabulate
-\stopbuffer
-
-\placetable[here][tbl:spathvar]
- {The principal \WEBC\ variables.}
- {\getbuffer}
-
-\PathDescription {TEXMFOUTPUT} Normally, \PDFTEX\ puts its output files
-in the current directory, overridden by the \type{-output-directory}
-option. If any output file cannot be opened there, it tries to open it
-in the environment variable \type{TEXMFOUTPUT}, if that is set. There is
-no default value for that variable. For example, if \type{TEXMFOUTPUT}
-has the value \type{/tmp}, and you run \type{pdftex paper} when the
-current directory is not writable, \PDFTEX\ attempts to create
-\type{/tmp/paper.log} (and \type{/tmp/paper.pdf}, etc.)
-
-\PathDescription {TEXINPUTS} This variable specifies where \PDFTEX\ finds
-its input files. Image files are considered
-input files and searched for along this path.
-
-\PathDescription {TEXFORMATS} Search path for format (\type{.fmt}) files.
-
-\PathDescription {TEXPOOL} Search path for pool (\type{.pool}) files; no
-longer used, since the pool file (program strings) are compiled into
-the binary.
-
-\PathDescription {ENCFONTS} Search path for encoding (\type{.enc}) files.
-
-\PathDescription {TEXFONTMAPS} Search path for font map (\type{.map}) files.
-
-\PathDescription {TFMFONTS} Search path for font metric (\type{.tfm}) files.
-
-\PathDescription {VFFONTS} Search path for virtual font (\type{.vf})
-files. Virtual fonts are fonts made up of other fonts.
-Because \PDFTEX\ produces the
-final output code, it must consult those files.
-
-\PathDescription {T1FONTS} Search path for Type~1 font files (\type{.pfa}
-and \type{.pfb}). These outline (vector) fonts are to be preferred over
-bitmap \PK\ fonts. In most cases Type~1 fonts are used and this variable
-tells \PDFTEX\ where to find them.
-
-\PathDescription {TTFONTS,\hfil\break \hbox{OPENTYPEFONTS}} Search paths
-for TrueType (\type{.ttf}) and OpenType (\type{.otf}) font files. Like
-Type~1 fonts, TrueType and OpenType fonts are also outlines.
-
-\PathDescription {PKFONTS} Search path for packed (bitmap) font
-(\type{.pk}) files.
-Unfortunately bitmap fonts are still displayed poorly by some \PDF\
-viewers, so when possible one should use outline fonts. When no outline
-is available, \PDFTEX\ tries to locate a suitable \PK\ font (or invoke
-a process that generates it).
-
-\PathDescription{TEXFONTS} Fallback for all the font paths, so that if
-you want to look in a particular directory for fonts on a given run, you
-can set that one variable.
-
-Many more variables may be consulted, and there are many details to
-file name lookups. See the Kpathsea manual (\from [kpathsea]).
-
-%***********************************************************************
-
-\subsection[cfg]{The \PDFTEX\ configuration}
-
-We must keep in mind that, as opposed to \TEX\ with its \DVI\ output,
-the \PDFTEX\ program does not have a separate postprocessing stage to
-transform the \TEX\ input into final \PDF. As a consequence, all data
-needed for building a ready \PDF\ page must be available during the
-\PDFTEX\ run, in particular information on media dimensions and offsets,
-graphics files for embedding, and font information (font files,
-encodings).
-
-When \TEX\ builds a page, it places items relative to the (1in,1in)
-offset from the top left page corner (the \DVI\ reference point).
-Separate \DVI\ postprocessors allow specifying the paper size (\eg\
-\quote {A4} or \quote{letter}), so that this reference point is moved to
-the correct position on the paper, and the text ends up at the right
-place.
-
-In \PDF, the paper dimensions are part of the page definition, and
-\PDFTEX\ therefore requires that they be defined at the beginning of
-the \PDFTEX\ run. As with pages described by \POSTSCRIPT, the \PDF\
-reference point is in the lower||left corner.
-
-Formerly, these dimensions and other \PDFTEX\ parameters were read
-in from a configuration file named \filename{pdftex.cfg}, which had
-a special (non-\TEX) format, at the start of processing. Nowadays such
-a file is ignored by \PDFTEX. Instead, the page dimensions and offsets,
-as well as many other parameters, can be set by \PDFTEX\ primitives
-during the \PDFTEX\ format building process, so that the settings are
-dumped into the fresh format and consequently will be used when \PDFTEX\
-is later called with that format. All settings from the format can
-still be overridden during a \PDFTEX\ run by using the same primitives.
-This new configuration concept is a more unified approach, as it avoids
-the configuration file with a special format.
-
-A list of \PDFTEX\ primitives relevant to setting up the \PDFTEX\ engine
-is given in \in{table}[tbl:configparms]. All primitives are described in
-detail within later sections. \in{Figure}[in:pdftexconfig] shows a recent
-configuration file (\type{pdftexconfig.tex}) in \TEX\ format, using the
-primitives from \in{table}[tbl:configparms], which typically is read
-in during the format building process. It enables \PDF\ output, sets paper
-dimensions and the default pixel density for \PK\ font inclusion. The default
-values are chosen so that \PDFTEX\ often can be used (\eg\ in \type{-ini} mode)
-even without setting any parameters.
-
-\startbuffer
-\starttabulate[|l|l|l|l|l|]
-\HL
-\NC \bf internal name \NC \bf type \NC\bf default\NC\bf comment\NC\NR
-\HL
-\NC \type{\pdfoutput} \NC integer \NC 0 \NC \DVI \NC\NR
-\NC \type{\pdfadjustspacing} \NC integer \NC 0 \NC off \NC\NR
-\NC \type{\pdfcompresslevel} \NC integer \NC 9 \NC best \NC\NR
-\NC \type{\pdfobjcompresslevel} \NC integer \NC 0 \NC no object streams \NC\NR
-\NC \type{\pdfdecimaldigits} \NC integer \NC 4 \NC max. \NC\NR
-\NC \type{\pdfimageresolution} \NC integer \NC 72 \NC dpi \NC\NR
-\NC \type{\pdfpkresolution} \NC integer \NC 0 \NC 72\,dpi \NC\NR
-\NC \type{\pdfpkmode} \NC token reg.\NC empty \NC mode set in \type{mktex.cnf} \NC\NR
-\NC \type{\pdfuniqueresname} \NC integer \NC 0 \NC \NC\NR
-\NC \type{\pdfprotrudechars} \NC integer \NC 0 \NC \NC\NR
-\NC \type{\pdfgentounicode} \NC integer \NC 0 \NC \NC\NR
-\NC \type{\pdfmajorversion} \NC integer \NC 1 \NC output \PDF\ 1.4 by default \NC\NR
-\NC \type{\pdfminorversion} \NC integer \NC 4 \NC \PDF\ 1.4 \NC\NR
-\NC \type{\pdfpagebox} \NC integer \NC 0 \NC \NC\NR
-\NC \type{\pdfforcepagebox} \NC integer \NC 0 \NC \NC\NR
-\NC \type{\pdfinclusionerrorlevel} \NC integer \NC 0 \NC \NC\NR
-%-----------------------------------------------------------------------
-\NC \type{\pdfhorigin} \NC dimension \NC 1\,in \NC \NC\NR
-\NC \type{\pdfvorigin} \NC dimension \NC 1\,in \NC \NC\NR
-\NC \type{\pdfpagewidth} \NC dimension \NC 0\,pt \NC \NC\NR
-\NC \type{\pdfpageheight} \NC dimension \NC 0\,pt \NC \NC\NR
-%\NC \type{\pdffirstlineheight} \NC dimention \NC -1000\,pt \NC \NC\NR
-%\NC \type{\pdflastlinedepth} \NC dimention \NC -1000\,pt \NC \NC\NR
-%\NC \type{\pdfeachlineheight} \NC dimention \NC -1000\,pt \NC \NC\NR
-%\NC \type{\pdfeachlinedepth} \NC dimention \NC -1000\,pt \NC \NC\NR
-\NC \type{\pdflinkmargin} \NC dimension \NC 0\,pt \NC \NC\NR
-\NC \type{\pdfdestmargin} \NC dimension \NC 0\,pt \NC \NC\NR
-\NC \type{\pdfthreadmargin} \NC dimension \NC 0\,pt \NC \NC\NR
-\NC \type{\pdfmapfile} \NC text \NC \filename{pdftex.map} \NC not dumped\NC\NR
-\HL
-\stoptabulate
-\stopbuffer
-
-\placetable[here][tbl:configparms]
- {The set of \PDFTEX\ configuration parameters.}
- {\getbuffer}
-
-\startbuffer
-\tx\setupinterlinespace
-\startframedtext
-\starttyping
-% tex-ini-files 2016-04-15: pdftexconfig.tex
-
-% Load shared (PDF) settings in pdfTeX
-
-% Enable PDF output
-\pdfoutput = 1
-
-% Paper size: dimensions given in absolute terms
-\pdfpageheight = 11 true in
-\pdfpagewidth = 8.5 true in
-
-% Enable PDF 1.5 output and thus more compression
-\pdfminorversion = 5
-\pdfobjcompresslevel = 2
-
-% Low-level settings unlikely ever to need to change
-\pdfcompresslevel = 9
-\pdfdecimaldigits = 3
-\pdfpkresolution = 600
-\pdfhorigin = 1 true in
-\pdfvorigin = 1 true in
-\stoptyping
-\stopframedtext
-\stopbuffer
-
-\placefigure[here][in:pdftexconfig]
- {\PDFTEX\ configuration file for \TEXLIVE\ (\filename{pdftexconfig.tex}).}
- {\getbuffer}
-
-Independent of whether such a configuration file is read or not, the
-first action in a \PDFTEX\ run is that the program reads the global
-\WEBC\ configuration file (\filename{texmf.cnf}), which is common to all
-programs in the \WEBC\ system. This file mainly defines file search
-paths, the memory layout (\eg\ string pool and hash size), and a few
-other general parameters.
-
-%***********************************************************************
-
-\subsection{Creating format files}
-
-\startbuffer
-\tx\setupinterlinespace
-\startframedtext
-\starttyping
-% Thomas Esser, 1998. public domain.
-\input etex.src
-\dump
-\endinput
-\stoptyping
-\stopframedtext
-\stopbuffer
-
-\placefigure[here][in:etexini]
- {File \type{etex.ini} for the plain \ETEX\ format with \DVI\ output.}
- {\getbuffer}
-
-\startbuffer
-\tx\setupinterlinespace
-\startframedtext
-\starttyping
-% Thomas Esser, 1998. public domain.
-% This is used for pdftex and pdfetex, which are now identical: both
-% with e-TeX extensions, both with pdf output.
-\input pdftexconfig.tex
-\input etex.src
-\input pdftexmagfix.tex
-\dump
-\endinput
-\stoptyping
-\stopframedtext
-\stopbuffer
-
-\placefigure[here][in:pdfetexini]
- {File \type{pdfetex.ini} for plain \ETEX\ with \PDF\ output.}
- {\getbuffer}
-
-\startbuffer
-\tx\setupinterlinespace
-\startframedtext
-\starttyping
-% Thomas Esser, 1998. public domain.
-\input pdftexconfig.tex
-\scrollmode
-\input latex.ltx
-\endinput
-\stoptyping
-\stopframedtext
-\stopbuffer
-
-\placefigure[here][in:pdflatexini]
- {File \type{pdflatex.ini} for the \LATEX\ format with \PDF\ output.}
- {\getbuffer}
-
-The \PDFTEX\ engine supports building formats for \DVI\ and \PDF\ output
-in the same way as the classical \TEX\ engine does for \DVI. Format
-generation (and other \type{initex} features) is enabled by the
-\type{-ini} option. The default mode (\DVI\ or \PDF) can be chosen
-either on the command line by setting the option \type{-output-format}
-to \type{dvi} or \type{pdf}, or by setting the \type{\pdfoutput}
-parameter. The format file then inherits this setting, so that a later
-invocation of \PDFTEX\ with this format starts in the preselected mode
-(which still can be overridden). A format file can be read in only by
-the engine that has generated it; a format incompatible with an engine
-leads to a fatal error.
-
-It is customary to package the configuration and macro file input
-into a \type{.ini} file. \Eg, the file \type{etex.ini} in
-\in{figure}[in:etexini] is for generating an \ETEX\ format with \DVI\
-output. It has been traditional for many years to generate
-\type{etex.fmt} with \PDFTEX\ rather than the original \ETEX, because
-\PDFTEX\ contains a few additional programming and other
-non-\PDF-related features on which people have come to rely.
-
-The \type{pdfetex.ini} file \in{figure}[in:etexini] shows the
-corresponding format with \PDF\ output by default; this is what creates
-the format file read when \type{pdftex} is normally invoked.
-
-Finally, \type{pdflatex.ini} \in{figure}[in:pdflatexini] shows how the
-\LATEX\ format with \PDF\ output by default is generated.
-
-The corresponding \PDFTEX\ calls for format generation are:
-
-\starttyping
-pdftex -ini *etex.ini
-pdftex -ini *pdfetex.ini
-pdftex -ini *pdflatex.ini
-\stoptyping
-
-These calls produce format files \filename{etex.fmt},
-\filename{pdfetex.fmt}, and \filename{pdflatex.fmt}, as the default
-format file name is taken from the input file name. You can override
-this with the \type{-jobname} option. The asterisk \type{*} before the
-file name is an unusual flag, only used in \type{-ini} mode, which
-causes the \PDFTEX\ engine to enable \ETEX's features.
-
-Incidentally, as of \PDFTEX\ 1.40.21 (\TEX\ Live 2020), \filename{.fmt}
-files are compressed with \type{zlib}. This makes for a considerable
-savings in space, and consequently in time.
-
-\subsection{Testing the installation}
-
-When everything is set up, you can test the installation. A simple test
-of plain \PDFTEX\ is:
-
-\starttyping
-pdftex story \\end
-\stoptyping
-
-This should typeset the famous one-page short story by A.U. Thor.
-
-A more thorough and descriptive test is the plain \TEX\ test file
-\filename{samplepdf.tex}, available in the distribution in the
-\type{samplepdftex/} directory. Process this file by typing:
-
-\starttyping
-pdftex samplepdf
-\stoptyping
-
-If the installation is ok, this should produce a file called
-\filename{samplepdf.pdf}. The file \filename {samplepdf.tex} is a good
-place to look for examples of how to use \PDFTEX's primitives.
-
-%***********************************************************************
-
-\subsection{Common problems}
-
-The most common problem with installations is that \PDFTEX\ complains
-that something cannot be found. In such cases make sure that
-\type{TEXMFCNF} is set correctly, so \PDFTEX\ can find \filename
-{texmf.cnf}. The next best place to look|/|edit is the file
-\type{texmf.cnf}. When still in deep trouble, set
-\type{KPATHSEA_DEBUG=255} before running \PDFTEX\ or use the option
-\type{-kpathsea-debug 255}. This will cause \PDFTEX\ to write a lot of
-debugging information that can be useful to trace problems. More options
-can be found in the \WEBC\ documentation.
-
-Variables in \filename {texmf.cnf} can be overwritten by environment
-variables. Here are some of the most common problems you can encounter when
-getting started:
-
-\startitemize
-
-\head \type{I can't find the format file `pdftex.fmt'!} \crlf
- \type{I can't find the format file `pdflatex.fmt'!}
-
- The format file is not created (see above how to do that) or
- is not properly placed. Make sure that \type{TEXFORMATS} in
- \filename {texmf.cnf} contains the path to \filename {pdftex.fmt}
- or \filename {pdflatex.fmt}.
-
-\head \type{Fatal format file error; I'm stymied}
-
- This appears \eg\ if you forgot to regenerate the \type{.fmt}
- files after installing a new version of the \PDFTEX\ binary.
- The first line tells by which engine the offending format was generated.
-
-\head \PDFTEX\ cannot find one or more map files (\type{*.map}),
- encoding vectors (\type{*.enc}), virtual fonts, Type~1 fonts,
- TrueType or OpenType fonts, or some image file.
-
- Make sure that the required file exists and the corresponding variable
- in \filename {texmf.cnf} contains a path to the file. See above which
- variables \PDFTEX\ needs apart from the ones \TEX\ uses.
-
- When you have installed new fonts, and your \PDF\ viewer complains
- about missing fonts, you should take a look at the log file produced
- by \PDFTEX. Missing fonts, map files, encoding vectors as well as
- missing characters (glyphs) are reported there.
-
-\stopitemize
-
-Normally the page content takes one object. This means that one seldom
-finds more than a few hundred objects in a simple file. This \PDFTEX\
-manual for instance uses approx.~750 objects. In more complex applications
-this number can grow quite rapidly, especially when one uses a lot of
-widget annotations, shared annotations or other shared things. In any
-case \PDFTEX's internal object table size will automatically grow to the
-required size (the parameter \type{obj_tab_size} for manual control of
-the object table size is now obsolete and ignored).
-
-%***********************************************************************
-
\section{Invoking \PDFTEX}
\PDFTEX\ has many command line options. Except for the simple and
@@ -1364,15 +867,14 @@ here is a verbatim listing of the \type{-}\type{-help} output. All
options can be specified with one or two dashes and unambiguously
abbreviated.
+\begingroup
\startnotmode[screen]
- \switchtobodyfont[9pt] % squeeze everything on one page
+ \switchtobodyfont[10pt] % keep line lengths shorter
\stopnotmode
\typefile{pdftex-help.txt}
-\startnotmode[screen]
- \switchtobodyfont[10pt] % squeeze everything on one page
-\stopnotmode
+\endgroup
%***********************************************************************
@@ -1941,14 +1443,19 @@ new Didot (1\,nd~=~0.375\,mm) and the new Cicero (1\,nc~=~12\,nd)
\Something{general text}
}
-%HE Check:
+\Syntax{
+\Something{goto-action struct spec} \Means %
+ \Literal{struct} (\Something{numid} \Or \Literal{nameid} \Or \Something{general text})
+}
+
+% keep in sync with redundant copy below.
\Syntax{
\Something{goto-action spec} \Means %
- \Something{numid}
- \Or \Next \Optional{\Something{file spec}} \Something{nameid}
- \Or \Next \Optional{\Something{file spec}} \Optional{\Something{page spec}} \Something{general text}
- \Or \Next \Something{file spec} \Something{nameid} \Something{newwindow spec}
- \Or \Next \Something{file spec} \Optional{\Something{page spec}} \Something{general text} \Something{newwindow spec}
+ \Optional{\Something{goto-action struct spec}} \Something{numid}
+ \Or \Next \Optional{\Something{file spec}} \Optional{\Something{goto-action struct spec}} \Something{nameid}
+ \Or \Next \Optional{\Something{file spec}} \Optional{\Something{goto-action struct spec}} \Optional{\Something{page spec}} \Something{general text}
+ \Or \Next \Something{file spec} \Optional{\Something{goto-action struct spec}} \Something{nameid} \Something{newwindow spec}
+ \Or \Next \Something{file spec} \Optional{\Something{goto-action struct spec}} \Optional{\Something{page spec}} \Something{general text} \Something{newwindow spec}
}
\Syntax{
@@ -1999,8 +1506,9 @@ new Didot (1\,nd~=~0.375\,mm) and the new Cicero (1\,nc~=~12\,nd)
\Syntax{
\Something{dest spec} \Means %
- \Something{numid} \Something{dest type}
- \Or \Something{nameid} \Something{dest type}
+ \Optional{\Literal{struct} \Something{number}} \\
+ (\Something{numid} \Or \Something{nameid})
+ \Something{dest type}
}
\Syntax{
@@ -2328,7 +1836,7 @@ the wished true page height.
%***********************************************************************
-\subsection[sec.docinfocatalog]{The document info and catalog}
+\subsection[sec.docinfocatalog]{Document info and catalog}
\pdftexprimitive{\Syntax{\Tex{\pdfinfo} \Something{general text}}}
\bookmark{\tex{pdfinfo}}
@@ -2474,6 +1982,13 @@ example:
} openaction goto page 2 {/Fit}
\stoptyping
+\pdftexprimitive{\Syntax{\Tex{\pdfcreationdate} \Whatever{expandable}}}
+\bookmark{\tex{pdfcreationdate}}
+
+Expands to the date string \PDFTEX\ uses in the info dictionary of the
+document, \eg\ for this file {\tt\pdfcreationdate}. \introduced{1.30.0}
+
+
\pdftexprimitive{\Syntax{\Tex{\pdfnames} \Something{general text}}}
\bookmark{\tex{pdfnames}}
@@ -3040,6 +2555,7 @@ value is \type{no_tag}, \type{1} if \type{lig_tag} is set, \type{2} if
\type{list_tag} is set or \type{4} (not~3) if \type{ext_tag} is set.
\pdftexprimitive{\Syntax{\Tex{\pdfgentounicode} \Whatever{integer}}}
+\bookmark{\tex{pdfgentounicode}}
By default, \PDFTEX\ does not include a \type{/ToUnicode} resource when
including fonts in the output. Such a resource (also called a CMap
@@ -3060,6 +2576,7 @@ table using the following command:
\pdftexprimitive{\Syntax{\Tex{\pdfglyphtounicode} \Something{general text}
\Something{general text}}}
+\bookmark{\tex{pdfglyphtounicode}}
The first argument is the name of a glyph, the second is a string of Unicode
numeric values denoting characters, separated by spaces. For instance:
@@ -3092,6 +2609,7 @@ effect.
\pdftexprimitive{\Syntax{\Tex{\pdfnobuiltintounicode} \Something{font}}}
+\bookmark{\tex{pdfnobuiltintounicode}}
The primary purpose of this command is to prevent \PDFTEX\ from
generating the \type{ToUnicode}/CMap resource for the given font when
@@ -3110,7 +2628,9 @@ Minimal example:
\pdftexprimitive{\Syntax{\Tex{\pdfinterwordspaceon}}}
+\bookmark{\tex{pdfinterwordspaceon}}
\pdftexprimitive{\Syntax{\Tex{\pdfinterwordspaceoff}}}
+\bookmark{\tex{pdfinterwordspaceoff}}
These commands create corresponding whatsit nodes which turn on/off
generation of faked interword spaces in the output. This allows for
@@ -3140,6 +2660,7 @@ Back to text with no interword spaces.
\introduced{1.40.15}
\pdftexprimitive{\Syntax{\Tex{\pdffakespace}}}
+\bookmark{\tex{pdffakespace}}
Insert a faked interword space to the output, regardless of the value of
\type{\pdfinterwordspaceon} and \type{\pdfinterwordspaceoff}. Example:
@@ -3318,6 +2839,14 @@ node is searched at shipout time, \PDFTEX\ will write the object
\Something{object number}
to the \PDF\ output if it has not been written yet.
+\pdftexprimitive{\Syntax{\Tex{\pdfretval} \Whatever{read||only integer}}}
+\bookmark{\tex{pdfretval}}
+
+Set to $-1$ if \type{\pdfobj} ignores an invalid object number. Perhaps
+this will be used to store the error status of other primitives in the
+future.
+
+
%***********************************************************************
\subsection{Page and pages objects}
@@ -3828,7 +3357,11 @@ This primitive appends a whatsit node which establishes a destination
for links and bookmark outlines; the link is identified by either
a number or a symbolic name, and the way the viewer is to display the
page must be specified in \Something{dest type}\unkern, which must be
-one of those mentioned in \in{table}[appearance].
+one of those mentioned in \in{table}[appearance]. If \Literal{struct}
+\Something{number} is used, a structure destination is created instead of a
+regular destination, referring to the structure element defined in object
+\Something{number}. Structure destinations use a separate namespace and
+therefore may have the same identifiers as a regular destination.
\startbuffer
\starttabulate[|l|l|]
@@ -3893,26 +3426,69 @@ is for the sake of speed optimization. The main disadvantage is that these
annotations do {\em not} obey transformations issued by \type
{\pdfliteral}'s.
-The \Something{action spec} specifies the action that should be performed
-when the hyperlink is activated while the \Something{user-action spec}
-performs a user||defined action. A typical use of the latter is to specify
-a \URL, like \typ {/S /URI /URI (https://tug.org/)}, or a named action like
-\typ {/S /Named /N /NextPage}.
-
-A \Something{goto-action spec} performs a GoTo action. Here \Something
-{numid} and \Something{nameid} specify the destination identifier (see
-below). The \Something{page spec} specifies the page number of the
-destination, in this case the zoom factor is given by \Something{general
-text}\unkern. A destination can be performed in another \PDF\ file by
-specifying \Something{file spec}\unkern, in which case
-\Something{newwindow spec} specifies whether the file should be opened
-in a new window. A \Something{file spec} can be either a \type{(string)}
-or a \type{<<dictionary>>}. The default behavior of the
-\Something{newwindow spec} depends on the browser setting.
-
-A \Something{thread-action spec} performs an article thread reading. The
-thread identifier is similar to the destination identifier. A thread can be
-performed in another \PDF\ file by specifying a \Something{file spec}\unkern.
+The \Something{action spec} specifies the action that should be
+performed when the hyperlink is activated, one of (see the syntax
+rules) \Literal{user} \Something{user-action spec},
+\Literal{goto} \Something{goto-action spec},
+\Literal{thread} \Something{thread-action spec}.
+
+\startitemize
+
+\item A \Something{user-action spec} (\type{user {...}}) performs a
+user||defined action. Examples: a \URL, like
+\typ {/S /URI /URI (https://tug.org/)};
+or a named action, like \typ {/S /Named /N /NextPage}.
+
+\item A \Something{goto-action spec} (\type{goto ...}) performs various goto
+actions, and is by far the most complex action. Here is a copy of the
+syntax, for easier reference:
+
+\Syntax{
+\Something{goto-action spec} \Means %
+ \Optional{\Something{goto-action struct spec}} \Something{numid}
+ \Or \Next \Optional{\Something{file spec}} \Optional{\Something{goto-action struct spec}} \Something{nameid}
+ \Or \Next \Optional{\Something{file spec}} \Optional{\Something{goto-action struct spec}} \Optional{\Something{page spec}} \Something{general text}
+ \Or \Next \Something{file spec} \Optional{\Something{goto-action struct spec}} \Something{nameid} \Something{newwindow spec}
+ \Or \Next \Something{file spec} \Optional{\Something{goto-action struct spec}} \Optional{\Something{page spec}} \Something{general text} \Something{newwindow spec}
+}
+
+\startitemize
+
+\item The \Something {numid} and \Something{nameid} alternatives specify a
+destination identifier.
+
+\item The \Something{page spec} alternative specifies a page number for the
+destination. In this case, the zoom factor is given by
+\Something{general text}\unkern.
+
+\item The default behavior of the \Something{newwindow
+spec} depends on the browser setting.
+
+\item A destination in another \PDF\ file can be specified with
+\Something{file spec}\unkern, in which case \Something{newwindow spec}
+specifies whether the file should be opened in a new window. A
+\Something{file spec} can be either a \type{(string)} or a
+\type{<<}\type{dictionary}\type{>>}.
+
+\item If a \Something{goto-action spec} contains a
+\Something{goto-action struct spec}, then a structure destination is
+referenced in addition to the regular destination. The form with
+\Something{general text} is used if and only if a \Something{file spec}
+is present; then the \Something{general text} should expand to a literal
+\PDF\ dictionary describing a structure destination. Otherwise, the
+\Something{numid} or \Something{nameid} directly after the
+\Literal{struct} keyword identify a destination which must have been
+created with \type{\pdfdest} \Literal{struct}\unskip.
+
+\stopitemize
+
+\item A \Something{thread-action spec} (\type{thread ...}) performs
+article thread reading. The thread identifier, \Something{numid} or
+\Something{nameid}, is similar to the destination identifier. A thread
+can be performed in another \PDF\ file by specifying a \Something{file
+spec}\unkern.
+
+\stopitemize
\pdftexprimitive{\Syntax{\Tex{\pdfendlink} \Modelist{h, m}}}
\bookmark{\tex{pdfendlink}}
@@ -3951,7 +3527,9 @@ on every run is just noise, and can be suppressed by setting this
parameter to a positive number. \introduced{1.40.13}
\pdftexprimitive{\Syntax{\Tex{\pdfrunninglinkoff}}}
+\bookmark{\tex{pdfrunninglinkoff}}
\pdftexprimitive{\Syntax{\Tex{\pdfrunninglinkon}}}
+\bookmark{\tex{pdfrunninglinkon}}
These commands create corresponding whatsit nodes which turn off/on
generation of running links. Their typical usage is to turn off
@@ -4380,6 +3958,8 @@ current. \Literal{set} keyword replaces the current value with
\Literal{current} keyword instructs just to use the current stack value
without modifying the stack at all. \introduced{1.40.0}
+%***********************************************************************
+
\subsection{Transformations}
Since the content of \Tex{\pdfliteral} is not interpreted anyhow, any
@@ -4419,7 +3999,9 @@ and end at the same group level. \introduced{1.40.0}
%***********************************************************************
-\subsection{Miscellaneous}
+\subsection{Macro programming}
+
+Expansion-related.
\pdftexprimitive{\Syntax{\tex {expanded} \Something{tokens}
\Whatever{expandable}}}
@@ -4430,6 +4012,7 @@ In contrast to \type{\edef}, macro parameter characters do not need to
be doubled. \type{\protected} macros are not expanded.
\introduced{1.40.20}
+
\pdftexprimitive{\Syntax{\tex {ifincsname} \Whatever{expandable}}}
\bookmark{\tex{ifincsname}}
@@ -4447,25 +4030,137 @@ any other case (redefined, made \type{\undefined}, has never been
primitive) false is returned. \introduced{1.40.0}
-\pdftexprimitive{\Syntax{\Tex{\pdfcreationdate} \Whatever{expandable}}}
-\bookmark{\tex{pdfcreationdate}}
+flapping\pdftexprimitive{\Syntax{\tex{partokencontext} \Something{number}}}
+\bookmark{\tex{partokencontext}}
-Expands to the date string \PDFTEX\ uses in the info dictionary of the
-document, \eg\ for this file {\tt\pdfcreationdate}. \introduced{1.30.0}
+The {\em par-token} (i.e., the token with the name given by
+\type{\partokenname}, or \type{\par} by default; see
+\type{\partokenname}, next) is inserted into the input stream in
+different places, according to the \type{\partokencontext} value. This
+value can be:
+0: {\em par-token} is inserted at empty lines (more exactly, when a
+ token category~5 is seen in state~$N$, reading a line); before
+ \type{\end}, \type{\vskip}, \type{\hrule}, \type{\unvbox}, and
+ \type{\halign}, if \TeX{} is in horizontal mode when those commands
+ are seen; and in various error recovery situations. These are the
+ standard cases, and this is the default value.
-\pdftexprimitive{\Syntax{\tex {pdfdraftmode} \Whatever{integer}}}
-\bookmark{\tex{pdfdraftmode}}
+1: {\em par-token} is inserted as above, and also at the end of
+ \type{\vbox}, \type{\vtop}, and \type{\vcenter}, if \TeX{} is in
+ horizontal mode at the time.
-When set to 1 (or set by the command-line switch \type{-draftmode})
-\PDFTEX\ doesn't write the output \PDF\ file and doesn't actually read any
-images but does everything else (including writing auxiliary files),
-thus speeding up compilations when you know you need an extra run but
-don't care about the output, \eg\ just to get the \BIBTEX\ references
-right. If specified, the parameter must appear before any data is written to the
-\PDF\ output.
+2: {\em par-token} is inserted as above, and also at the end of
+ \type{\insert}, \type{\vadjust}, \type{\output}, \type{\noalign}, and
+ items of \type{\valign}, again if \TeX{} is in horizontal mode at the
+ time.
+
+With the default \type{\partokencontext=0}, \TEX\ behaves in its normal
+way: the situations in cases 1 and 2 are processed by a direct call of
+{\em end-paragraph} routine, with no emitted {\em par-token}.
+
+If \type{\partokencontext=1} then \TeX\ inserts the {\em par-token} in
+additional cases: when vertical boxes are completed but horizontal mode
+is not finished. Since vboxes are not uncommonly inserted directly by
+users, with horizontal mode material, this allows macro programmers to
+control all such boxes being finished by a {\em par-token}. An example:
+
+\starttyping
+\partokenname\_mypar
+\partokencontext=1
+\def\_mypar{Hi there!\endgraf}
+\vbox{Vbox text.}
+\stoptyping
+
+This will output ``\type{Hi there!''}\ after ``\type{Vbox text.}''.
+
+Finally, with \type{\partokencontext=2}, all cases where classical \TeX\
+uses the direct {\em end-paragraph} routine are changed to emit the {\em
+par-token} instead. In contrast to case~1, these commands are rarely
+invoked directly by users with horizontal mode material.
+
+The setting of the register \type{\partokencontext} is local.
+\introduced{1.40.24}
+
+\pdftexprimitive{\Syntax{\tex{partokenname} \Something{control sequence}}}
+\bookmark{\tex{partokenname}}
+
+\TeX{} internally inserts a control sequence, named \type{\par} by
+default, into the input stream at empty lines, the end of vboxes, and
+various other places (see \type{\partokencontext}, above). Let's call this
+control sequence the {\em par-token}.
+
+Executing \type{\partokenname}\Something{control-sequence} changes the
+name of the {\em par-token} from \type{\par} to the given
+\Something{control-sequence}. The setting performed by
+\type{\partokenname} is global.
+
+This makes it possible to release the name \type{\par} to the ``user's
+name space'', i.e., after \type{\partokenname}, users can define and use
+\type{\par} as they wish without changing the behavior of anything
+internal to \TeX{}. For example:
+
+\starttyping
+\catcode`\_=11
+\partokenname\_mypar % use \_mypar at user level
+\let\_mypar=\par % make \_mypar equivalent to built-in \par
+%
+\def\par{some random text} % redefine \par
+%
+Hello world.
+
+Goodbye.
+\end
+\stoptyping
+
+This will not output ``\type{some random text}'' (the definition of
+\type{\par}), due to the \type{\partokenname} setting.
+
+By default, the meaning of the {\em par-token} is to end a paragraph
+(also named as \type{\endgraf} in the plain \TEX\ format). It can be
+changed as usual with, for example, \type{\def}. Naturally, it is the
+control sequence name given to \type{\partokenname} that must be
+redefined. Continuing the previous example (prior to the \type{\end}):
+
+\starttyping
+\def\_mypar{Hi there!\endgraf}
+Paragraph one.
+
+Paragraph two.\let\_mypar=\endgraf
+\stoptyping
+
+This will output ``\type{Hi there!''}\ after ``\type{Paragraph one.}'',
+before ending the paragraph.
+
+Another behavior of the {\em par-token} built into \TEX\ is that macros
+not defined as \type{\long} cause the error ``runaway argument'' if the
+{\em par-token} is scanned as a parameter. After
+\type{\setpartokenname}, it will be the new control sequence name that
+triggers this error, not \type{\par}. For example (still continuing the
+same example):
+
+\starttyping
+\def\amac#1{}
+\amac{long test, no error: \par}
+\amac{long test, gives error: \_mypar}
+\stoptyping
+
+\introduced{1.40.24}
+
+\pdftexprimitive{\Syntax{\tex {pdfprimitive} \Something{control sequence}}}
+\bookmark{\tex{pdfprimitive}}
+
+This command executes the primitive meaning of the following control
+sequence, regardless of whether the control sequence has been redefined
+or made undefined. If the primitive was expandable, \type{\pdfprimitive}
+expands also. On the other hand, if the following control sequence never
+was a primitive, nothing happens and no error is raised. (In some
+versions of \PDFTEX\ prior to 1.40.19, an error was wrongly given.)
\introduced{1.40.0}
+%***********************************************************************
+
+\subsection{Typesetting}
\pdftexprimitive{\Syntax{\Tex{\pdfinsertht} \Something{integer}
\Whatever{expandable}}}
@@ -4495,26 +4190,6 @@ coordinate of the last point marked by \type{\pdfsavepos}. The unit is
Completely analogous to \type{\pdflastxpos}, returning the $y$ coordinate.
-\pdftexprimitive{\Syntax{\tex {pdfprimitive} \Something{control sequence}}}
-\bookmark{\tex{pdfprimitive}}
-
-This command executes the primitive meaning of the following control
-sequence, regardless of whether the control sequence has been redefined
-or made undefined. If the primitive was expandable, \type{\pdfprimitive}
-expands also. On the other hand, if the following control sequence never
-was a primitive, nothing happens and no error is raised. (In some
-versions of \PDFTEX\ prior to 1.40.19, an error was wrongly given.)
-\introduced{1.40.0}
-
-
-\pdftexprimitive{\Syntax{\Tex{\pdfretval} \Whatever{read||only integer}}}
-\bookmark{\tex{pdfretval}}
-
-Set to $-1$ if \type{\pdfobj} ignores an invalid object number. Perhaps
-this will be used to store the error status of other primitives in the
-future.
-
-
\pdftexprimitive{\Syntax{\Tex{\pdfsavepos} \Modelist{h, v, m}}}
\bookmark{\tex{pdfsavepos}}
@@ -4530,38 +4205,6 @@ runs are required to utilize these primitives. Starting with
in \DVI\ mode.
-\pdftexprimitive{\Syntax{\Tex{\pdfshellescape} \Whatever{read||only integer}}}
-\bookmark{\tex{pdfshellescape}}
-
-This primitive is~1 if \type{\write18} is enabled, 2 if its operation is
-restricted to known-safe programs, and 0 otherwise. \introduced{1.30.0}
-
-
-\pdftexprimitive{\Syntax{\Tex{\pdftexbanner} \Whatever{expandable}}}
-\bookmark{\tex{pdftexbanner}}
-
-Returns the \PDFTEX\ banner message, \eg\ for the version used here:
-{\tt \pdftexbanner}. \introduced{1.20a}
-
-
-\pdftexprimitive{\Syntax{\Tex{\pdftexrevision} \Whatever{expandable}}}
-\bookmark{\tex{pdftexrevision}}
-
-\def\versplit#1#2#3{#1.#2#3}
-
-Returns the revision number of \PDFTEX, \eg\ for \PDFTEX\ version
-\expandafter\versplit\the\pdftexversion.\pdftexrevision\ (used to produce
-this document), it returns the number {\tt \pdftexrevision}.
-
-
-\pdftexprimitive{\Syntax{\Tex{\pdftexversion} \Whatever{read||only integer}}}
-\bookmark{\tex{pdftexversion}}
-
-Returns the version of \PDFTEX\ multiplied by 100, \eg\ for \PDFTEX\
-version \expandafter\versplit\the\pdftexversion.\pdftexrevision\ (used to
-produce this document), it returns {\tt \number\pdftexversion}.
-
-
\pdftexprimitive{\Syntax{\Tex{\quitvmode}}}
\bookmark{\tex{quitvmode}}
@@ -4573,6 +4216,28 @@ or may not be desired. \type{\quitvmode} does not expand
\type{\everypar}. \introduced{1.21a}
+\pdftexprimitive{\Syntax{\Tex{\vadjust}
+ \Optional{\Something{pre spec}}
+ \Something{filler}
+ \Lbrace \Something{vertical mode material} \Rbrace
+ \Modelist{h, m}
+}}
+\bookmark{\tex{vadjust}}
+
+The \type{\vadjust} implementation of \PDFTEX\ adds an optional
+qualifier \Something{pre spec}, which is simply the string \type{pre}, to
+the original \TEX\ primitive with the same name. If
+no \type{pre} is given, \type{\vadjust} behaves exactly as the original
+(see {\em The \TEX book}, p.~281): it appends an adjustment item created
+from \Something{vertical mode material} to the current list {\em after}
+the line in which \type{\vadjust} appears. In contrast, with the qualifier
+\type{pre}, the adjustment item is put {\em before} the line in which
+\type{\vadjust pre} appears.
+
+%***********************************************************************
+
+\subsection{Tracing}
+
\pdftexprimitive{\Syntax{\Tex{\tracinglostchars} \Whatever{integer}}}
\bookmark{\tex{tracinglostchars}}
@@ -4658,27 +4323,93 @@ the prefix.
The behavior is the same in all \TeX\ engines except the original \TEX\
and \eTeX, where \type{\tracingstacklevels} remains undefined.
-
\introduced{1.40.22}
+\pdftexprimitive{\Syntax{\Tex{\showstream} \Whatever{integer}}}
+\bookmark{\tex{showstream}}
-\pdftexprimitive{\Syntax{\Tex{\vadjust}
- \Optional{\Something{pre spec}}
- \Something{filler}
- \Lbrace \Something{vertical mode material} \Rbrace
- \Modelist{h, m}
-}}
-\bookmark{\tex{vadjust}}
+If this primitive parameter has a value corresponding to an open output
+stream (which has been opened with \type{\openout}), then any
+\type{\show}, \type{\showthe}, \type{\showbox} or \type{\showlists}
+commands do not write output to the terminal, but instead write to only
+the referenced output stream, as if they were written with
+\type{\immediate\write}.
-The \type{\vadjust} implementation of \PDFTEX\ adds an optional
-qualifier \Something{pre spec}, which is simply the string \type{pre}, to
-the original \TEX\ primitive with the same name. If
-no \type{pre} is given, \type{\vadjust} behaves exactly as the original
-(see {\em The \TEX book}, p.~281): it appends an adjustment item created
-from \Something{vertical mode material} to the current list {\em after}
-the line in which \type{\vadjust} appears. However, with the qualifier
-\type{pre}, the adjustment item is put {\em before} the line in which
-\type{\vadjust pre} appears.
+For example:
+\starttyping
+\newwrite\myoutstream
+\immediate\openout\myoutstream="infofile"
+\showstream=\myoutstream
+% From now on, \show... commands are redirected to "infofile.tex".
+\show\TeX
+%
+\showstream=-1
+% -1 is never a open file and therefore restores
+% normal \show... behavior.
+\immediate\closeout\myoutstream
+\stoptyping
+
+This example would not generate any special output to the terminal or
+log file (except for any logging done by \type{\newwrite}. It writes
+this text to \type{infofile.tex}, including the initial blank line,
+since that is what \type{\show} does:
+
+\starttyping
+
+> \TeX=macro:
+->T\kern -.1667em\lower .5ex\hbox {E}\kern -.125emX
+\stoptyping
+
+The behavior is the same in all \TeX\ engines except the original \TEX\
+and \eTeX, where \type{\showstream} remains undefined. \introduced{1.40.24}
+
+%***********************************************************************
+
+\subsection{\PDFTEX\ execution environment}
+
+\pdftexprimitive{\Syntax{\tex {pdfdraftmode} \Whatever{integer}}}
+\bookmark{\tex{pdfdraftmode}}
+
+When set to 1 (or set by the command-line switch \type{-draftmode})
+\PDFTEX\ doesn't write the output \PDF\ file and doesn't actually read any
+images but does everything else (including writing auxiliary files),
+thus speeding up compilations when you know you need an extra run but
+don't care about the output, \eg\ just to get the \BIBTEX\ references
+right. If specified, the parameter must appear before any data is
+written to the \PDF\ output.
+\introduced{1.40.0}
+
+
+\pdftexprimitive{\Syntax{\Tex{\pdfshellescape} \Whatever{read||only integer}}}
+\bookmark{\tex{pdfshellescape}}
+
+This primitive is~1 if \type{\write18} is enabled, 2 if its operation is
+restricted to known-safe programs, and 0 otherwise. \introduced{1.30.0}
+
+
+\pdftexprimitive{\Syntax{\Tex{\pdftexbanner} \Whatever{expandable}}}
+\bookmark{\tex{pdftexbanner}}
+
+Returns the \PDFTEX\ banner message, \eg\ for the version used here:
+{\tt \pdftexbanner}. \introduced{1.20a}
+
+
+\pdftexprimitive{\Syntax{\Tex{\pdftexrevision} \Whatever{expandable}}}
+\bookmark{\tex{pdftexrevision}}
+
+\def\versplit#1#2#3{#1.#2#3}
+
+Returns the revision number of \PDFTEX, \eg\ for \PDFTEX\ version
+\expandafter\versplit\the\pdftexversion.\pdftexrevision\ (used to produce
+this document), it returns the number {\tt \pdftexrevision}.
+
+
+\pdftexprimitive{\Syntax{\Tex{\pdftexversion} \Whatever{read||only integer}}}
+\bookmark{\tex{pdftexversion}}
+
+Returns the version of \PDFTEX\ multiplied by 100, \eg\ for \PDFTEX\
+version \expandafter\versplit\the\pdftexversion.\pdftexrevision\ (used to
+produce this document), it returns {\tt \number\pdftexversion}.
%***********************************************************************
@@ -4781,6 +4512,61 @@ lacks any programming language commands, and cannot deal with arbitrary
%***********************************************************************
+\section[sec.addpdfkeys]{Additional \PDF\ keys}
+
+{\em This section is based on the manual on keys written by Martin
+Schr\"oder, one of the maintainers of \PDFTEX.}
+
+A \PDF\ document should contain only the structures and attributes defined
+in the \PDF\ specification. However, the specification allows applications
+to insert additional keys, provided they follow certain rules.
+
+The most important rule is that developers have to register with Adobe
+prefixes for the keys they want to insert. Hans Hagen has registered the
+prefix \type{PTEX} for \PDFTEX.
+
+\PDFTEX\ generates an XObject for every included \PDF. The dictionary of
+this object contains these additional keys:
+
+\starttabulate[|lT|l|p|]
+\HL
+\NC \bf key \NC \bf type \NC meaning \NC \NR
+\HL
+\NC PTEX.FileName \NC string \NC The name of the included file as seen by
+ \PDFTEX. \NC \NR
+\NC PTEX.InfoDict \NC dictionary \NC The document information dictionary of the included
+ \PDF\ (an indirect object). \NC \NR
+\NC PTEX.PageNumber \NC integer \NC The page number of the included file. \NC \NR
+\HL
+\stoptabulate
+
+The \PDFReference\ says: \quotation {Although viewer applications can
+store custom metadata in the document information dictionary, it is
+inappropriate to store private content or structural information there;
+such information should be stored in the document catalog instead.}
+
+Although it would seem more natural to put this information in the
+document information dictionary, we have to obey the rules laid down in
+the \PDFReference. The following key ends up in the document catalog.
+
+\starttabulate[|lT|l|p|]
+\HL
+\NC \bf key \NC \bf type \NC meaning \NC \NR
+\HL
+\NC PTEX.Fullbanner \NC string \NC The full version of the \pt binary that
+produced the file as displayed by {\tt pdftex \hbox{-{}-version}}, \eg\
+{\tt\pdftexbanner}. This is necessary because the string in the
+\type{Producer} key in the info dictionary is rather short,
+namely {\tt pdfTeX-\currentpdftex}. \NC \NR
+\HL
+\stoptabulate
+
+Any or all of these keys can be suppressed with the
+\type{\pdfsuppressptexinfo} primitive, described in
+\in{section}[sec.docinfocatalog].
+
+%***********************************************************************
+
\section{Character translation}
Characters that are input to \PDFTEX\ are subject to optional
@@ -4826,21 +4612,506 @@ manual.
%***********************************************************************
+\section{Installation}
+
+This section describes the steps needed to get \PDFTEX\ running on
+a system where \PDFTEX\ is not yet installed. Nowadays essentially all
+\TEX\ distributions include \PDFTEX\ already as a component, such as \TEXLIVE,
+\MIKTEX, \PROTEXT, and \MACTEX. For example, the
+\TEXLIVE\ distribution comes with \PDFTEX\ versions for many \UNIX,
+\WIN, and \MACOSX\ systems; more information can be found at
+\hbox{\from[texlive].} There are also \WIN-specific distributions which
+contain \PDFTEX, under \from[win32]: \MIKTEX\ by Christian Schenk, and
+\PROTEXT\ (based on \MIKTEX) by Thomas Feuerstack. When you use any
+of these distributions, you don't need to bother with the \PDFTEX\
+installation procedure in the next sections.
+
+If there is no precompiled \PDFTEX\ binary for your system, or the version
+coming with a distribution is not the current one and you would like to
+try out a fresh \PDFTEX\ immediately, you will need to build \PDFTEX\
+from sources; read on. You should already have a working \TEX\ system,
+\eg\ \TEXLIVE, into which the freshly compiled \PDFTEX\ will
+be integrated. Note that the installation description in this manual
+is \WEBC||specific.
+
+\subsection{Getting sources and binaries}
+
+The latest sources of \PDFTEX\ are distributed for compilation on \UNIX\
+systems (including \GNU/Linux), and \WIN\ systems. The primary home
+page is \from[ptex_org], where you also find bug tracking information.
+Development sources are at \from[ptex_devel]. Precompiled \PDFTEX\
+binaries for various systems might be available in subdirectories below
+\from[ctan_systems], or via \TEX\ distribution web pages.
+
+%***********************************************************************
+
+\subsection{Compiling}
+
+The compilation is expected to be easy on \UNIX||like systems and
+can be described best by example. Assuming that the file \filename
+{pdftex.zip} is downloaded to some working directory, \eg\
+\filename {\$HOME/pdftex}, on a \UNIX\ system the following steps are
+needed to compile \PDFTEX:
+
+\startesctyping
+cd pdftex.../source
+./build-pdftex.sh
+\stopesctyping
+
+The binary \filename{pdftex} is then built in the subdirectory
+\filename{build/texk/web2c}.
+
+The obsolescent binary \filename{pdfetex} is still generated for backward
+compatibility, but since version 1.40 it is just a symbolic link to or copy
+of the file \filename{pdftex}.
+
+As well as the main \filename{pdftex} binary, binaries for the utilities
+\filename{pdftosrc} and \filename{ttf2afm} are generated.
+
+Incidentally, for \PDFTEX\ maintains, a sibling script to
+\type{build-pdftex.sh} is included, namely \type{sync-pdftex.sh}, which
+syncs changes from a \TEXLIVE\ source repository to a \PDFTEX\ source
+repository. Read the script before using it. And don't use it unless
+you understand what you read.
+
+%***********************************************************************
+
+\subsection{Placing files}
+
+The next step is to put the freshly compiled \filename{pdftex},
+\filename{pdftosrc}, and \filename{ttf2afm} binaries into the binary
+directory (\eg\ for a typical \TEXLIVE\ system, and on the appropriate
+platform) \filename{/usr/local/texlive/\rcsyear/bin/x86_64-linux}.
+
+If you're doing this into a live hierarchy, don't forget to do a
+\type{texconfig-sys init} afterwards, so that all formats are
+regenerated system-wide with the fresh \filename{pdftex} binary.
+
+%***********************************************************************
+
+\subsection{Setting search paths}
+
+\WEBC||based programs, including \PDFTEX, use the \WEBC\ run||time
+configuration file called \filename {texmf.cnf}. The location
+of this file is the appropriate position within the \TDS\ tree
+relative to the place of the \PDFTEX\ binary; on a \TEXLIVE\ system,
+\filename{texmf.cnf} is typically located either in the directory
+\filename{texmf-dist/web2c}. The path to
+file \filename{texmf.cnf} can also be set up by the environment variable
+\type{TEXMFCNF}.
+
+The configuration files in the major \TEX\ distributions (such as
+\filename{texmf.cnf} in \TEXLIVE) should already be set up for normal
+use, so you shouldn't need to edit it. You might still like to read it
+to see where the various bits and pieces are going.
+
+\PDFTEX\ uses the search path variables shown in
+\in{table}[tbl:spathvar], among others.
+
+\startbuffer
+\starttabulate[|l|l|]
+\HL
+\NC \bf used for \NC \bf texmf.cnf \NC\NR
+\HL
+\NC output files \NC \type{TEXMFOUTPUT} \NC\NR
+\NC input files, images \NC \type{TEXINPUTS} \NC\NR
+\NC format files \NC \type{TEXFORMATS} \NC\NR
+\NC \TeX\ pool files \NC \type{TEXPOOL} \NC\NR
+\NC encoding files \NC \type{ENCFONTS} \NC\NR
+\NC font map files \NC \type{TEXFONTMAPS} \NC\NR
+\NC \TFM\ files \NC \type{TFMFONTS} \NC\NR
+\NC virtual fonts \NC \type{VFFONTS} \NC\NR
+\NC Type~1 fonts \NC \type{T1FONTS} \NC\NR
+\NC TrueType fonts \NC \type{TTFONTS} \NC\NR
+\NC OpenType fonts \NC \type{OPENTYPEFONTS} \NC\NR
+\NC bitmap fonts \NC \type{PKFONTS} \NC\NR
+\HL
+\stoptabulate
+\stopbuffer
+
+\placetable[here][tbl:spathvar]
+ {The principal \WEBC\ variables.}
+ {\getbuffer}
+
+\PathDescription {TEXMFOUTPUT} Normally, \PDFTEX\ puts its output files
+in the current directory, overridden by the \type{-output-directory}
+option. If any output file cannot be opened there, it tries to open it
+in the environment variable \type{TEXMFOUTPUT}, if that is set. There is
+no default value for that variable. For example, if \type{TEXMFOUTPUT}
+has the value \type{/tmp}, and you run \type{pdftex paper} when the
+current directory is not writable, \PDFTEX\ attempts to create
+\type{/tmp/paper.log} (and \type{/tmp/paper.pdf}, etc.)
+
+\PathDescription {TEXINPUTS} This variable specifies where \PDFTEX\ finds
+its input files. Image files are considered
+input files and searched for along this path.
+
+\PathDescription {TEXFORMATS} Search path for format (\type{.fmt}) files.
+
+\PathDescription {TEXPOOL} Search path for pool (\type{.pool}) files; no
+longer used, since the pool file (program strings) are compiled into
+the binary.
+
+\PathDescription {ENCFONTS} Search path for encoding (\type{.enc}) files.
+
+\PathDescription {TEXFONTMAPS} Search path for font map (\type{.map}) files.
+
+\PathDescription {TFMFONTS} Search path for font metric (\type{.tfm}) files.
+
+\PathDescription {VFFONTS} Search path for virtual font (\type{.vf})
+files. Virtual fonts are fonts made up of other fonts.
+Because \PDFTEX\ produces the
+final output code, it must consult those files.
+
+\PathDescription {T1FONTS} Search path for Type~1 font files (\type{.pfa}
+and \type{.pfb}). These outline (vector) fonts are to be preferred over
+bitmap \PK\ fonts. In most cases Type~1 fonts are used and this variable
+tells \PDFTEX\ where to find them.
+
+\PathDescription {TTFONTS,\hfil\break \hbox{OPENTYPEFONTS}} Search paths
+for TrueType (\type{.ttf}) and OpenType (\type{.otf}) font files. Like
+Type~1 fonts, TrueType and OpenType fonts are also outlines.
+
+\PathDescription {PKFONTS} Search path for packed (bitmap) font
+(\type{.pk}) files.
+Unfortunately bitmap fonts are still displayed poorly by some \PDF\
+viewers, so when possible one should use outline fonts. When no outline
+is available, \PDFTEX\ tries to locate a suitable \PK\ font (or invoke
+a process that generates it).
+
+\PathDescription{TEXFONTS} Fallback for all the font paths, so that if
+you want to look in a particular directory for fonts on a given run, you
+can set that one variable.
+
+Many more variables may be consulted, and there are many details to
+file name lookups. See the Kpathsea manual (\from [kpathsea]).
+
+%***********************************************************************
+
+\subsection[cfg]{The \PDFTEX\ configuration}
+
+We must keep in mind that, as opposed to \TEX\ with its \DVI\ output,
+the \PDFTEX\ program does not have a separate postprocessing stage to
+transform the \TEX\ input into final \PDF. As a consequence, all data
+needed for building a ready \PDF\ page must be available during the
+\PDFTEX\ run, in particular information on media dimensions and offsets,
+graphics files for embedding, and font information (font files,
+encodings).
+
+When \TEX\ builds a page, it places items relative to the (1in,1in)
+offset from the top left page corner (the \DVI\ reference point).
+Separate \DVI\ postprocessors allow specifying the paper size (\eg\
+\quote {A4} or \quote{letter}), so that this reference point is moved to
+the correct position on the paper, and the text ends up at the right
+place.
+
+In \PDF, the paper dimensions are part of the page definition, and
+\PDFTEX\ therefore requires that they be defined at the beginning of
+the \PDFTEX\ run. As with pages described by \POSTSCRIPT, the \PDF\
+reference point is in the lower||left corner.
+
+Formerly, these dimensions and other \PDFTEX\ parameters were read
+in from a configuration file named \filename{pdftex.cfg}, which had
+a special (non-\TEX) format, at the start of processing. Nowadays such
+a file is ignored by \PDFTEX. Instead, the page dimensions and offsets,
+as well as many other parameters, can be set by \PDFTEX\ primitives
+during the \PDFTEX\ format building process, so that the settings are
+dumped into the fresh format and consequently will be used when \PDFTEX\
+is later called with that format. All settings from the format can
+still be overridden during a \PDFTEX\ run by using the same primitives.
+This new configuration concept is a more unified approach, as it avoids
+the configuration file with a special format.
+
+A list of \PDFTEX\ primitives relevant to setting up the \PDFTEX\ engine
+is given in \in{table}[tbl:configparms]. All primitives are described in
+detail within later sections. \in{Figure}[in:pdftexconfig] shows a recent
+configuration file (\type{pdftexconfig.tex}) in \TEX\ format, using the
+primitives from \in{table}[tbl:configparms], which typically is read
+in during the format building process. It enables \PDF\ output, sets paper
+dimensions and the default pixel density for \PK\ font inclusion. The default
+values are chosen so that \PDFTEX\ often can be used (\eg\ in \type{-ini} mode)
+even without setting any parameters.
+
+\startbuffer
+\starttabulate[|l|l|l|l|l|]
+\HL
+\NC \bf internal name \NC \bf type \NC\bf default\NC\bf comment\NC\NR
+\HL
+\NC \type{\pdfoutput} \NC integer \NC 0 \NC \DVI \NC\NR
+\NC \type{\pdfadjustspacing} \NC integer \NC 0 \NC off \NC\NR
+\NC \type{\pdfcompresslevel} \NC integer \NC 9 \NC best \NC\NR
+\NC \type{\pdfobjcompresslevel} \NC integer \NC 0 \NC no object streams \NC\NR
+\NC \type{\pdfdecimaldigits} \NC integer \NC 4 \NC max. \NC\NR
+\NC \type{\pdfimageresolution} \NC integer \NC 72 \NC dpi \NC\NR
+\NC \type{\pdfpkresolution} \NC integer \NC 0 \NC 72\,dpi \NC\NR
+\NC \type{\pdfpkmode} \NC token reg.\NC empty \NC mode set in \type{mktex.cnf} \NC\NR
+\NC \type{\pdfuniqueresname} \NC integer \NC 0 \NC \NC\NR
+\NC \type{\pdfprotrudechars} \NC integer \NC 0 \NC \NC\NR
+\NC \type{\pdfgentounicode} \NC integer \NC 0 \NC \NC\NR
+\NC \type{\pdfmajorversion} \NC integer \NC 1 \NC output \PDF\ 1.4 by default \NC\NR
+\NC \type{\pdfminorversion} \NC integer \NC 4 \NC \PDF\ 1.4 \NC\NR
+\NC \type{\pdfpagebox} \NC integer \NC 0 \NC \NC\NR
+\NC \type{\pdfforcepagebox} \NC integer \NC 0 \NC \NC\NR
+\NC \type{\pdfinclusionerrorlevel} \NC integer \NC 0 \NC \NC\NR
+%-----------------------------------------------------------------------
+\NC \type{\pdfhorigin} \NC dimension \NC 1\,in \NC \NC\NR
+\NC \type{\pdfvorigin} \NC dimension \NC 1\,in \NC \NC\NR
+\NC \type{\pdfpagewidth} \NC dimension \NC 0\,pt \NC \NC\NR
+\NC \type{\pdfpageheight} \NC dimension \NC 0\,pt \NC \NC\NR
+%\NC \type{\pdffirstlineheight} \NC dimention \NC -1000\,pt \NC \NC\NR
+%\NC \type{\pdflastlinedepth} \NC dimention \NC -1000\,pt \NC \NC\NR
+%\NC \type{\pdfeachlineheight} \NC dimention \NC -1000\,pt \NC \NC\NR
+%\NC \type{\pdfeachlinedepth} \NC dimention \NC -1000\,pt \NC \NC\NR
+\NC \type{\pdflinkmargin} \NC dimension \NC 0\,pt \NC \NC\NR
+\NC \type{\pdfdestmargin} \NC dimension \NC 0\,pt \NC \NC\NR
+\NC \type{\pdfthreadmargin} \NC dimension \NC 0\,pt \NC \NC\NR
+\NC \type{\pdfmapfile} \NC text \NC \filename{pdftex.map} \NC not dumped\NC\NR
+\HL
+\stoptabulate
+\stopbuffer
+
+\placetable[here][tbl:configparms]
+ {The set of \PDFTEX\ configuration parameters.}
+ {\getbuffer}
+
+\startbuffer
+\tx\setupinterlinespace
+\startframedtext
+\starttyping
+% tex-ini-files 2016-04-15: pdftexconfig.tex
+
+% Load shared (PDF) settings in pdfTeX
+
+% Enable PDF output
+\pdfoutput = 1
+
+% Paper size: dimensions given in absolute terms
+\pdfpageheight = 11 true in
+\pdfpagewidth = 8.5 true in
+
+% Enable PDF 1.5 output and thus more compression
+\pdfminorversion = 5
+\pdfobjcompresslevel = 2
+
+% Low-level settings unlikely ever to need to change
+\pdfcompresslevel = 9
+\pdfdecimaldigits = 3
+\pdfpkresolution = 600
+\pdfhorigin = 1 true in
+\pdfvorigin = 1 true in
+\stoptyping
+\stopframedtext
+\stopbuffer
+
+\placefigure[here][in:pdftexconfig]
+ {\PDFTEX\ configuration file for \TEXLIVE\ (\filename{pdftexconfig.tex}).}
+ {\getbuffer}
+
+Independent of whether such a configuration file is read or not, the
+first action in a \PDFTEX\ run is that the program reads the global
+\WEBC\ configuration file (\filename{texmf.cnf}), which is common to all
+programs in the \WEBC\ system. This file mainly defines file search
+paths, the memory layout (\eg\ string pool and hash size), and a few
+other general parameters.
+
+%***********************************************************************
+
+\subsection{Creating format files}
+
+\startbuffer
+\tx\setupinterlinespace
+\startframedtext
+\starttyping
+% Thomas Esser, 1998. public domain.
+\input etex.src
+\dump
+\endinput
+\stoptyping
+\stopframedtext
+\stopbuffer
+
+\placefigure[here][in:etexini]
+ {File \type{etex.ini} for the plain \ETEX\ format with \DVI\ output.}
+ {\getbuffer}
+
+\startbuffer
+\tx\setupinterlinespace
+\startframedtext
+\starttyping
+% Thomas Esser, 1998. public domain.
+% This is used for pdftex and pdfetex, which are now identical:
+% both with e-TeX extensions, both with pdf (and dvi) output.
+\input pdftexconfig.tex
+\input etex.src
+\input pdftexmagfix.tex
+\dump
+\endinput
+\stoptyping
+\stopframedtext
+\stopbuffer
+
+\placefigure[here][in:pdfetexini]
+ {File \type{pdfetex.ini} for plain \ETEX\ with \PDF\ output.}
+ {\getbuffer}
+
+\startbuffer
+\tx\setupinterlinespace
+\startframedtext
+\starttyping
+% Thomas Esser, 1998. public domain.
+\input pdftexconfig.tex
+\scrollmode
+\input latex.ltx
+\endinput
+\stoptyping
+\stopframedtext
+\stopbuffer
+
+\placefigure[here][in:pdflatexini]
+ {File \type{pdflatex.ini} for the \LATEX\ format with \PDF\ output.}
+ {\getbuffer}
+
+The \PDFTEX\ engine supports building formats for \DVI\ and \PDF\ output
+in the same way as the classical \TEX\ engine does for \DVI. Format
+generation (and other \type{initex} features) is enabled by the
+\type{-ini} option. The default mode (\DVI\ or \PDF) can be chosen
+either on the command line by setting the option \type{-output-format}
+to \type{dvi} or \type{pdf}, or by setting the \type{\pdfoutput}
+parameter. The format file then inherits this setting, so that a later
+invocation of \PDFTEX\ with this format starts in the preselected mode
+(which still can be overridden). A format file can be read in only by
+the engine that has generated it; a format incompatible with an engine
+leads to a fatal error.
+
+It is customary to package the configuration and macro file input
+into a \type{.ini} file. \Eg, the file \type{etex.ini} in
+\in{figure}[in:etexini] is for generating an \ETEX\ format with \DVI\
+output. It has been traditional for many years to generate
+\type{etex.fmt} with \PDFTEX\ rather than the original \ETEX, because
+\PDFTEX\ contains a few additional programming and other
+non-\PDF-related features on which people have come to rely.
+
+The \type{pdfetex.ini} file \in{figure}[in:etexini] shows the
+corresponding format with \PDF\ output by default; this is what creates
+the format file read when \type{pdftex} is normally invoked.
+
+Finally, \type{pdflatex.ini} \in{figure}[in:pdflatexini] shows how the
+\LATEX\ format with \PDF\ output by default is generated.
+
+The corresponding \PDFTEX\ calls for format generation are:
+
+\starttyping
+pdftex -ini *etex.ini
+pdftex -ini *pdfetex.ini
+pdftex -ini *pdflatex.ini
+\stoptyping
+
+These calls produce format files \filename{etex.fmt},
+\filename{pdfetex.fmt}, and \filename{pdflatex.fmt}, as the default
+format file name is taken from the input file name. You can override
+this with the \type{-jobname} option. The asterisk \type{*} before the
+file name is an unusual flag, only used in \type{-ini} mode, which
+causes the \PDFTEX\ engine to enable \ETEX's features.
+
+Incidentally, as of \PDFTEX\ 1.40.21 (\TEX\ Live 2020), \filename{.fmt}
+files are compressed with \type{zlib}. This makes for a considerable
+savings in space, and consequently in time.
+
+\subsection{Testing the installation}
+
+When everything is set up, you can test the installation. A simple test
+of plain \PDFTEX\ is:
+
+\starttyping
+pdftex story \\end
+\stoptyping
+
+This should typeset the famous one-page short story by A.U. Thor.
+
+A more thorough and descriptive test is the plain \TEX\ test file
+\filename{samplepdf.tex}, available in the distribution in the
+\type{samplepdftex/} directory. Process this file by typing:
+
+\starttyping
+pdftex samplepdf
+\stoptyping
+
+If the installation is ok, this should produce a file called
+\filename{samplepdf.pdf}. The file \filename {samplepdf.tex} is a good
+place to look for examples of how to use \PDFTEX's primitives.
+
+%***********************************************************************
+
+\subsection{Common problems}
+
+The most common problem with installations is that \PDFTEX\ complains
+that something cannot be found. In such cases make sure that
+\type{TEXMFCNF} is set correctly, so \PDFTEX\ can find \filename
+{texmf.cnf}. The next best place to look|/|edit is the file
+\type{texmf.cnf}. When still in deep trouble, set
+\type{KPATHSEA_DEBUG=255} before running \PDFTEX\ or use the option
+\type{-kpathsea-debug 255}. This will cause \PDFTEX\ to write a lot of
+debugging information that can be useful to trace problems. More options
+can be found in the \WEBC\ documentation.
+
+Variables in \filename {texmf.cnf} can be overwritten by environment
+variables. Here are some of the most common problems you can encounter when
+getting started:
+
+\startitemize
+
+\head \type{I can't find the format file `pdftex.fmt'!} \crlf
+ \type{I can't find the format file `pdflatex.fmt'!}
+
+ The format file is not created (see above how to do that) or
+ is not properly placed. Make sure that \type{TEXFORMATS} in
+ \filename {texmf.cnf} contains the path to \filename {pdftex.fmt}
+ or \filename {pdflatex.fmt}.
+
+\head \type{Fatal format file error; I'm stymied}
+
+ This appears \eg\ if you forgot to regenerate the \type{.fmt}
+ files after installing a new version of the \PDFTEX\ binary.
+ The first line tells by which engine the offending format was generated.
+
+\head \PDFTEX\ cannot find one or more map files (\type{*.map}),
+ encoding vectors (\type{*.enc}), virtual fonts, Type~1 fonts,
+ TrueType or OpenType fonts, or some image file.
+
+ Make sure that the required file exists and the corresponding variable
+ in \filename {texmf.cnf} contains a path to the file. See above which
+ variables \PDFTEX\ needs apart from the ones \TEX\ uses.
+
+ When you have installed new fonts, and your \PDF\ viewer complains
+ about missing fonts, you should take a look at the log file produced
+ by \PDFTEX. Missing fonts, map files, encoding vectors as well as
+ missing characters (glyphs) are reported there.
+
+\stopitemize
+
+Normally the page content takes one object. This means that one seldom
+finds more than a few hundred objects in a simple file. This \PDFTEX\
+manual for instance uses approx.~750 objects. In more complex applications
+this number can grow quite rapidly, especially when one uses a lot of
+widget annotations, shared annotations or other shared things. In any
+case \PDFTEX's internal object table size will automatically grow to the
+required size (the parameter \type{obj_tab_size} for manual control of
+the object table size is now obsolete and ignored).
+
+%***********************************************************************
+
\stopbodymatter
-%D We did use some abbreviations. Only those really used will end up in the
-%D following list.
+%D Only abbreviations actually used will end up in the following list.
\startbackmatter
\writebetweenlist[section]{\blank[line]}
-%***********************************************************************
-
\section{Abbreviations}
-In this document we use numerous abbreviations. For convenience we mention
-their meaning here.
+In this document we use numerous abbreviations. For convenience we give
+their meanings here.
\placelistofabbreviations
@@ -4875,61 +5146,6 @@ to one of the maintainers.
%***********************************************************************
-\section[sec.addpdfkeys]{Additional \PDF\ keys}
-
-{\em This section is based on the manual on keys written by Martin
-Schr\"oder, one of the maintainers of \PDFTEX.}
-
-A \PDF\ document should contain only the structures and attributes defined
-in the \PDF\ specification. However, the specification allows applications
-to insert additional keys, provided they follow certain rules.
-
-The most important rule is that developers have to register with Adobe
-prefixes for the keys they want to insert. Hans Hagen has registered the
-prefix \type{PTEX} for \PDFTEX.
-
-\PDFTEX\ generates an XObject for every included \PDF. The dictionary of
-this object contains these additional keys:
-
-\starttabulate[|lT|l|p|]
-\HL
-\NC \bf key \NC \bf type \NC meaning \NC \NR
-\HL
-\NC PTEX.FileName \NC string \NC The name of the included file as seen by
- \PDFTEX. \NC \NR
-\NC PTEX.InfoDict \NC dictionary \NC The document information dictionary of the included
- \PDF\ (an indirect object). \NC \NR
-\NC PTEX.PageNumber \NC integer \NC The page number of the included file. \NC \NR
-\HL
-\stoptabulate
-
-The \PDFReference\ says: \quotation {Although viewer applications can
-store custom metadata in the document information dictionary, it is
-inappropriate to store private content or structural information there;
-such information should be stored in the document catalog instead.}
-
-Although it would seem more natural to put this information in the
-document information dictionary, we have to obey the rules laid down in
-the \PDFReference. The following key ends up in the document catalog.
-
-\starttabulate[|lT|l|p|]
-\HL
-\NC \bf key \NC \bf type \NC meaning \NC \NR
-\HL
-\NC PTEX.Fullbanner \NC string \NC The full version of the \pt binary that
-produced the file as displayed by {\tt pdftex \hbox{-{}-version}}, \eg\
-{\tt\pdftexbanner}. This is necessary because the string in the
-\type{Producer} key in the info dictionary is rather short,
-namely {\tt pdfTeX-\currentpdftex}. \NC \NR
-\HL
-\stoptabulate
-
-Any or all of these keys can be suppressed with the
-\type{\pdfsuppressptexinfo} primitive, described in
-\in{section}[sec.docinfocatalog].
-
-%***********************************************************************
-
\section{Colophon}
This manual is typeset in \CONTEXT. One can generate an A4 version from
@@ -4957,9 +5173,6 @@ Odd and even page sets for non-duplex printers can be generated using
\type{-}\type{-pages=odd} and \type{-}\type{-pages=even} options
(which might require some disciplined shuffling of sheet).
-This also demonstrates that \PDFTEX\ can be used for page imposition
-purposes (given that \PDFTEX\ and the fonts are set up properly).
-
%***********************************************************************
\page
@@ -4974,7 +5187,7 @@ purposes (given that \PDFTEX\ and the fonts are set up properly).
\section{GNU Free Documentation License}
\startnotmode[screen]
- \switchtobodyfont[4.6pt] % squeeze everything on one page :-}
+ \switchtobodyfont[6.4pt] % squeeze everything onto two pages}
\setuplayout[grid=yes]
\setupcolumns[n=7]
\stopnotmode
diff --git a/systems/win32/miktex/tm/packages/next/pr.ini b/systems/win32/miktex/tm/packages/next/pr.ini
index 5725740874..a75dacb80e 100644
--- a/systems/win32/miktex/tm/packages/next/pr.ini
+++ b/systems/win32/miktex/tm/packages/next/pr.ini
@@ -1,13 +1,13 @@
[repository]
-date=1646083099
+date=1646169479
lastupd=miktex-arctrl-bin-2.9 miktex-arctrl-bin-x64-2.9 miktex-asymptote-bin-2.9 miktex-asymptote-bin-x64-2.9 miktex-autosp-bin-2.9 miktex-autosp-bin-x64-2.9 miktex-axohelp-bin-2.9 miktex-axohelp-bin-x64-2.9 miktex-bibarts-bin-2.9 miktex-bibarts-bin-x64-2.9 miktex-bibtex-bin-2.9 miktex-bibtex-bin-x64-2.9 miktex-bibtex8bit-bin-2.9 miktex-bibtex8bit-bin-x64-2.9 miktex-bzip2-bin-2.9 miktex-bzip2-bin-x64-2.9 miktex-cairo-bin-2.9 miktex-cairo-bin-x64-2.9 miktex-chktex-bin-2.9 miktex-chktex-bin-x64-2.9
-lstdigest=c08ee31f32ca82cda03ec40d81845bb3
+lstdigest=77fc61848f47bd26caeca1d2cb04e830
numpkg=5396
relstate=next
-version=8094
+version=8095
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: JYVmCRD9nFvUtt5f7KeuSOUlw/14qheQhstVdWqi+tnT89I96+3RV7M+1RfDJFAqCaPz6SQuYtWnqDX2ODlV08gosn0z9JZswuj1i5U6dPTXbkzfQ7bMvcfdpc5V+ufib/bGfzjk34Ql1zcwjrarYvZId9Frxg+4HAjtvmg/MZlt693SfI/B2ZJU0ARUchNwDt3szEK+W/mLSilu/hNJtryjh4r3wueaphyhQjLY/XIRjATZu7CLZ1YTSogSIpcqlLp9lAt3F2+I2y+T4lFglJDSHNtxXOwuEdyyRvYSQ4zDNhNi0rjuPq0yVGXjSTTCct+64sXl45lBJJf3b/qTOg==
+;;;; signature/miktex: fSsSEeH92mDpXD+LBmH1g+VV/R/DKZBHnIrgWFCvnX2LPv4HxZuIHiACpgev586JKUpfnJCMeOFa8aGeksJmnXWJn/3YgaG/YwzOTBUsZIy4mr/mp1rte2HxrnBjmlIVL53i1Pv2HAODmAxiY82chi8z5npq3YDx4gHJtXYVGKUlNEZ8KuR0gGvA+IhI88lnt++Zqy1U1G1DnPW7AKuAh7+C3hEeOyDqdhZFHDAJkTLzTYvyYMuQuPgESiljtC/0Fw+1Z9s0AaQPOxXbQJUBwbmI1dsMU6GZRv+QoTr1iQ6i+VOkuY84LlqgwkMfGiAva9HLRj33ZmFxXZx6R4MIcw==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/systems/win32/miktex/tm/packages/pr.ini b/systems/win32/miktex/tm/packages/pr.ini
index 7632f3ec60..09acd443c7 100644
--- a/systems/win32/miktex/tm/packages/pr.ini
+++ b/systems/win32/miktex/tm/packages/pr.ini
@@ -1,13 +1,13 @@
[repository]
-date=1646082718
+date=1646169110
lastupd=andika andika__doc animate animate__doc animate__source beamertheme-focus beamertheme-focus__doc beamertheme-focus__source bfh-ci bfh-ci__doc biblatex-mla biblatex-mla__doc biblatex-mla__source bidi bidi__doc bidi__source caption caption__doc caption__source crefthe
-lstdigest=5b6df6a6cb94498f06fad00cdd094672
+lstdigest=4b2dbe05a1c588e6bf2df13f4208152e
numpkg=5394
relstate=stable
-version=8094
+version=8095
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: VxW/4H5QOWVuXAcynnUkODpDOjcJhhreFQ2fwu6FjaLawWdwTM6aMViNkwbI1/qe+gSdCHtlxU/5yVGaZ1co8ZABvjquoxqa6HlnrvWxarPFkcjrZX3XPFLqigP4kgeUzTmJuzVGZrTfDQQG7zjOuo56biyp7HGEuYDcySXcNxCg44LlXStfZCbR44koLd1qaHFoztlSTrojX4IZEFWDFuFW9zKuQaVGCt0cLvkDSeDra+326Ql8pvuiIXJL7odVjeHpeAuz5eGThJU+Se0Ko/UGxGS0WiFsFLvC5F4pdOoasBDOXYhwHxlsoAzoT6JQ/r6GKO0Dz27YzJFnkFV2Lw==
+;;;; signature/miktex: qFXqLeyWX2zJF9mvNJ6aCMUw3XCtIZja6R07sCD/ne8ap+ITmwfmMGPbGx58SkXj7vBcuAeB4vXGbybFlY0xTObkYUkPuh6ma/cWE1QiYJoqafeRut3/DyHOSnwdq7IFAJq9JRkhPXi0c8jPv3CJtGiYZDe4j1IK/xS+gtABX966QNcL0tcfb4WRZ41hY+2Wiatf8PXYhJ1dWrgtBebI6TeB00KRZ53SOBG0jGKdvCsh2ApPSK2S9Z+u0mdviKUcM5JMUNIyk/mnLa+62PMJNrf3YSRxaVjUUv8KkWIbfWdalDEYVOxWGtalg7J7e65bhy4mmMkVsDd7ojS7AnFHxA==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/timestamp b/timestamp
index 6a809ce07f..31ed272256 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:
-2022-03-01-02-02
+2022-03-02-02-02
diff --git a/usergrps/usergrps/bg.html b/usergrps/usergrps/bg.html
index d79e528826..337603f0fa 100644
--- a/usergrps/usergrps/bg.html
+++ b/usergrps/usergrps/bg.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -132,7 +139,8 @@ Bulgaria
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -188,7 +196,8 @@ Bulgaria
<a href="lugs/bg">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -203,11 +212,13 @@ Bulgaria
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -239,6 +250,7 @@ Bulgaria
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -291,7 +303,7 @@ Bulgaria
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:34 CET
+2022-03-01 15:47:37 CET
</div></body></html>
diff --git a/usergrps/usergrps/br.html b/usergrps/usergrps/br.html
index 0be9a4191d..3b7434fe34 100644
--- a/usergrps/usergrps/br.html
+++ b/usergrps/usergrps/br.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -128,7 +135,8 @@
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -180,7 +188,8 @@
<a href="lugs/br">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -195,11 +204,13 @@
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -231,6 +242,7 @@
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -283,7 +295,7 @@
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:34 CET
+2022-03-01 15:47:37 CET
</div></body></html>
diff --git a/usergrps/usergrps/cn.html b/usergrps/usergrps/cn.html
index 09986dcba2..50e24eb1c5 100644
--- a/usergrps/usergrps/cn.html
+++ b/usergrps/usergrps/cn.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -131,7 +138,8 @@ China
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -194,7 +202,8 @@ China
<a href="lugs/cn">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -209,11 +218,13 @@ China
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -245,6 +256,7 @@ China
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -297,7 +309,7 @@ China
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:34 CET
+2022-03-01 15:47:37 CET
</div></body></html>
diff --git a/usergrps/usergrps/cz.html b/usergrps/usergrps/cz.html
index 8fbf952c8f..399aea1f6e 100644
--- a/usergrps/usergrps/cz.html
+++ b/usergrps/usergrps/cz.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -134,7 +141,8 @@ V Celnici 1028/10
Czech Republic
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -190,7 +198,8 @@ Czech Republic
<a href="lugs/cz">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -205,11 +214,13 @@ Czech Republic
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -241,6 +252,7 @@ Czech Republic
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -293,7 +305,7 @@ Czech Republic
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:34 CET
+2022-03-01 15:47:37 CET
</div></body></html>
diff --git a/usergrps/usergrps/de.html b/usergrps/usergrps/de.html
index c3c359f454..d8fbc54e1e 100644
--- a/usergrps/usergrps/de.html
+++ b/usergrps/usergrps/de.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -135,7 +142,8 @@ Germany
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -193,7 +201,8 @@ Germany
<a href="lugs/de">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -208,11 +217,13 @@ Germany
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -244,6 +255,7 @@ Germany
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -296,7 +308,7 @@ Germany
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:34 CET
+2022-03-01 15:47:37 CET
</div></body></html>
diff --git a/usergrps/usergrps/dk.html b/usergrps/usergrps/dk.html
index 463a5fb887..31dc594aa0 100644
--- a/usergrps/usergrps/dk.html
+++ b/usergrps/usergrps/dk.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -128,7 +135,8 @@
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -186,7 +194,8 @@ Denmark
<a href="lugs/dk">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -201,11 +210,13 @@ Denmark
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -237,6 +248,7 @@ Denmark
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -289,7 +301,7 @@ Denmark
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:34 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/ee.html b/usergrps/usergrps/ee.html
index 0f6d99758b..471f9e973a 100644
--- a/usergrps/usergrps/ee.html
+++ b/usergrps/usergrps/ee.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -128,7 +135,8 @@
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -182,7 +190,8 @@ EE 2444 Estonia
<a href="lugs/ee">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -197,11 +206,13 @@ EE 2444 Estonia
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -233,6 +244,7 @@ EE 2444 Estonia
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -285,7 +297,7 @@ EE 2444 Estonia
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:34 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/es.html b/usergrps/usergrps/es.html
index 90caa1e240..83fbdb3a7d 100644
--- a/usergrps/usergrps/es.html
+++ b/usergrps/usergrps/es.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -128,7 +135,8 @@
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -182,7 +190,8 @@ Spain
<a href="lugs/es">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -197,11 +206,13 @@ Spain
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -233,6 +244,7 @@ Spain
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -285,7 +297,7 @@ Spain
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:34 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/esc.html b/usergrps/usergrps/esc.html
index caed823323..b600269cd0 100644
--- a/usergrps/usergrps/esc.html
+++ b/usergrps/usergrps/esc.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -128,7 +135,8 @@
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -183,7 +191,8 @@ Spain
<a href="lugs/esc">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -198,11 +207,13 @@ Spain
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -234,6 +245,7 @@ Spain
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -286,7 +298,7 @@ Spain
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:34 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/fr.html b/usergrps/usergrps/fr.html
index 0040d79254..813782a85c 100644
--- a/usergrps/usergrps/fr.html
+++ b/usergrps/usergrps/fr.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -132,7 +139,8 @@ FRANCE
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -188,7 +196,8 @@ FRANCE
<a href="lugs/fr">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -203,11 +212,13 @@ FRANCE
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -239,6 +250,7 @@ FRANCE
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -291,7 +303,7 @@ FRANCE
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:34 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/gr.html b/usergrps/usergrps/gr.html
index 3eaf83d1dc..3d23510481 100644
--- a/usergrps/usergrps/gr.html
+++ b/usergrps/usergrps/gr.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -128,7 +135,8 @@
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -182,7 +190,8 @@ Greece
<a href="lugs/gr">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -197,11 +206,13 @@ Greece
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -233,6 +244,7 @@ Greece
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -285,7 +297,7 @@ Greece
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:34 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/hu.html b/usergrps/usergrps/hu.html
index 4659c85861..e384a544a5 100644
--- a/usergrps/usergrps/hu.html
+++ b/usergrps/usergrps/hu.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -132,7 +139,8 @@ Hungary
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -196,7 +204,8 @@ Hungary
<a href="lugs/hu">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -211,11 +220,13 @@ Hungary
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -247,6 +258,7 @@ Hungary
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -299,7 +311,7 @@ Hungary
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:34 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/ie.html b/usergrps/usergrps/ie.html
index 5e760abf40..2e5b17e6ab 100644
--- a/usergrps/usergrps/ie.html
+++ b/usergrps/usergrps/ie.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -128,7 +135,8 @@
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -182,7 +190,8 @@ Ireland
<a href="lugs/ie">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -197,11 +206,13 @@ Ireland
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -233,6 +244,7 @@ Ireland
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -285,7 +297,7 @@ Ireland
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:34 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/index.html b/usergrps/usergrps/index.html
index 1174e0319b..1c33c2d38a 100644
--- a/usergrps/usergrps/index.html
+++ b/usergrps/usergrps/index.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -162,7 +169,7 @@ the cell.
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:35 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/is.html b/usergrps/usergrps/is.html
index 882d241c16..3cd23ab1bf 100644
--- a/usergrps/usergrps/is.html
+++ b/usergrps/usergrps/is.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -128,7 +135,8 @@
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -182,7 +190,8 @@ Iceland
<a href="lugs/is">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -197,11 +206,13 @@ Iceland
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -233,6 +244,7 @@ Iceland
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -285,7 +297,7 @@ Iceland
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:34 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/it.html b/usergrps/usergrps/it.html
index 0eafb1cd0f..d1d8f57868 100644
--- a/usergrps/usergrps/it.html
+++ b/usergrps/usergrps/it.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -131,7 +138,8 @@ Via Claudio 21
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -183,7 +191,8 @@ Via Claudio 21
<a href="lugs/it">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -198,11 +207,13 @@ Via Claudio 21
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -234,6 +245,7 @@ Via Claudio 21
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -286,7 +298,7 @@ Via Claudio 21
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:34 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/kh.html b/usergrps/usergrps/kh.html
index 7e30950225..a267d4e5bf 100644
--- a/usergrps/usergrps/kh.html
+++ b/usergrps/usergrps/kh.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -130,7 +137,8 @@ Cambodia
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -182,7 +190,8 @@ Cambodia
<a href="lugs/kh">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -197,11 +206,13 @@ Cambodia
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -233,6 +244,7 @@ Cambodia
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -285,7 +297,7 @@ Cambodia
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:34 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/kr.html b/usergrps/usergrps/kr.html
index 71c80ef447..b695f06c8b 100644
--- a/usergrps/usergrps/kr.html
+++ b/usergrps/usergrps/kr.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -133,7 +140,8 @@ Republic of Korea
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -194,7 +202,8 @@ Republic of Korea
<a href="lugs/kr">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -209,11 +218,13 @@ Republic of Korea
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -245,6 +256,7 @@ Republic of Korea
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -297,7 +309,7 @@ Republic of Korea
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:34 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/labels.pdf b/usergrps/usergrps/labels.pdf
index 7e68a0da1d..e1cbeaea32 100644
--- a/usergrps/usergrps/labels.pdf
+++ b/usergrps/usergrps/labels.pdf
Binary files differ
diff --git a/usergrps/usergrps/lt.html b/usergrps/usergrps/lt.html
index 72785a977f..fc7f805d30 100644
--- a/usergrps/usergrps/lt.html
+++ b/usergrps/usergrps/lt.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -128,7 +135,8 @@
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -182,7 +190,8 @@ Lithuania
<a href="lugs/lt">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -197,11 +206,13 @@ Lithuania
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -233,6 +244,7 @@ Lithuania
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -285,7 +297,7 @@ Lithuania
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:34 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/lugs.html b/usergrps/usergrps/lugs.html
index c79880e9ea..6ac2df5c6d 100644
--- a/usergrps/usergrps/lugs.html
+++ b/usergrps/usergrps/lugs.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -557,7 +564,7 @@ in this document.
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:35 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/lugs.pdf b/usergrps/usergrps/lugs.pdf
index 2771517339..10347e93d0 100644
--- a/usergrps/usergrps/lugs.pdf
+++ b/usergrps/usergrps/lugs.pdf
Binary files differ
diff --git a/usergrps/usergrps/mx.html b/usergrps/usergrps/mx.html
index 8759b53c46..eb148064c5 100644
--- a/usergrps/usergrps/mx.html
+++ b/usergrps/usergrps/mx.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -128,7 +135,8 @@
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -183,7 +191,8 @@ Mexico
<a href="lugs/mx">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -198,11 +207,13 @@ Mexico
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -234,6 +245,7 @@ Mexico
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -286,7 +298,7 @@ Mexico
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:35 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/nl.html b/usergrps/usergrps/nl.html
index 14edcd8281..13aee5c51c 100644
--- a/usergrps/usergrps/nl.html
+++ b/usergrps/usergrps/nl.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -128,7 +135,8 @@
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -187,7 +195,8 @@ The Netherlands
<a href="lugs/nl">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -202,11 +211,13 @@ The Netherlands
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -238,6 +249,7 @@ The Netherlands
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -290,7 +302,7 @@ The Netherlands
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:35 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/no.html b/usergrps/usergrps/no.html
index 152ad1bc04..5df2519c70 100644
--- a/usergrps/usergrps/no.html
+++ b/usergrps/usergrps/no.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -128,7 +135,8 @@
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -183,7 +191,8 @@ Norway
<a href="lugs/no">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -198,11 +207,13 @@ Norway
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -234,6 +245,7 @@ Norway
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -286,7 +298,7 @@ Norway
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:35 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/pl.html b/usergrps/usergrps/pl.html
index 2a1f238601..0fcdf00a83 100644
--- a/usergrps/usergrps/pl.html
+++ b/usergrps/usergrps/pl.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -130,7 +137,8 @@ Poland
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -190,7 +198,8 @@ Poland
<a href="lugs/pl">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -205,11 +214,13 @@ Poland
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -241,6 +252,7 @@ Poland
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -293,7 +305,7 @@ Poland
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:35 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/pt.html b/usergrps/usergrps/pt.html
index 57aef3244a..2289a3f765 100644
--- a/usergrps/usergrps/pt.html
+++ b/usergrps/usergrps/pt.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -128,7 +135,8 @@
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -184,7 +192,8 @@ Portugal
<a href="lugs/pt">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -199,11 +208,13 @@ Portugal
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -235,6 +246,7 @@ Portugal
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -287,7 +299,7 @@ Portugal
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:35 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/us.html b/usergrps/usergrps/us.html
index 8a68722c9b..a9d7ed1316 100644
--- a/usergrps/usergrps/us.html
+++ b/usergrps/usergrps/us.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -130,7 +137,8 @@ USA
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -182,7 +190,8 @@ USA
<a href="lugs/us">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -197,11 +206,13 @@ USA
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -233,6 +244,7 @@ USA
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -285,7 +297,7 @@ USA
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:35 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/uy.html b/usergrps/usergrps/uy.html
index 1737d5e378..c565f08c21 100644
--- a/usergrps/usergrps/uy.html
+++ b/usergrps/usergrps/uy.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -128,7 +135,8 @@
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -180,7 +188,8 @@
<a href="lugs/uy">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -195,11 +204,13 @@
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -231,6 +242,7 @@
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -283,7 +295,7 @@
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:35 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/vn.html b/usergrps/usergrps/vn.html
index 0ff9b39dfb..c1f8eb9175 100644
--- a/usergrps/usergrps/vn.html
+++ b/usergrps/usergrps/vn.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -131,7 +138,8 @@ Việt Nam
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -188,7 +196,8 @@ Việt Nam
<a href="lugs/vn">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -203,11 +212,13 @@ Việt Nam
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -239,6 +250,7 @@ Việt Nam
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -291,7 +303,7 @@ Việt Nam
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:35 CET
+2022-03-01 15:47:38 CET
</div></body></html>
diff --git a/usergrps/usergrps/za.html b/usergrps/usergrps/za.html
index 5561d6ea0a..38b84d4425 100644
--- a/usergrps/usergrps/za.html
+++ b/usergrps/usergrps/za.html
@@ -9,6 +9,13 @@
<meta name="description" content="Nederlandstalige TeX Gebruikersgroep"/>
<meta name="keywords" content="TeX LaTeX ConTeXt Metafont MetaPost typesetting NTG gebruikersgroep"/>
<meta name="DC.Title" content="Nederlandstalige TeX Gebruikersgroep"/>
+ <script type="text/javascript">
+ var onloadCallback = function() {
+ grecaptcha.render('html_element', {
+ 'sitekey' : '6Ld57aUeAAAAAEap5BV04RW0JiI_aAchmBTfhQ3v'
+ });
+ };
+ </script>
<title>TeX User Groups around the world</title>
</head>
@@ -128,7 +135,8 @@
"baddr">
</textarea>
<tr>
- <th colspan="4" class="lug">contact addresses
+ <td>
+ <th colspan="3" class="lug">contact addresses
<tr>
<td>&nbsp;
<th>policy matters
@@ -183,7 +191,8 @@ South Africa
<a href="lugs/za">download data</a>
<th>
<tr>
- <th colspan="4" class="lug">submission of corrected data; enter your
+ <td>
+ <th colspan="3" class="lug">submission of corrected data; enter your
email address and password first!
<tr>
<td>
@@ -198,11 +207,13 @@ South Africa
<tr>
<td>
<td>
- <td><input class="lug" type="submit" value=
- "submit corrected data">
+ <td colspan="2"><div id="html_element"></div>
+<tr>
+ <td>
<td>
+ <td><input class="lug" type="submit" value="submit corrected data">
</table>
- <p>Links to other User Group correction forms:<p>
+ <p>Links to other User Group correction forms:<br>
<a href="bg.html">bg</a>
<a href="br.html">br</a>
<a href="cn.html">cn</a>
@@ -234,6 +245,7 @@ South Africa
</div>
</form>
+ <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
</div>
<ul id="leftbar">
<li><a href="/membersonly-en.html" title="NTG members only">members only</a>
@@ -286,7 +298,7 @@ South Africa
<p id="copyright">&copy; NTG - last changed on
-2021-11-09 23:56:35 CET
+2022-03-01 15:47:38 CET
</div></body></html>