From 473b8529944036d53095231d535a6fb209f3f976 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Tue, 2 Aug 2022 03:03:55 +0000 Subject: CTAN sync 202208020303 --- FILES.byname | 354 +++--- FILES.byname.gz | Bin 2445969 -> 2446354 bytes FILES.last07days | 401 +++---- customdice/README.md | 11 + customdice/customdice.dtx | 806 +++++++++++++ customdice/customdice.ins | 13 + customdice/customdice.pdf | Bin 0 -> 369482 bytes graphics/pgf/contrib/bodeplot/README.md | 2 +- graphics/pgf/contrib/bodeplot/bodeplot.dtx | 1208 ++++++++++++-------- graphics/pgf/contrib/bodeplot/bodeplot.pdf | Bin 1007326 -> 1062592 bytes graphics/pgf/contrib/customdice/README.md | 11 + graphics/pgf/contrib/customdice/customdice.dtx | 806 +++++++++++++ graphics/pgf/contrib/customdice/customdice.ins | 13 + graphics/pgf/contrib/customdice/customdice.pdf | Bin 0 -> 369482 bytes info/install-latex-guide-zh-cn/appendix/mirror.tex | 4 +- .../appendix/updateinfo.tex | 8 + info/install-latex-guide-zh-cn/chapter/macos.tex | 11 + info/install-latex-guide-zh-cn/chapter/windows.tex | 6 + .../install-latex-guide-zh-cn.pdf | Bin 774934 -> 777318 bytes macros/jptex/latex/gentombow/LICENSE | 27 - macros/jptex/latex/gentombow/README.md | 71 -- macros/jptex/latex/gentombow/bounddvi-en.pdf | Bin 49397 -> 0 bytes macros/jptex/latex/gentombow/bounddvi-en.tex | 136 --- macros/jptex/latex/gentombow/bounddvi.pdf | Bin 102475 -> 0 bytes macros/jptex/latex/gentombow/bounddvi.sty | 112 -- macros/jptex/latex/gentombow/bounddvi.tex | 149 --- macros/jptex/latex/gentombow/gentombow-ja.pdf | Bin 174085 -> 0 bytes macros/jptex/latex/gentombow/gentombow-ja.tex | 459 -------- macros/jptex/latex/gentombow/gentombow.pdf | Bin 150209 -> 0 bytes macros/jptex/latex/gentombow/gentombow.sty | 747 ------------ macros/jptex/latex/gentombow/gentombow.tex | 307 ----- macros/jptex/latex/gentombow/pxesopic.sty | 239 ---- macros/jptex/latex/gentombow/pxgentombow.pdf | Bin 23109 -> 0 bytes macros/jptex/latex/gentombow/pxgentombow.sty | 16 - macros/jptex/latex/gentombow/pxgentombow.tex | 25 - macros/jptex/latex/gentombow/pxpdfpages.sty | 72 -- macros/jptex/latex/gentombow/pxtextpos.sty | 108 -- macros/latex/contrib/gentombow/LICENSE | 27 + macros/latex/contrib/gentombow/README.md | 71 ++ macros/latex/contrib/gentombow/bounddvi-en.pdf | Bin 0 -> 49397 bytes macros/latex/contrib/gentombow/bounddvi-en.tex | 136 +++ macros/latex/contrib/gentombow/bounddvi.pdf | Bin 0 -> 102475 bytes macros/latex/contrib/gentombow/bounddvi.sty | 112 ++ macros/latex/contrib/gentombow/bounddvi.tex | 149 +++ macros/latex/contrib/gentombow/gentombow-ja.pdf | Bin 0 -> 174085 bytes macros/latex/contrib/gentombow/gentombow-ja.tex | 459 ++++++++ macros/latex/contrib/gentombow/gentombow.pdf | Bin 0 -> 150209 bytes macros/latex/contrib/gentombow/gentombow.sty | 747 ++++++++++++ macros/latex/contrib/gentombow/gentombow.tex | 307 +++++ macros/latex/contrib/gentombow/pxesopic.sty | 239 ++++ macros/latex/contrib/gentombow/pxgentombow.pdf | Bin 0 -> 23109 bytes macros/latex/contrib/gentombow/pxgentombow.sty | 16 + macros/latex/contrib/gentombow/pxgentombow.tex | 25 + macros/latex/contrib/gentombow/pxpdfpages.sty | 72 ++ macros/latex/contrib/gentombow/pxtextpos.sty | 108 ++ .../contrib/kfupm-math-exam/kfupm-math-exam.cls | 289 ----- .../latex/contrib/proflycee/doc/ProfLycee-doc.pdf | Bin 667760 -> 678803 bytes .../latex/contrib/proflycee/doc/ProfLycee-doc.tex | 132 ++- macros/latex/contrib/proflycee/tex/ProfLycee.sty | 10 +- macros/latex/contrib/projlib/ProjLib.dtx | 26 +- macros/latex/contrib/projlib/README.md | 2 +- macros/xetex/latex/hfutthesis/hfutthesis.cls | 2 +- .../texlive/tlnet/tlpkg/installer/ctan-mirrors.pl | 5 +- systems/texlive/tlnet/tlpkg/texlive.tlpdb | 118 +- systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 | 2 +- systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 | 2 +- .../texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc | 14 +- systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz | Bin 2396632 -> 2396648 bytes systems/win32/miktex/tm/packages/next/pr.ini | 8 +- systems/win32/miktex/tm/packages/pr.ini | 8 +- timestamp | 2 +- 71 files changed, 5435 insertions(+), 3775 deletions(-) create mode 100644 customdice/README.md create mode 100644 customdice/customdice.dtx create mode 100644 customdice/customdice.ins create mode 100644 customdice/customdice.pdf create mode 100644 graphics/pgf/contrib/customdice/README.md create mode 100644 graphics/pgf/contrib/customdice/customdice.dtx create mode 100644 graphics/pgf/contrib/customdice/customdice.ins create mode 100644 graphics/pgf/contrib/customdice/customdice.pdf delete mode 100644 macros/jptex/latex/gentombow/LICENSE delete mode 100644 macros/jptex/latex/gentombow/README.md delete mode 100644 macros/jptex/latex/gentombow/bounddvi-en.pdf delete mode 100644 macros/jptex/latex/gentombow/bounddvi-en.tex delete mode 100644 macros/jptex/latex/gentombow/bounddvi.pdf delete mode 100644 macros/jptex/latex/gentombow/bounddvi.sty delete mode 100644 macros/jptex/latex/gentombow/bounddvi.tex delete mode 100644 macros/jptex/latex/gentombow/gentombow-ja.pdf delete mode 100644 macros/jptex/latex/gentombow/gentombow-ja.tex delete mode 100644 macros/jptex/latex/gentombow/gentombow.pdf delete mode 100644 macros/jptex/latex/gentombow/gentombow.sty delete mode 100644 macros/jptex/latex/gentombow/gentombow.tex delete mode 100644 macros/jptex/latex/gentombow/pxesopic.sty delete mode 100644 macros/jptex/latex/gentombow/pxgentombow.pdf delete mode 100644 macros/jptex/latex/gentombow/pxgentombow.sty delete mode 100644 macros/jptex/latex/gentombow/pxgentombow.tex delete mode 100644 macros/jptex/latex/gentombow/pxpdfpages.sty delete mode 100644 macros/jptex/latex/gentombow/pxtextpos.sty create mode 100644 macros/latex/contrib/gentombow/LICENSE create mode 100644 macros/latex/contrib/gentombow/README.md create mode 100644 macros/latex/contrib/gentombow/bounddvi-en.pdf create mode 100644 macros/latex/contrib/gentombow/bounddvi-en.tex create mode 100644 macros/latex/contrib/gentombow/bounddvi.pdf create mode 100644 macros/latex/contrib/gentombow/bounddvi.sty create mode 100644 macros/latex/contrib/gentombow/bounddvi.tex create mode 100644 macros/latex/contrib/gentombow/gentombow-ja.pdf create mode 100644 macros/latex/contrib/gentombow/gentombow-ja.tex create mode 100644 macros/latex/contrib/gentombow/gentombow.pdf create mode 100644 macros/latex/contrib/gentombow/gentombow.sty create mode 100644 macros/latex/contrib/gentombow/gentombow.tex create mode 100644 macros/latex/contrib/gentombow/pxesopic.sty create mode 100644 macros/latex/contrib/gentombow/pxgentombow.pdf create mode 100644 macros/latex/contrib/gentombow/pxgentombow.sty create mode 100644 macros/latex/contrib/gentombow/pxgentombow.tex create mode 100644 macros/latex/contrib/gentombow/pxpdfpages.sty create mode 100644 macros/latex/contrib/gentombow/pxtextpos.sty delete mode 100644 macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.cls diff --git a/FILES.byname b/FILES.byname index e355894804..f2d9ad7727 100644 --- a/FILES.byname +++ b/FILES.byname @@ -2043,6 +2043,10 @@ 1989/03/29 | 23265 | biblio/tib/vitaMake 2005/12/15 | 366385 | biblio/tib.zip 2022/07/25 | 17864 | CTAN.sites +2022/07/31 | 45786 | customdice/customdice.dtx +2022/07/31 | 417 | customdice/customdice.ins +2022/07/31 | 369482 | customdice/customdice.pdf +2022/07/31 | 534 | customdice/README.md 1990/10/03 | 5032 | dviware/beebe/00readme.txt 1990/10/03 | 479 | dviware/beebe/doc/00dir.cmd 1990/10/03 | 1209 | dviware/beebe/doc/00dir.lst @@ -5263,7 +5267,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/07/31 | 106172 | FILES.last07days +2022/08/01 | 102680 | 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 @@ -158236,11 +158240,11 @@ 2010/10/10 | 82 | graphics/pgf/contrib/bodegraph/gnuplot/bodegraph/9.table 2010/10/10 | 473 | graphics/pgf/contrib/bodegraph/README 2010/10/10 | 421558 | graphics/pgf/contrib/bodegraph.zip -2022/07/20 | 85685 | graphics/pgf/contrib/bodeplot/bodeplot.dtx -2022/07/20 | 1416 | graphics/pgf/contrib/bodeplot/bodeplot.ins -2022/07/20 | 1007326 | graphics/pgf/contrib/bodeplot/bodeplot.pdf -2022/07/20 | 3629 | graphics/pgf/contrib/bodeplot/README.md -2022/07/20 | 776733 | graphics/pgf/contrib/bodeplot.zip +2022/07/31 | 97095 | graphics/pgf/contrib/bodeplot/bodeplot.dtx +2022/07/31 | 1416 | graphics/pgf/contrib/bodeplot/bodeplot.ins +2022/07/31 | 1062592 | graphics/pgf/contrib/bodeplot/bodeplot.pdf +2022/07/31 | 3623 | graphics/pgf/contrib/bodeplot/README.md +2022/08/01 | 775056 | graphics/pgf/contrib/bodeplot.zip 2019/05/07 | 70256 | graphics/pgf/contrib/braids/braids_code.dtx 2019/05/07 | 410835 | graphics/pgf/contrib/braids/braids_code.pdf 2019/04/04 | 314455 | graphics/pgf/contrib/braids/braids.pdf @@ -158401,6 +158405,11 @@ 2020/06/12 | 4382 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.ramma.code.tex 2020/06/12 | 7595 | graphics/pgf/contrib/commutative-diagrams/tikzlibrarycommutative-diagrams.velos.code.tex 2020/06/12 | 569843 | graphics/pgf/contrib/commutative-diagrams.zip +2022/07/31 | 45786 | graphics/pgf/contrib/customdice/customdice.dtx +2022/07/31 | 417 | graphics/pgf/contrib/customdice/customdice.ins +2022/07/31 | 369482 | graphics/pgf/contrib/customdice/customdice.pdf +2022/07/31 | 534 | graphics/pgf/contrib/customdice/README.md +2022/08/01 | 363456 | graphics/pgf/contrib/customdice.zip 2020/04/15 | 29754 | graphics/pgf/contrib/dpcircling/DPcircling.pdf 2020/04/15 | 9595 | graphics/pgf/contrib/dpcircling/DPcircling.sty 2020/04/15 | 2836 | graphics/pgf/contrib/dpcircling/DPcircling.tex @@ -185788,24 +185797,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 +2022/07/11 | 4456 | info/install-latex-guide-zh-cn/appendix/mirror.tex 2020/11/14 | 2463 | info/install-latex-guide-zh-cn/appendix/offline.tex -2022/07/01 | 5575 | info/install-latex-guide-zh-cn/appendix/updateinfo.tex +2022/07/11 | 5781 | info/install-latex-guide-zh-cn/appendix/updateinfo.tex 2022/04/05 | 3458 | info/install-latex-guide-zh-cn/appendix/wsladdition.tex 2022/02/25 | 25306 | info/install-latex-guide-zh-cn/chapter/editor.tex -2022/03/23 | 6541 | info/install-latex-guide-zh-cn/chapter/macos.tex +2022/07/09 | 7036 | info/install-latex-guide-zh-cn/chapter/macos.tex 2022/07/01 | 5476 | info/install-latex-guide-zh-cn/chapter/overleaf.tex 2022/07/01 | 2599 | info/install-latex-guide-zh-cn/chapter/preface.tex 2022/04/08 | 15078 | info/install-latex-guide-zh-cn/chapter/ubuntu.tex -2022/04/08 | 20650 | info/install-latex-guide-zh-cn/chapter/windows.tex +2022/07/11 | 20873 | info/install-latex-guide-zh-cn/chapter/windows.tex 2022/04/08 | 12227 | info/install-latex-guide-zh-cn/chapter/wsl.tex -2022/07/01 | 774934 | info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf +2022/08/01 | 777318 | 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 -2022/07/01 | 816389 | info/install-latex-guide-zh-cn.zip +2022/08/01 | 819023 | 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 @@ -198538,25 +198547,6 @@ 2022/01/29 | 61 | macros/jptex/generic/uptex-base/uptex.ini 2022/01/29 | 1810 | macros/jptex/generic/uptex-base/uptex.tex 2022/01/29 | 337977 | macros/jptex/generic/uptex-base.zip -2020/10/14 | 49397 | macros/jptex/latex/gentombow/bounddvi-en.pdf -2020/10/14 | 5322 | macros/jptex/latex/gentombow/bounddvi-en.tex -2020/10/14 | 102475 | macros/jptex/latex/gentombow/bounddvi.pdf -2020/10/14 | 3986 | macros/jptex/latex/gentombow/bounddvi.sty -2020/10/14 | 7664 | macros/jptex/latex/gentombow/bounddvi.tex -2020/10/14 | 174085 | macros/jptex/latex/gentombow/gentombow-ja.pdf -2020/10/14 | 21595 | macros/jptex/latex/gentombow/gentombow-ja.tex -2020/10/14 | 150209 | macros/jptex/latex/gentombow/gentombow.pdf -2020/10/14 | 26436 | macros/jptex/latex/gentombow/gentombow.sty -2020/10/14 | 10362 | macros/jptex/latex/gentombow/gentombow.tex -2020/10/14 | 1500 | macros/jptex/latex/gentombow/LICENSE -2020/10/14 | 7762 | macros/jptex/latex/gentombow/pxesopic.sty -2020/10/14 | 23109 | macros/jptex/latex/gentombow/pxgentombow.pdf -2020/10/14 | 457 | macros/jptex/latex/gentombow/pxgentombow.sty -2020/10/14 | 728 | macros/jptex/latex/gentombow/pxgentombow.tex -2020/10/14 | 2144 | macros/jptex/latex/gentombow/pxpdfpages.sty -2020/10/14 | 3412 | macros/jptex/latex/gentombow/pxtextpos.sty -2020/10/14 | 1965 | macros/jptex/latex/gentombow/README.md -2020/10/14 | 523053 | macros/jptex/latex/gentombow.zip 2022/03/05 | 3117 | macros/jptex/latex/japanese-otf/ChangeLog.md 2022/03/05 | 1521 | macros/jptex/latex/japanese-otf/COPYRIGHT 2022/03/05 | 18283 | macros/jptex/latex/japanese-otf/doc/00otf-uptex.txt @@ -217005,6 +216995,25 @@ 2006/09/16 | 86371 | macros/latex/contrib/genmpage/genmpage.pdf 2006/09/16 | 269 | macros/latex/contrib/genmpage/README 2006/09/16 | 79510 | macros/latex/contrib/genmpage.zip +2020/10/14 | 49397 | macros/latex/contrib/gentombow/bounddvi-en.pdf +2020/10/14 | 5322 | macros/latex/contrib/gentombow/bounddvi-en.tex +2020/10/14 | 102475 | macros/latex/contrib/gentombow/bounddvi.pdf +2020/10/14 | 3986 | macros/latex/contrib/gentombow/bounddvi.sty +2020/10/14 | 7664 | macros/latex/contrib/gentombow/bounddvi.tex +2020/10/14 | 174085 | macros/latex/contrib/gentombow/gentombow-ja.pdf +2020/10/14 | 21595 | macros/latex/contrib/gentombow/gentombow-ja.tex +2020/10/14 | 150209 | macros/latex/contrib/gentombow/gentombow.pdf +2020/10/14 | 26436 | macros/latex/contrib/gentombow/gentombow.sty +2020/10/14 | 10362 | macros/latex/contrib/gentombow/gentombow.tex +2020/10/14 | 1500 | macros/latex/contrib/gentombow/LICENSE +2020/10/14 | 7762 | macros/latex/contrib/gentombow/pxesopic.sty +2020/10/14 | 23109 | macros/latex/contrib/gentombow/pxgentombow.pdf +2020/10/14 | 457 | macros/latex/contrib/gentombow/pxgentombow.sty +2020/10/14 | 728 | macros/latex/contrib/gentombow/pxgentombow.tex +2020/10/14 | 2144 | macros/latex/contrib/gentombow/pxpdfpages.sty +2020/10/14 | 3412 | macros/latex/contrib/gentombow/pxtextpos.sty +2020/10/14 | 1965 | macros/latex/contrib/gentombow/README.md +2020/10/14 | 523053 | macros/latex/contrib/gentombow.zip 2020/01/02 | 15887 | macros/latex/contrib/geometry/changes.txt 2020/01/02 | 159890 | macros/latex/contrib/geometry/geometry-de.dtx 2020/01/02 | 465858 | macros/latex/contrib/geometry/geometry-de.pdf @@ -220057,14 +220066,13 @@ 2020/04/04 | 474741 | macros/latex/contrib/keyvaltable/keyvaltable.pdf 2020/04/04 | 2395 | macros/latex/contrib/keyvaltable/README.md 2020/04/05 | 499264 | macros/latex/contrib/keyvaltable.zip -2022/07/25 | 9091 | macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.cls 2022/07/25 | 11921 | macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.dtx 2022/07/25 | 964 | macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.ins 2022/07/25 | 66031 | macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.pdf 2022/07/25 | 1133 | macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.tex 2022/07/25 | 1079 | macros/latex/contrib/kfupm-math-exam/LICENSE 2022/07/25 | 1122 | macros/latex/contrib/kfupm-math-exam/README.txt -2022/07/25 | 72129 | macros/latex/contrib/kfupm-math-exam.zip +2022/08/01 | 68828 | macros/latex/contrib/kfupm-math-exam.zip 2010/03/06 | 126485 | macros/latex/contrib/kix/kix.pdf 2011/03/04 | 3850 | macros/latex/contrib/kix/kix.sty 2010/03/06 | 927 | macros/latex/contrib/kix/kix.tex @@ -226357,11 +226365,11 @@ 2022/06/28 | 11759 | macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c.png 2022/06/28 | 7316 | macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_d.png 2022/06/28 | 9599 | macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_e.png -2022/06/30 | 667760 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf -2022/06/30 | 101395 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex +2022/08/01 | 678803 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf +2022/08/01 | 104452 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex 2022/02/16 | 435 | macros/latex/contrib/proflycee/README.md -2022/06/30 | 49929 | macros/latex/contrib/proflycee/tex/ProfLycee.sty -2022/06/30 | 746128 | macros/latex/contrib/proflycee.zip +2022/08/01 | 50200 | macros/latex/contrib/proflycee/tex/ProfLycee.sty +2022/08/01 | 757998 | macros/latex/contrib/proflycee.zip 1996/02/05 | 1760 | macros/latex/contrib/progkeys/demo/demo.tex 1996/02/05 | 459 | macros/latex/contrib/progkeys/demo/prog1.tex 1996/02/05 | 347 | macros/latex/contrib/progkeys/demo/prog2.tex @@ -226393,11 +226401,11 @@ 2003/07/02 | 9461 | macros/latex/contrib/progress/progress.tex 2003/07/02 | 413 | macros/latex/contrib/progress/README 2006/05/20 | 88703 | macros/latex/contrib/progress.zip -2022/07/23 | 19106 | macros/latex/contrib/projlib/LICENSE -2022/07/23 | 206508 | macros/latex/contrib/projlib/ProjLib.dtx -2022/07/23 | 3379 | macros/latex/contrib/projlib/ProjLib.ins -2022/07/23 | 5439 | macros/latex/contrib/projlib/README.md -2022/07/23 | 40021 | macros/latex/contrib/projlib.zip +2022/08/01 | 19106 | macros/latex/contrib/projlib/LICENSE +2022/08/01 | 206508 | macros/latex/contrib/projlib/ProjLib.dtx +2022/08/01 | 3379 | macros/latex/contrib/projlib/ProjLib.ins +2022/08/01 | 5439 | macros/latex/contrib/projlib/README.md +2022/08/01 | 40023 | macros/latex/contrib/projlib.zip 2022/02/07 | 121559 | macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.pdf 2022/02/07 | 10484 | macros/latex/contrib/proof-at-the-end/proof-at-the-end_demo.tex 2022/02/07 | 84168 | macros/latex/contrib/proof-at-the-end/proof-at-the-end.dtx @@ -246320,13 +246328,13 @@ 2022/07/29 | 202975 | macros/xetex/latex/hfutthesis/hfut-figures/hfut-badge.pdf 2022/07/29 | 60629 | macros/xetex/latex/hfutthesis/hfut-figures/hfut-name.pdf 2022/07/29 | 4011 | macros/xetex/latex/hfutthesis/hfutsetup.tex -2022/07/29 | 111667 | macros/xetex/latex/hfutthesis/hfutthesis.cls +2022/08/01 | 111667 | macros/xetex/latex/hfutthesis/hfutthesis.cls 2022/07/29 | 309251 | macros/xetex/latex/hfutthesis/hfutthesis-doc.pdf 2022/07/29 | 27365 | macros/xetex/latex/hfutthesis/hfutthesis-doc.tex 2022/07/29 | 432196 | macros/xetex/latex/hfutthesis/hfutthesis-example.pdf 2022/07/29 | 1778 | macros/xetex/latex/hfutthesis/hfutthesis-example.tex 2022/07/29 | 3172 | macros/xetex/latex/hfutthesis/README.md -2022/07/29 | 880400 | macros/xetex/latex/hfutthesis.zip +2022/08/01 | 880387 | macros/xetex/latex/hfutthesis.zip 2020/01/10 | 227 | macros/xetex/latex/hithesis/back/acknowledgements.tex 2020/01/10 | 3035 | macros/xetex/latex/hithesis/back/appA.tex 2020/01/10 | 12632 | macros/xetex/latex/hithesis/back/appendix01.tex @@ -282564,9 +282572,9 @@ 2019/03/27 | 6904 | systems/texlive/tlnet/archive/colorspace.r50585.tar.xz 2019/02/28 | 60256 | systems/texlive/tlnet/archive/colortab.doc.r22155.tar.xz 2019/02/28 | 7960 | systems/texlive/tlnet/archive/colortab.r22155.tar.xz -2020/01/26 | 592016 | systems/texlive/tlnet/archive/colortbl.doc.r53545.tar.xz -2020/01/26 | 3284 | systems/texlive/tlnet/archive/colortbl.r53545.tar.xz -2020/01/26 | 11468 | systems/texlive/tlnet/archive/colortbl.source.r53545.tar.xz +2022/08/01 | 627828 | systems/texlive/tlnet/archive/colortbl.doc.r64015.tar.xz +2022/08/01 | 3676 | systems/texlive/tlnet/archive/colortbl.r64015.tar.xz +2022/08/01 | 12780 | systems/texlive/tlnet/archive/colortbl.source.r64015.tar.xz 2019/02/28 | 98884 | systems/texlive/tlnet/archive/colorwav.doc.r15878.tar.xz 2019/02/28 | 1952 | systems/texlive/tlnet/archive/colorwav.r15878.tar.xz 2019/02/28 | 4204 | systems/texlive/tlnet/archive/colorwav.source.r15878.tar.xz @@ -282834,8 +282842,8 @@ 2020/06/24 | 31152 | systems/texlive/tlnet/archive/cquthesis.source.r55643.tar.xz 2019/02/28 | 29448 | systems/texlive/tlnet/archive/crbox.doc.r29803.tar.xz 2019/02/28 | 1544 | systems/texlive/tlnet/archive/crbox.r29803.tar.xz -2022/07/26 | 78084 | systems/texlive/tlnet/archive/create-theorem.doc.r63975.tar.xz -2022/07/26 | 9804 | systems/texlive/tlnet/archive/create-theorem.r63975.tar.xz +2022/08/01 | 78152 | systems/texlive/tlnet/archive/create-theorem.doc.r64016.tar.xz +2022/08/01 | 9808 | systems/texlive/tlnet/archive/create-theorem.r64016.tar.xz 2022/07/26 | 61384 | systems/texlive/tlnet/archive/crefthe.doc.r63976.tar.xz 2022/07/26 | 3144 | systems/texlive/tlnet/archive/crefthe.r63976.tar.xz 2020/03/24 | 34244 | systems/texlive/tlnet/archive/crimson.doc.r54512.tar.xz @@ -288055,9 +288063,9 @@ 2022/01/24 | 41912 | systems/texlive/tlnet/archive/minitoc.r61719.tar.xz 2019/02/28 | 166396 | systems/texlive/tlnet/archive/minorrevision.doc.r32165.tar.xz 2019/02/28 | 1584 | systems/texlive/tlnet/archive/minorrevision.r32165.tar.xz -2021/12/26 | 824148 | systems/texlive/tlnet/archive/minted.doc.r61405.tar.xz -2021/12/26 | 9592 | systems/texlive/tlnet/archive/minted.r61405.tar.xz -2021/12/26 | 45492 | systems/texlive/tlnet/archive/minted.source.r61405.tar.xz +2022/08/01 | 824148 | systems/texlive/tlnet/archive/minted.doc.r64017.tar.xz +2022/08/01 | 9668 | systems/texlive/tlnet/archive/minted.r64017.tar.xz +2022/08/01 | 45492 | systems/texlive/tlnet/archive/minted.source.r64017.tar.xz 2019/02/28 | 308404 | systems/texlive/tlnet/archive/mintspirit.doc.r32069.tar.xz 2019/02/28 | 1105488 | systems/texlive/tlnet/archive/mintspirit.r32069.tar.xz 2019/02/28 | 393404 | systems/texlive/tlnet/archive/minutes.doc.r42186.tar.xz @@ -291847,7 +291855,7 @@ 2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r55172.tar.xz 2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r55172.tar.xz 2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r55172.tar.xz -2022/07/31 | 419136 | systems/texlive/tlnet/archive/texlive-scripts.doc.r64007.tar.xz +2022/08/01 | 419140 | systems/texlive/tlnet/archive/texlive-scripts.doc.r64013.tar.xz 2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.aarch64-linux.r53577.tar.xz 2020/01/27 | 924 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-freebsd.r53577.tar.xz 2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-netbsd.r53577.tar.xz @@ -291871,7 +291879,7 @@ 2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r55172.tar.xz 2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r55172.tar.xz 2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r55172.tar.xz -2022/07/31 | 113516 | systems/texlive/tlnet/archive/texlive-scripts.r64007.tar.xz +2022/08/01 | 113500 | systems/texlive/tlnet/archive/texlive-scripts.r64013.tar.xz 2021/02/25 | 572 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r57908.tar.xz 2022/04/19 | 36296 | systems/texlive/tlnet/archive/texlive-scripts.win32.r63068.tar.xz 2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r55172.tar.xz @@ -293584,8 +293592,8 @@ 2020/03/04 | 5936 | systems/texlive/tlnet/archive/yax.r54080.tar.xz 2022/01/24 | 2170868 | systems/texlive/tlnet/archive/yazd-thesis.doc.r61719.tar.xz 2022/01/24 | 5952 | systems/texlive/tlnet/archive/yazd-thesis.r61719.tar.xz -2022/01/04 | 243272 | systems/texlive/tlnet/archive/yb-book.doc.r61484.tar.xz -2022/01/04 | 3948 | systems/texlive/tlnet/archive/yb-book.r61484.tar.xz +2022/08/01 | 243276 | systems/texlive/tlnet/archive/yb-book.doc.r64017.tar.xz +2022/08/01 | 3948 | systems/texlive/tlnet/archive/yb-book.r64017.tar.xz 2019/02/28 | 124828 | systems/texlive/tlnet/archive/ycbook.doc.r46201.tar.xz 2019/02/28 | 4708 | systems/texlive/tlnet/archive/ycbook.r46201.tar.xz 2020/09/08 | 321388 | systems/texlive/tlnet/archive/ydoc.doc.r56291.tar.xz @@ -293693,16 +293701,16 @@ 2020/07/18 | 47816 | systems/texlive/tlnet/archive/zztex.doc.r55862.tar.xz 2020/07/18 | 101724 | systems/texlive/tlnet/archive/zztex.r55862.tar.xz 2022/07/17 | 124404 | systems/texlive/tlnet/install-tl -2022/07/31 | 5808816 | systems/texlive/tlnet/install-tl-unx.tar.gz -2022/07/31 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 -2022/07/31 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc +2022/08/01 | 5808548 | systems/texlive/tlnet/install-tl-unx.tar.gz +2022/08/01 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 +2022/08/01 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc 2021/04/11 | 4945 | systems/texlive/tlnet/install-tl-windows.bat -2022/07/31 | 20466517 | systems/texlive/tlnet/install-tl-windows.exe -2022/07/31 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 -2022/07/31 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc -2022/07/31 | 25493369 | systems/texlive/tlnet/install-tl.zip -2022/07/31 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 -2022/07/31 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc +2022/08/01 | 20466260 | systems/texlive/tlnet/install-tl-windows.exe +2022/08/01 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 +2022/08/01 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc +2022/08/01 | 25493364 | systems/texlive/tlnet/install-tl.zip +2022/08/01 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2022/08/01 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc 2022/04/03 | 1229 | systems/texlive/tlnet/README.md 2022/04/03 | 0 | systems/texlive/tlnet/TEXLIVE_2022 2022/02/28 | 7791 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg @@ -293712,7 +293720,7 @@ 2022/02/28 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg 2022/05/27 | 49794 | systems/texlive/tlnet/tlpkg/installer/config.guess 2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt -2022/07/30 | 7324 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl +2022/07/31 | 7249 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2022/07/21 | 222477 | systems/texlive/tlnet/tlpkg/installer/curl/curl-ca-bundle.crt 2020/04/15 | 2606592 | systems/texlive/tlnet/tlpkg/installer/curl/curl.exe 2017/04/16 | 2629 | systems/texlive/tlnet/tlpkg/installer/installer-options.txt @@ -293754,14 +293762,14 @@ 2021/05/16 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm 2021/12/21 | 5429 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm 2021/12/21 | 27582 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm -2022/07/31 | 17574247 | systems/texlive/tlnet/tlpkg/texlive.tlpdb -2022/07/31 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2022/08/01 | 17574463 | systems/texlive/tlnet/tlpkg/texlive.tlpdb +2022/08/01 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 2022/04/18 | 86658 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm -2022/07/31 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 -2022/07/31 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc -2022/07/31 | 2394816 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +2022/08/01 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2022/08/01 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +2022/08/01 | 2396632 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz 2021/12/21 | 58848 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm -2022/04/18 | 42116 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm +2022/08/01 | 42206 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm 2021/12/21 | 16130 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm 2022/06/19 | 156508 | systems/texlive/tlnet/tlpkg/TeXLive/TLUtils.pm 2022/04/18 | 38007 | systems/texlive/tlnet/tlpkg/TeXLive/TLWinGoo.pm @@ -299022,7 +299030,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/07/31 | 658010 | systems/win32/miktex/tm/packages/files.csv.lzma +2022/08/01 | 658010 | 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 @@ -300699,9 +300707,9 @@ 2018/01/12 | 157226 | systems/win32/miktex/tm/packages/miktex-zip-bin-x64.tar.lzma 2022/07/26 | 39695 | systems/win32/miktex/tm/packages/miktex-zlib-bin-2.9.tar.lzma 2022/07/30 | 43515 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma -2022/07/31 | 288468 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma -2022/07/31 | 1481323 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma -2022/07/31 | 1361921 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma +2022/08/01 | 288507 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma +2022/08/01 | 1480217 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma +2022/08/01 | 1362511 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma 2022/07/26 | 13519 | systems/win32/miktex/tm/packages/miktex-zzip-bin-2.9.tar.lzma 2022/07/30 | 14474 | 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 @@ -300942,102 +300950,102 @@ 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/07/31 | 658474 | systems/win32/miktex/tm/packages/next/files.csv.lzma -2022/07/31 | 57317 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma -2022/07/31 | 1161751 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma -2022/07/31 | 31586 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma -2022/07/31 | 35264 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma -2022/07/31 | 65130 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma -2022/07/31 | 95467 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma -2022/07/31 | 77210 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma -2022/07/31 | 31563 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma -2022/07/31 | 394144 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma -2022/07/31 | 37051 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma -2022/07/31 | 57504 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma -2022/07/31 | 270467 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma -2022/07/31 | 196212 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma -2022/07/31 | 103247 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma -2022/07/31 | 24212 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma -2022/07/31 | 481890 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma -2022/07/31 | 52037 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma -2022/07/31 | 325981 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma -2022/07/31 | 45795 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma -2022/07/31 | 135464 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma -2022/07/31 | 1458152 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma -2022/07/31 | 112981 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma -2022/07/31 | 48851 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma -2022/07/31 | 28510 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma -2022/07/31 | 63241 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma -2022/07/31 | 155430 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma -2022/07/31 | 79064 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma -2022/07/31 | 81450 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma -2022/07/31 | 295946 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma -2022/07/31 | 25118 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma -2022/07/31 | 112879 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma -2022/07/31 | 73265 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma -2022/07/31 | 115579 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma -2022/07/31 | 43889 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma -2022/07/31 | 565082 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma -2022/07/31 | 247208 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma -2022/07/31 | 169679 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma -2022/07/31 | 109651 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma -2022/07/31 | 18381 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma -2022/07/31 | 30571 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma -2022/07/31 | 682216 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma -2022/07/31 | 599104 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma -2022/07/31 | 527570 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma -2022/07/31 | 103599 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma -2022/07/31 | 2023132 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma -2022/07/31 | 74100 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma -2022/07/31 | 32074 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma -2022/07/31 | 8826 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma -2022/07/31 | 209139 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma -2022/07/31 | 286685 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma -2022/07/31 | 104922 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma -2022/07/31 | 140012 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma -2022/07/31 | 325482 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma -2022/07/31 | 181724 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma -2022/07/31 | 55320 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma -2022/07/31 | 35230 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma -2022/07/31 | 43618 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma -2022/07/31 | 48037 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma -2022/07/31 | 52370 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma -2022/07/31 | 213847 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma -2022/07/31 | 41180 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma -2022/07/31 | 824995 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma -2022/07/31 | 203422 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma -2022/07/31 | 245152 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma -2022/07/31 | 88483 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma -2022/07/31 | 1323744 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma -2022/07/31 | 23950 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma -2022/07/31 | 37507 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma -2022/07/31 | 72978 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma -2022/07/31 | 58633 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma -2022/07/31 | 769649 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma -2022/07/31 | 1503055 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma -2022/07/31 | 52627 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma -2022/07/31 | 63802 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma -2022/07/31 | 27463 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma -2022/07/31 | 18511 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma -2022/07/31 | 70940 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma -2022/07/31 | 173176 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma -2022/07/31 | 68147 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma -2022/07/31 | 107437 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma -2022/07/31 | 2821671 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma -2022/07/31 | 62357 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma -2022/07/31 | 41190 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma -2022/07/31 | 33863 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma -2022/07/31 | 73686 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma -2022/07/31 | 352464 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma -2022/07/31 | 57503 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma -2022/07/31 | 630433 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma -2022/07/31 | 43526 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma -2022/07/31 | 288475 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma -2022/07/31 | 1479214 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma -2022/07/31 | 1362056 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma -2022/07/31 | 14435 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma +2022/08/01 | 658474 | systems/win32/miktex/tm/packages/next/files.csv.lzma +2022/08/01 | 57317 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma +2022/08/01 | 1161749 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma +2022/08/01 | 31586 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma +2022/08/01 | 35264 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma +2022/08/01 | 65130 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma +2022/08/01 | 95469 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma +2022/08/01 | 77210 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma +2022/08/01 | 31563 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma +2022/08/01 | 394143 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma +2022/08/01 | 37050 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma +2022/08/01 | 57503 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma +2022/08/01 | 270467 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma +2022/08/01 | 196212 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma +2022/08/01 | 103246 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma +2022/08/01 | 24211 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma +2022/08/01 | 481894 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma +2022/08/01 | 52037 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma +2022/08/01 | 325980 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma +2022/08/01 | 45795 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma +2022/08/01 | 135464 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma +2022/08/01 | 1458151 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma +2022/08/01 | 112979 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma +2022/08/01 | 48852 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma +2022/08/01 | 28510 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma +2022/08/01 | 63239 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma +2022/08/01 | 155430 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma +2022/08/01 | 79063 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma +2022/08/01 | 81446 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma +2022/08/01 | 295944 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma +2022/08/01 | 25118 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma +2022/08/01 | 112879 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma +2022/08/01 | 73263 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma +2022/08/01 | 115579 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma +2022/08/01 | 43889 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma +2022/08/01 | 565081 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma +2022/08/01 | 247208 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma +2022/08/01 | 169677 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma +2022/08/01 | 109650 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma +2022/08/01 | 18381 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma +2022/08/01 | 30570 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma +2022/08/01 | 682214 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma +2022/08/01 | 599107 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma +2022/08/01 | 527570 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma +2022/08/01 | 103598 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma +2022/08/01 | 2023131 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma +2022/08/01 | 74099 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma +2022/08/01 | 32074 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma +2022/08/01 | 8825 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma +2022/08/01 | 209138 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma +2022/08/01 | 286685 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma +2022/08/01 | 104921 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma +2022/08/01 | 140012 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma +2022/08/01 | 325483 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma +2022/08/01 | 181725 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma +2022/08/01 | 55319 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma +2022/08/01 | 35228 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma +2022/08/01 | 43616 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma +2022/08/01 | 48037 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma +2022/08/01 | 52369 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma +2022/08/01 | 213846 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma +2022/08/01 | 41179 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma +2022/08/01 | 824995 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma +2022/08/01 | 203420 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma +2022/08/01 | 245151 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma +2022/08/01 | 88484 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma +2022/08/01 | 1323742 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma +2022/08/01 | 23949 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma +2022/08/01 | 37505 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma +2022/08/01 | 72978 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma +2022/08/01 | 58633 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma +2022/08/01 | 769652 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma +2022/08/01 | 1503054 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma +2022/08/01 | 52628 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma +2022/08/01 | 63802 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma +2022/08/01 | 27463 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma +2022/08/01 | 18510 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma +2022/08/01 | 70938 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma +2022/08/01 | 173177 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma +2022/08/01 | 68146 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma +2022/08/01 | 107436 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma +2022/08/01 | 2821672 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma +2022/08/01 | 62359 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma +2022/08/01 | 41190 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma +2022/08/01 | 33862 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma +2022/08/01 | 73685 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma +2022/08/01 | 352465 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma +2022/08/01 | 57501 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma +2022/08/01 | 630434 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma +2022/08/01 | 43527 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma +2022/08/01 | 288508 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma +2022/08/01 | 1478686 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma +2022/08/01 | 1362634 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma +2022/08/01 | 14434 | 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/07/31 | 1172 | systems/win32/miktex/tm/packages/next/pr.ini +2022/08/01 | 1172 | 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 @@ -301524,7 +301532,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/07/31 | 957 | systems/win32/miktex/tm/packages/pr.ini +2022/08/01 | 957 | 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 @@ -303456,7 +303464,7 @@ 2004/06/04 | 404 | tds/tds.sed 2004/06/23 | 65418 | tds/tds.tex 2019/05/29 | 304264 | tds.zip -2022/08/01 | 186 | timestamp +2022/08/02 | 186 | timestamp 2002/08/26 | 61898 | usergrps/dante/antrag.pdf 2002/08/26 | 118217 | usergrps/dante/antrag.ps 2022/02/28 | 917 | usergrps/dante/dtk/doc/beispiel.bib diff --git a/FILES.byname.gz b/FILES.byname.gz index 72d60c560d..759498e460 100644 Binary files a/FILES.byname.gz and b/FILES.byname.gz differ diff --git a/FILES.last07days b/FILES.last07days index 408078c7b7..3b5e749c1b 100644 --- a/FILES.last07days +++ b/FILES.last07days @@ -1,132 +1,172 @@ +2022/08/01 | 9808 | systems/texlive/tlnet/archive/create-theorem.r64016.tar.xz +2022/08/01 | 9668 | systems/texlive/tlnet/archive/minted.r64017.tar.xz +2022/08/01 | 957 | systems/win32/miktex/tm/packages/pr.ini +2022/08/01 | 95469 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma +2022/08/01 | 88484 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma +2022/08/01 | 8825 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma +2022/08/01 | 880387 | macros/xetex/latex/hfutthesis.zip +2022/08/01 | 824995 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma +2022/08/01 | 824148 | systems/texlive/tlnet/archive/minted.doc.r64017.tar.xz +2022/08/01 | 819023 | info/install-latex-guide-zh-cn.zip +2022/08/01 | 81446 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma +2022/08/01 | 79063 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma +2022/08/01 | 78152 | systems/texlive/tlnet/archive/create-theorem.doc.r64016.tar.xz +2022/08/01 | 777318 | info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf +2022/08/01 | 775056 | graphics/pgf/contrib/bodeplot.zip +2022/08/01 | 77210 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma +2022/08/01 | 769652 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma +2022/08/01 | 757998 | macros/latex/contrib/proflycee.zip +2022/08/01 | 74099 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma +2022/08/01 | 73685 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma +2022/08/01 | 73263 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma +2022/08/01 | 72978 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma +2022/08/01 | 70938 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma +2022/08/01 | 68828 | macros/latex/contrib/kfupm-math-exam.zip +2022/08/01 | 682214 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma +2022/08/01 | 68146 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma +2022/08/01 | 678803 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf +2022/08/01 | 658474 | systems/win32/miktex/tm/packages/next/files.csv.lzma +2022/08/01 | 658010 | systems/win32/miktex/tm/packages/files.csv.lzma +2022/08/01 | 65130 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma +2022/08/01 | 63802 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma +2022/08/01 | 63239 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma +2022/08/01 | 630434 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma +2022/08/01 | 627828 | systems/texlive/tlnet/archive/colortbl.doc.r64015.tar.xz +2022/08/01 | 62359 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma +2022/08/01 | 599107 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma +2022/08/01 | 58633 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma +2022/08/01 | 5808548 | systems/texlive/tlnet/install-tl-unx.tar.gz +2022/08/01 | 57503 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma +2022/08/01 | 57501 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma +2022/08/01 | 57317 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma +2022/08/01 | 565081 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma +2022/08/01 | 55319 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma +2022/08/01 | 5439 | macros/latex/contrib/projlib/README.md +2022/08/01 | 527570 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma +2022/08/01 | 52628 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma +2022/08/01 | 52369 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma +2022/08/01 | 52037 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma +2022/08/01 | 50200 | macros/latex/contrib/proflycee/tex/ProfLycee.sty +2022/08/01 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2022/08/01 | 48852 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma +2022/08/01 | 481894 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma +2022/08/01 | 48037 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma +2022/08/01 | 45795 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma +2022/08/01 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +2022/08/01 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc +2022/08/01 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc +2022/08/01 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc +2022/08/01 | 45492 | systems/texlive/tlnet/archive/minted.source.r64017.tar.xz +2022/08/01 | 43889 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma +2022/08/01 | 43616 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma +2022/08/01 | 43527 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma +2022/08/01 | 42206 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm +2022/08/01 | 419140 | systems/texlive/tlnet/archive/texlive-scripts.doc.r64013.tar.xz +2022/08/01 | 41190 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma +2022/08/01 | 41179 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma +2022/08/01 | 40023 | macros/latex/contrib/projlib.zip +2022/08/01 | 3948 | systems/texlive/tlnet/archive/yb-book.r64017.tar.xz +2022/08/01 | 394143 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma +2022/08/01 | 37505 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma +2022/08/01 | 37050 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma +2022/08/01 | 3676 | systems/texlive/tlnet/archive/colortbl.r64015.tar.xz +2022/08/01 | 363456 | graphics/pgf/contrib/customdice.zip +2022/08/01 | 35264 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma +2022/08/01 | 352465 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma +2022/08/01 | 35228 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma +2022/08/01 | 33862 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma +2022/08/01 | 3379 | macros/latex/contrib/projlib/ProjLib.ins +2022/08/01 | 325980 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma +2022/08/01 | 325483 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma +2022/08/01 | 32074 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma +2022/08/01 | 31586 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma +2022/08/01 | 31563 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma +2022/08/01 | 30570 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma +2022/08/01 | 295944 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma +2022/08/01 | 288508 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma +2022/08/01 | 288507 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma +2022/08/01 | 286685 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma +2022/08/01 | 28510 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma +2022/08/01 | 2821672 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma +2022/08/01 | 27463 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma +2022/08/01 | 270467 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma +2022/08/01 | 25493364 | systems/texlive/tlnet/install-tl.zip +2022/08/01 | 25118 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma +2022/08/01 | 247208 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma +2022/08/01 | 245151 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma +2022/08/01 | 243276 | systems/texlive/tlnet/archive/yb-book.doc.r64017.tar.xz +2022/08/01 | 24211 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma +2022/08/01 | 2396632 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +2022/08/01 | 23949 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma +2022/08/01 | 213846 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma +2022/08/01 | 209138 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma +2022/08/01 | 206508 | macros/latex/contrib/projlib/ProjLib.dtx +2022/08/01 | 20466260 | systems/texlive/tlnet/install-tl-windows.exe +2022/08/01 | 203420 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma +2022/08/01 | 2023131 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma +2022/08/01 | 196212 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma +2022/08/01 | 19106 | macros/latex/contrib/projlib/LICENSE +2022/08/01 | 18510 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma +2022/08/01 | 18381 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma +2022/08/01 | 181725 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma +2022/08/01 | 17574463 | systems/texlive/tlnet/tlpkg/texlive.tlpdb +2022/08/01 | 173177 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma +2022/08/01 | 169677 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma +2022/08/01 | 155430 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma +2022/08/01 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 +2022/08/01 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 +2022/08/01 | 1503054 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma +2022/08/01 | 1480217 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma +2022/08/01 | 1478686 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma +2022/08/01 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2022/08/01 | 1458151 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma +2022/08/01 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2022/08/01 | 14434 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma +2022/08/01 | 140012 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma +2022/08/01 | 1362634 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma +2022/08/01 | 1362511 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma +2022/08/01 | 135464 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma +2022/08/01 | 1323742 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma +2022/08/01 | 12780 | systems/texlive/tlnet/archive/colortbl.source.r64015.tar.xz +2022/08/01 | 1172 | systems/win32/miktex/tm/packages/next/pr.ini +2022/08/01 | 1161749 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma +2022/08/01 | 115579 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma +2022/08/01 | 113500 | systems/texlive/tlnet/archive/texlive-scripts.r64013.tar.xz +2022/08/01 | 112979 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma +2022/08/01 | 112879 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma +2022/08/01 | 111667 | macros/xetex/latex/hfutthesis/hfutthesis.cls +2022/08/01 | 109650 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma +2022/08/01 | 107436 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma +2022/08/01 | 104921 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma +2022/08/01 | 104452 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex +2022/08/01 | 103598 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma +2022/08/01 | 103246 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma +2022/07/31 | 97095 | graphics/pgf/contrib/bodeplot/bodeplot.dtx 2022/07/31 | 96780 | macros/latex/contrib/create-theorem/create-theorem.sty -2022/07/31 | 957 | systems/win32/miktex/tm/packages/pr.ini -2022/07/31 | 95467 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma 2022/07/31 | 90331 | macros/latex/contrib/create-theorem.zip -2022/07/31 | 88483 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma -2022/07/31 | 8826 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma -2022/07/31 | 824995 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma -2022/07/31 | 81450 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma 2022/07/31 | 799628 | systems/texlive/tlnet/archive/hfutthesis.doc.r64009.tar.xz -2022/07/31 | 79064 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma -2022/07/31 | 77210 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma -2022/07/31 | 769649 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma -2022/07/31 | 74100 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma -2022/07/31 | 73686 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma -2022/07/31 | 73265 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma -2022/07/31 | 72978 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma -2022/07/31 | 70940 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma -2022/07/31 | 682216 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma -2022/07/31 | 68147 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma +2022/07/31 | 7249 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2022/07/31 | 67899 | macros/latex/contrib/create-theorem/create-theorem-doc.pdf 2022/07/31 | 676 | macros/latex/contrib/create-theorem/README.md -2022/07/31 | 658474 | systems/win32/miktex/tm/packages/next/files.csv.lzma -2022/07/31 | 658010 | systems/win32/miktex/tm/packages/files.csv.lzma -2022/07/31 | 65130 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma 2022/07/31 | 640665 | macros/latex/contrib/colortbl.zip -2022/07/31 | 63802 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma -2022/07/31 | 63241 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma -2022/07/31 | 630433 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma -2022/07/31 | 62357 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma -2022/07/31 | 599104 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma 2022/07/31 | 5868 | systems/texlive/tlnet/archive/unbtex.r64008.tar.xz -2022/07/31 | 58633 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma -2022/07/31 | 5808816 | systems/texlive/tlnet/install-tl-unx.tar.gz -2022/07/31 | 57504 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma -2022/07/31 | 57503 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma -2022/07/31 | 57317 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma -2022/07/31 | 565082 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma -2022/07/31 | 55320 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma -2022/07/31 | 527570 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma -2022/07/31 | 52627 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma -2022/07/31 | 52370 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma -2022/07/31 | 52037 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma -2022/07/31 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 -2022/07/31 | 48851 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma -2022/07/31 | 481890 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma -2022/07/31 | 48037 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma -2022/07/31 | 45795 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma -2022/07/31 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc -2022/07/31 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc -2022/07/31 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc -2022/07/31 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc -2022/07/31 | 43889 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma -2022/07/31 | 43618 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma -2022/07/31 | 43526 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma -2022/07/31 | 419136 | systems/texlive/tlnet/archive/texlive-scripts.doc.r64007.tar.xz -2022/07/31 | 41190 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma -2022/07/31 | 41180 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma -2022/07/31 | 394144 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma -2022/07/31 | 37507 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma -2022/07/31 | 37051 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma -2022/07/31 | 35264 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma -2022/07/31 | 352464 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma -2022/07/31 | 35230 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma -2022/07/31 | 33863 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma -2022/07/31 | 325981 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma -2022/07/31 | 325482 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma -2022/07/31 | 32074 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma -2022/07/31 | 31586 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma -2022/07/31 | 31563 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma -2022/07/31 | 30571 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma -2022/07/31 | 295946 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma -2022/07/31 | 288475 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma -2022/07/31 | 288468 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma -2022/07/31 | 286685 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma -2022/07/31 | 28510 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma -2022/07/31 | 2821671 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma -2022/07/31 | 27463 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma -2022/07/31 | 270467 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma +2022/07/31 | 534 | graphics/pgf/contrib/customdice/README.md +2022/07/31 | 534 | customdice/README.md +2022/07/31 | 45786 | graphics/pgf/contrib/customdice/customdice.dtx +2022/07/31 | 45786 | customdice/customdice.dtx +2022/07/31 | 417 | graphics/pgf/contrib/customdice/customdice.ins +2022/07/31 | 417 | customdice/customdice.ins +2022/07/31 | 369482 | graphics/pgf/contrib/customdice/customdice.pdf +2022/07/31 | 369482 | customdice/customdice.pdf +2022/07/31 | 3623 | graphics/pgf/contrib/bodeplot/README.md 2022/07/31 | 26046 | macros/latex/contrib/create-theorem/create-theorem-doc.tex 2022/07/31 | 25504 | systems/texlive/tlnet/archive/hfutthesis.r64009.tar.xz -2022/07/31 | 25493369 | systems/texlive/tlnet/install-tl.zip -2022/07/31 | 25118 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma -2022/07/31 | 247208 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma -2022/07/31 | 245152 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma -2022/07/31 | 24212 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma -2022/07/31 | 23950 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma -2022/07/31 | 2394816 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz -2022/07/31 | 213847 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma -2022/07/31 | 209139 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma -2022/07/31 | 20466517 | systems/texlive/tlnet/install-tl-windows.exe -2022/07/31 | 203422 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma -2022/07/31 | 2023132 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma -2022/07/31 | 196212 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma 2022/07/31 | 19106 | macros/latex/contrib/create-theorem/LICENSE -2022/07/31 | 18511 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma -2022/07/31 | 18381 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma -2022/07/31 | 181724 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma -2022/07/31 | 17574247 | systems/texlive/tlnet/tlpkg/texlive.tlpdb -2022/07/31 | 173176 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma -2022/07/31 | 169679 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma 2022/07/31 | 1632 | systems/texlive/tlnet/archive/collection-publishers.r64009.tar.xz -2022/07/31 | 155430 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma -2022/07/31 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 -2022/07/31 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 -2022/07/31 | 1503055 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma -2022/07/31 | 1481323 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma -2022/07/31 | 1479214 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma -2022/07/31 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 -2022/07/31 | 1458152 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma -2022/07/31 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 -2022/07/31 | 14435 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma 2022/07/31 | 1441108 | systems/texlive/tlnet/archive/unbtex.doc.r64008.tar.xz -2022/07/31 | 140012 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma -2022/07/31 | 1362056 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma -2022/07/31 | 1361921 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma -2022/07/31 | 135464 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma -2022/07/31 | 1323744 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma +2022/07/31 | 1416 | graphics/pgf/contrib/bodeplot/bodeplot.ins 2022/07/31 | 12 | macros/latex/contrib/create-theorem/DEPENDS.txt -2022/07/31 | 1172 | systems/win32/miktex/tm/packages/next/pr.ini -2022/07/31 | 1161751 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma -2022/07/31 | 115579 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma -2022/07/31 | 113516 | systems/texlive/tlnet/archive/texlive-scripts.r64007.tar.xz -2022/07/31 | 112981 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma -2022/07/31 | 112879 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma -2022/07/31 | 109651 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma -2022/07/31 | 107437 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma -2022/07/31 | 104922 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma -2022/07/31 | 103599 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma -2022/07/31 | 103247 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma +2022/07/31 | 1062592 | graphics/pgf/contrib/bodeplot/bodeplot.pdf 2022/07/30 | 982924 | systems/texlive/tlnet/archive/markdown.doc.r64000.tar.xz 2022/07/30 | 980504 | systems/win32/miktex/tm/packages/markdown__doc.tar.lzma 2022/07/30 | 979888 | systems/texlive/tlnet/archive/hithesis.doc.r64005.tar.xz @@ -152,7 +192,6 @@ 2022/07/30 | 74095 | systems/win32/miktex/tm/packages/miktex-lzma-bin-x64-2.9.tar.lzma 2022/07/30 | 73657 | systems/win32/miktex/tm/packages/miktex-web-bin-x64-2.9.tar.lzma 2022/07/30 | 734243 | systems/win32/miktex/tm/packages/scripture__doc.tar.lzma -2022/07/30 | 7324 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2022/07/30 | 73245 | systems/win32/miktex/tm/packages/miktex-graphite2-bin-x64-2.9.tar.lzma 2022/07/30 | 72998 | systems/win32/miktex/tm/packages/miktex-ps2pk-bin-x64-2.9.tar.lzma 2022/07/30 | 7197 | systems/win32/miktex/tm/packages/pbalance.tar.lzma @@ -313,7 +352,6 @@ 2022/07/29 | 9391 | macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles.tex 2022/07/29 | 92 | macros/xetex/latex/hfutthesis/hfut-chapters/complementary.tex 2022/07/29 | 898 | macros/latex/contrib/pbalance/README.md -2022/07/29 | 880400 | macros/xetex/latex/hfutthesis.zip 2022/07/29 | 832411 | macros/generic/markdown/markdown.pdf 2022/07/29 | 8200 | systems/texlive/tlnet/archive/csassignments.source.r63992.tar.xz 2022/07/29 | 75 | macros/generic/markdown/examples/scientists.csv @@ -460,7 +498,6 @@ 2022/07/29 | 11711 | macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-circles.tex 2022/07/29 | 11441 | macros/latex/contrib/unbtex/unbtex-example/referencias.bib 2022/07/29 | 1137373 | macros/generic/markdown.zip -2022/07/29 | 111667 | macros/xetex/latex/hfutthesis/hfutthesis.cls 2022/07/29 | 11063 | macros/latex/contrib/tkz/tkz-euclide/README.md 2022/07/29 | 1104426 | macros/latex/contrib/tkz/tkz-euclide/doc/tkz-euclide.pdf 2022/07/29 | 106972 | systems/texlive/tlnet/archive/csassignments.doc.r63992.tar.xz @@ -1064,7 +1101,6 @@ 2022/07/27 | 1003 | graphics/circuit_macros/examples/ex15.m4 2022/07/26 | 99463 | systems/win32/miktex/tm/packages/miktex-mfware-bin-2.9.tar.lzma 2022/07/26 | 99307 | systems/win32/miktex/tm/packages/miktex-epstopdf-bin-2.9.tar.lzma -2022/07/26 | 9804 | systems/texlive/tlnet/archive/create-theorem.r63975.tar.xz 2022/07/26 | 97375 | systems/win32/miktex/tm/packages/miktex-gd-bin-2.9.tar.lzma 2022/07/26 | 96681 | systems/win32/miktex/tm/packages/miktex-gregorio-bin-2.9.tar.lzma 2022/07/26 | 96231 | macros/latex/contrib/wrapstuff/wrapstuff.dtx @@ -1074,7 +1110,6 @@ 2022/07/26 | 83765 | systems/win32/miktex/tm/packages/miktex-bibtex8bit-bin-2.9.tar.lzma 2022/07/26 | 81011 | macros/latex/contrib/rec-thy/rec-thy.sty 2022/07/26 | 79370 | systems/win32/miktex/tm/packages/miktex-png-bin-2.9.tar.lzma -2022/07/26 | 78084 | systems/texlive/tlnet/archive/create-theorem.doc.r63975.tar.xz 2022/07/26 | 7735 | systems/win32/miktex/tm/packages/miktex-md5-bin-2.9.tar.lzma 2022/07/26 | 754258 | systems/win32/miktex/tm/packages/miktex-pdftex-bin-2.9.tar.lzma 2022/07/26 | 745272 | systems/texlive/tlnet/archive/apa7.doc.r63974.tar.xz @@ -1177,127 +1212,3 @@ 2022/07/26 | 11371 | macros/xetex/latex/exam-zh/examples/example-single.tex 2022/07/26 | 1023495 | systems/win32/miktex/tm/packages/miktex-asymptote-bin-2.9.tar.lzma 2022/07/26 | 100549 | systems/win32/miktex/tm/packages/miktex-texware-bin-2.9.tar.lzma -2022/07/25 | 988472 | systems/win32/miktex/tm/packages/mcf2graph__doc.tar.lzma -2022/07/25 | 983148 | systems/win32/miktex/tm/packages/gfsneohellenic.tar.lzma -2022/07/25 | 964 | macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.ins -2022/07/25 | 926666 | systems/win32/miktex/tm/packages/pseudo__doc.tar.lzma -2022/07/25 | 924 | systems/win32/miktex/tm/packages/gfsneohellenic__source.tar.lzma -2022/07/25 | 9091 | macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.cls -2022/07/25 | 89918 | systems/win32/miktex/tm/packages/xecjk__source.tar.lzma -2022/07/25 | 89652 | systems/win32/miktex/tm/packages/ctex__source.tar.lzma -2022/07/25 | 8925 | systems/win32/miktex/tm/packages/projlib__doc.tar.lzma -2022/07/25 | 8817 | systems/win32/miktex/tm/packages/zhnumber.tar.lzma -2022/07/25 | 870584 | systems/win32/miktex/tm/packages/babel__doc.tar.lzma -2022/07/25 | 854690 | systems/win32/miktex/tm/packages/kaytannollista-latexia.tar.lzma -2022/07/25 | 854492 | macros/latex/contrib/apa7.zip -2022/07/25 | 8536 | systems/texlive/tlnet/archive/projlib.doc.r63970.tar.xz -2022/07/25 | 8474 | systems/win32/miktex/tm/packages/figput.tar.lzma -2022/07/25 | 736763 | systems/win32/miktex/tm/packages/bodeplot__doc.tar.lzma -2022/07/25 | 7365 | systems/win32/miktex/tm/packages/tkz-doc.tar.lzma -2022/07/25 | 72869 | systems/win32/miktex/tm/packages/create-theorem__doc.tar.lzma -2022/07/25 | 72129 | macros/latex/contrib/kfupm-math-exam.zip -2022/07/25 | 718221 | systems/win32/miktex/tm/packages/babel__source.tar.lzma -2022/07/25 | 7160319 | systems/win32/miktex/tm/packages/hvfloat__doc.tar.lzma -2022/07/25 | 712537 | systems/win32/miktex/tm/packages/latex-base-dev__source.tar.lzma -2022/07/25 | 69692 | macros/latex/contrib/apa7/samples/shortsample.pdf -2022/07/25 | 6943 | systems/win32/miktex/tm/packages/pseudo.tar.lzma -2022/07/25 | 6873 | macros/latex/contrib/apa7/apa7.ins -2022/07/25 | 6658 | systems/win32/miktex/tm/packages/jpneduenumerate__source.tar.lzma -2022/07/25 | 66031 | macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.pdf -2022/07/25 | 656988 | systems/win32/miktex/tm/packages/polyglossia__doc.tar.lzma -2022/07/25 | 6551 | systems/win32/miktex/tm/packages/create-theorem__source.tar.lzma -2022/07/25 | 64939 | systems/win32/miktex/tm/packages/siunitx.tar.lzma -2022/07/25 | 635749 | systems/win32/miktex/tm/packages/tabvar__source.tar.lzma -2022/07/25 | 622867 | systems/win32/miktex/tm/packages/tikzfill__doc.tar.lzma -2022/07/25 | 61271 | systems/win32/miktex/tm/packages/pseudo__source.tar.lzma -2022/07/25 | 589305 | systems/win32/miktex/tm/packages/l3kernel__source.tar.lzma -2022/07/25 | 58338 | systems/win32/miktex/tm/packages/crefthe__doc.tar.lzma -2022/07/25 | 56034 | systems/win32/miktex/tm/packages/tkz-base__source.tar.lzma -2022/07/25 | 556671 | macros/latex/contrib/apa7/apa7.pdf -2022/07/25 | 538376 | systems/win32/miktex/tm/packages/figput__doc.tar.lzma -2022/07/25 | 531709 | systems/win32/miktex/tm/packages/feyn__doc.tar.lzma -2022/07/25 | 52314 | systems/win32/miktex/tm/packages/mcf2graph__source.tar.lzma -2022/07/25 | 52273 | systems/win32/miktex/tm/packages/yfonts-otf.tar.lzma -2022/07/25 | 5150 | systems/win32/miktex/tm/packages/bodeplot.tar.lzma -2022/07/25 | 4806 | systems/win32/miktex/tm/packages/crefthe__source.tar.lzma -2022/07/25 | 4620 | systems/win32/miktex/tm/packages/tikzfill.tar.lzma -2022/07/25 | 4582 | systems/win32/miktex/tm/packages/yfonts-otf__source.tar.lzma -2022/07/25 | 457933 | systems/win32/miktex/tm/packages/lwarp__source.tar.lzma -2022/07/25 | 4406 | systems/win32/miktex/tm/packages/textpos.tar.lzma -2022/07/25 | 4370 | systems/win32/miktex/tm/packages/tikzbricks__source.tar.lzma -2022/07/25 | 4274 | systems/win32/miktex/tm/packages/runcode.tar.lzma -2022/07/25 | 4057011 | systems/win32/miktex/tm/packages/bidi__doc.tar.lzma -2022/07/25 | 385134 | systems/win32/miktex/tm/packages/gfsneohellenic__doc.tar.lzma -2022/07/25 | 3758 | systems/win32/miktex/tm/packages/runcode__source.tar.lzma -2022/07/25 | 3545 | systems/win32/miktex/tm/packages/jigsaw__source.tar.lzma -2022/07/25 | 351053 | systems/win32/miktex/tm/packages/tkz-base__doc.tar.lzma -2022/07/25 | 348181 | systems/win32/miktex/tm/packages/textpos__doc.tar.lzma -2022/07/25 | 34549 | systems/win32/miktex/tm/packages/tkz-doc__source.tar.lzma -2022/07/25 | 3418 | systems/win32/miktex/tm/packages/showlabels.tar.lzma -2022/07/25 | 34186 | systems/win32/miktex/source/CHANGELOG.md -2022/07/25 | 336047 | systems/win32/miktex/tm/packages/eulerpx__doc.tar.lzma -2022/07/25 | 3359 | systems/win32/miktex/tm/packages/crefthe.tar.lzma -2022/07/25 | 326453 | systems/win32/miktex/tm/packages/figput__source.tar.lzma -2022/07/25 | 3231 | systems/win32/miktex/tm/packages/eulerpx__source.tar.lzma -2022/07/25 | 30830 | systems/win32/miktex/tm/packages/textpos__source.tar.lzma -2022/07/25 | 3069227 | systems/win32/miktex/tm/packages/lwarp__doc.tar.lzma -2022/07/25 | 30171400 | systems/win32/miktex/tm/packages/latex-base-dev__doc.tar.lzma -2022/07/25 | 3013 | systems/win32/miktex/tm/packages/gitver.tar.lzma -2022/07/25 | 2967 | systems/win32/miktex/tm/packages/eulerpx.tar.lzma -2022/07/25 | 296631 | systems/win32/miktex/tm/packages/gfsneohellenicmath.tar.lzma -2022/07/25 | 2956 | systems/win32/miktex/tm/packages/jpneduenumerate.tar.lzma -2022/07/25 | 294352 | systems/win32/miktex/tm/packages/zhnumber__doc.tar.lzma -2022/07/25 | 2701 | systems/win32/miktex/tm/packages/gitver__source.tar.lzma -2022/07/25 | 265514 | systems/win32/miktex/tm/packages/tikzbricks__doc.tar.lzma -2022/07/25 | 25671 | systems/win32/miktex/tm/packages/projlib__source.tar.lzma -2022/07/25 | 25392 | systems/texlive/tlnet/archive/projlib.source.r63970.tar.xz -2022/07/25 | 25281 | systems/win32/miktex/tm/packages/projlib.tar.lzma -2022/07/25 | 25248 | systems/texlive/tlnet/archive/projlib.r63970.tar.xz -2022/07/25 | 2462 | systems/win32/miktex/tm/packages/tikzbricks.tar.lzma -2022/07/25 | 233705 | systems/win32/miktex/tm/packages/showlabels__doc.tar.lzma -2022/07/25 | 22905 | macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-presentation.tex -2022/07/25 | 225943 | systems/win32/miktex/tm/packages/latex-base-dev.tar.lzma -2022/07/25 | 221873 | systems/win32/miktex/tm/packages/xecjk.tar.lzma -2022/07/25 | 211753 | systems/win32/miktex/tm/packages/lwarp.tar.lzma -2022/07/25 | 206847 | systems/win32/miktex/tm/packages/xpinyin__doc.tar.lzma -2022/07/25 | 204049 | macros/latex/contrib/apa7/samples/longsample.pdf -2022/07/25 | 202179 | systems/win32/miktex/tm/packages/xpinyin.tar.lzma -2022/07/25 | 1948 | systems/win32/miktex/tm/packages/gfsneohellenicmath__doc.tar.lzma -2022/07/25 | 191836 | systems/win32/miktex/tm/packages/babel.tar.lzma -2022/07/25 | 18915 | systems/win32/miktex/tm/packages/feyn__source.tar.lzma -2022/07/25 | 184888 | systems/win32/miktex/tm/packages/runcode__doc.tar.lzma -2022/07/25 | 1844007 | systems/win32/miktex/tm/packages/hvfloat__source.tar.lzma -2022/07/25 | 17864 | CTAN.sites -2022/07/25 | 171884 | systems/win32/miktex/tm/packages/l3kernel.tar.lzma -2022/07/25 | 1717 | systems/win32/miktex/tm/packages/jigsaw.tar.lzma -2022/07/25 | 171683 | systems/win32/miktex/tm/packages/jigsaw__doc.tar.lzma -2022/07/25 | 16557 | systems/win32/miktex/tm/packages/showlabels__source.tar.lzma -2022/07/25 | 16392 | systems/win32/miktex/tm/packages/tkz-base.tar.lzma -2022/07/25 | 1621189 | systems/win32/miktex/tm/packages/xecjk__doc.tar.lzma -2022/07/25 | 16141 | systems/win32/miktex/tm/packages/bodeplot__source.tar.lzma -2022/07/25 | 158064 | systems/win32/miktex/tm/packages/polyglossia__source.tar.lzma -2022/07/25 | 1557 | macros/latex/contrib/apa7/README.txt -2022/07/25 | 155339 | systems/win32/miktex/tm/packages/jpneduenumerate__doc.tar.lzma -2022/07/25 | 148152 | systems/win32/miktex/tm/packages/bidi__source.tar.lzma -2022/07/25 | 14771 | systems/win32/miktex/tm/packages/zhnumber__source.tar.lzma -2022/07/25 | 145643 | macros/latex/contrib/apa7/apa7.dtx -2022/07/25 | 142843 | systems/win32/miktex/tm/packages/kaytannollista-latexia__source.tar.lzma -2022/07/25 | 142790 | systems/win32/miktex/tm/packages/yfonts-otf__doc.tar.lzma -2022/07/25 | 140141 | systems/win32/miktex/tm/packages/gitver__doc.tar.lzma -2022/07/25 | 1381 | systems/win32/miktex/tm/packages/tabvar__doc.tar.lzma -2022/07/25 | 131022 | systems/win32/miktex/tm/packages/bidi.tar.lzma -2022/07/25 | 130902 | systems/win32/miktex/tm/packages/ctex.tar.lzma -2022/07/25 | 1246134 | systems/win32/miktex/tm/packages/siunitx__doc.tar.lzma -2022/07/25 | 12260 | systems/win32/miktex/tm/packages/feyn.tar.lzma -2022/07/25 | 12014 | systems/win32/miktex/tm/packages/hvfloat.tar.lzma -2022/07/25 | 11921 | macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.dtx -2022/07/25 | 118950 | systems/win32/miktex/tm/packages/polyglossia.tar.lzma -2022/07/25 | 11675766 | systems/win32/miktex/tm/packages/l3kernel__doc.tar.lzma -2022/07/25 | 116649 | systems/win32/miktex/tm/packages/siunitx__source.tar.lzma -2022/07/25 | 1145403 | systems/win32/miktex/tm/packages/ctex__doc.tar.lzma -2022/07/25 | 1133 | macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.tex -2022/07/25 | 1126817 | support/TeX4ht/source/tex4ht-4ht.tex -2022/07/25 | 1122 | macros/latex/contrib/kfupm-math-exam/README.txt -2022/07/25 | 11199 | systems/win32/miktex/tm/packages/xpinyin__source.tar.lzma -2022/07/25 | 1079 | macros/latex/contrib/kfupm-math-exam/LICENSE -2022/07/25 | 10009 | systems/win32/miktex/tm/packages/create-theorem.tar.lzma diff --git a/customdice/README.md b/customdice/README.md new file mode 100644 index 0000000000..a898f330ce --- /dev/null +++ b/customdice/README.md @@ -0,0 +1,11 @@ +# customdice: LaTeX package for drawing customisable dice + +`customdice` is a package for LaTeX, LuaLaTeX and XeTeX that provides functionality for drawing dice. The aim is to provide highly-customisable but simple-to-use commands, allowing: + +- adding custom text to dice faces; +- control over colouring; +- control over sizing. + +By [Peter Rowlett](https://github.com/prowlett/). + +The package is licenced under [Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/). diff --git a/customdice/customdice.dtx b/customdice/customdice.dtx new file mode 100644 index 0000000000..ac44ae9fd9 --- /dev/null +++ b/customdice/customdice.dtx @@ -0,0 +1,806 @@ +%\iffalse meta-comment +%Copyright (c) 2022 Peter Rowlett +% +%The package is licenced under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ +%\fi +%\title{customdice v1.0} +%\author{Peter Rowlett} +%\maketitle +% +%\centerline{\Huge\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\bigskip +% +%\verb|customdice| is a package for \LaTeX\, Lua\LaTeX\ and Xe\TeX\ that provides functionality for drawing dice. The aim is to provide highly-customisable but simple-to-use commands, allowing: \begin{itemize} +% \item adding custom text to dice faces; +% \item control over colouring; +% \item control over sizing. +%\end{itemize} +% +%The package is licenced under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). To view a copy of this license, visit \url{http://creativecommons.org/licenses/by-sa/4.0/} +% +%\tableofcontents +% +% +%\section{Motivation} +% +%I've long struggled to find a dice package I fully like. I have been using epsdice, but it only offers white or black standard dice and I found I wanted to draw dice with other text on the faces so I wrote this package which draws the dice in TikZ and offers lots of customisation around what is displayed on the dice face, colour and size. +% +%\section{Basic usage} +% +%\subsection{Standard dice} +% +%Standard dice faces are created using \verb|\dice{num}| where \(\textrm{num}\in\{1,2,3,4,5,6\}\). +% +%For example +% +%\begin{verbatim} +%\dice{1} \dice{2} \dice{3} \dice{4} \dice{5} \dice{6}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \dice{1} \dice{2} \dice{3} \dice{4} \dice{5} \dice{6}} +% +%\subsection{Big dot dice} +% +%The command \verb|\bigdotdice| produces a dice face with one big dot in the centre. +% +%For example +% +%\begin{verbatim} +%\bigdotdice\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \bigdotdice} +% +%\subsection{Text on dice} +% +%The command \verb|\textdice{text}| produces a dice face with \verb|text| on it. +% +%For example +% +%\begin{verbatim} +%\textdice{7} +%\textdice{P} +%\textdice{\(\aleph\)}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \textdice{7} \textdice{P} \textdice{\(\aleph\)}}\bigskip +% +%Sometimes when drawing text on dice, there may be ambiguity about which way up a character goes. For this reason a second command \verb|\textdicebot{text}| is provided which draws a small line under \verb|text| (`bot' is to indicate `bottom line'). +% +%For example +% +%\begin{verbatim} +%\textdicebot{\(\cup\)} +%\textdicebot{\(\cap\)} +%\textdicebot{\sffamily W}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \textdicebot{\(\cup\)} \textdicebot{\(\cap\)} \textdicebot{\sffamily W}} +% +%\subsection{Layout dice} +% +%A command \verb|\layoutdice{face1}{face2}{face3}{face4}{face5}{face6}| takes six inputs and places them on an expanded net of a dice cube. Important: this command takes six inputs in numerical order and displays those inputs where they would sit on a standard die with \setdicebaseline{0.35}\Largedice{1}\setdicebaseline{0.02} oriented at the top of the diagram. +% +%For example +% +%\begin{verbatim} +%\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +%\layoutdice{\dice{6}}{\dice{5}}{\dice{3}}{\dice{4}}{\dice{2}}{\dice{1}} +%\layoutdice{\textdice{A}}{\textdice{B}}{\textdice{C}}{\textdice{D}}{\textdice{E}}{\textdice{F}}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice{6}}{\dice{5}}{\dice{3}}{\dice{4}}{\dice{2}}{\dice{1}} +% \layoutdice{\textdice{A}}{\textdice{B}}{\textdice{C}}{\textdice{D}}{\textdice{E}}{\textdice{F}}} +% +%\subsection{Colour} +% +%By default, dice are black on white. This can be changed by passing a pair of colour names \verb|[background,foreground]| to any of the commands above. +% +%For example +% +%\begin{verbatim} +%\dice[black,white]{3} +%\dice[violet,white]{5} +%\dice[yellow,black]{6} +%\bigdotdice[white,blue] +%\textdice[gray,green]{\(\aleph\)} +%\textdicebot[magenta,blue]{\sffamily W}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \dice[black,white]{3} \dice[violet,white]{5} \dice[yellow,black]{6} \bigdotdice[white,blue] \textdice[gray,green]{\(\aleph\)} \textdicebot[magenta,blue]{\sffamily W}}\bigskip +% +%Any defined colour name can be used, including ones you defined yourself. For example, +% +%\begin{verbatim} +%\usepackage{xcolor} +%\definecolor{airforceblue}{rgb}{0.36, 0.54, 0.66} % latexcolor.com +%\definecolor{papayawhip}{rgb}{1.0, 0.94, 0.84} % latexcolor.com +%\dice[airforceblue,papayawhip]{5}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \definecolor{airforceblue}{rgb}{0.36, 0.54, 0.66} +% \definecolor{papayawhip}{rgb}{1.0, 0.94, 0.84} +% \dice[airforceblue,papayawhip]{5}} +% +%\newpage +% +%\subsection{Size} +% +%The dice size responds to the current font size, as demonstrated below. (Actually, most of the example output in this document is done within \verb|\Huge| for visibility.)\bigskip +% +%\begin{tabular}{rl} +% \verb|\tiny| & {\tiny\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +% \verb|\scriptsize| & {\scriptsize\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +% \verb|\footnotesize| & {\footnotesize\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +% \verb|\small| & {\small\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +% \verb|\normalsize| & {\normalsize\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +% \verb|\large| & {\large\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +% \verb|\Large| & {\Large\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +% \verb|\LARGE| & {\LARGE\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +% \verb|\huge| & {\huge\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +% \verb|\Huge| & {\Huge\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +%\end{tabular}\bigskip +% +% More detail on customising sizes is given in the advanced usage section \ref{sec:advancedsize}. +% +%\newpage +% +%For convenience, a series of commands are defined for each dice type based on the standard LaTeX size names. While e.g. \verb|\dice{num}| uses the current font size, e.g. \verb|\Largedice{num}| is always \verb|\Large|. +% +%\begin{center} +% \begin{tabular}{rl} +% \textbf{Command} & \textbf{Example output}\\ +% \verb|\tinydice| & \tinydice{5}\\ +% \verb|\scriptsizedice| & \scriptsizedice{5}\\ +% \verb|\footnotesizedice| & \footnotesizedice{5}\\ +% \verb|\smalldice| & \smalldice{5}\\ +% \verb|\normalsizedice| & \normalsizedice{5}\\ +% \verb|\largedice| & \largedice{5}\\ +% \verb|\Largedice| & \Largedice{5}\\ +% \verb|\LARGEdice| & \LARGEdice{5}\\ +% \verb|\hugedice| & \hugedice{5}\\ +% \verb|\Hugedice| & \Hugedice{5}\\ +% \verb|\tinybigdotdice| & \tinybigdotdice\\ +% \verb|\scriptsizebigdotdice| & \scriptsizebigdotdice\\ +% \verb|\footnotesizebigdotdice| & \footnotesizebigdotdice\\ +% \verb|\smallbigdotdice| & \smallbigdotdice\\ +% \verb|\normalsizebigdotdice| & \normalsizebigdotdice\\ +% \verb|\largebigdotdice| & \largebigdotdice\\ +% \verb|\Largebigdotdice| & \Largebigdotdice\\ +% \verb|\LARGEbigdotdice| & \LARGEbigdotdice\\ +% \verb|\hugebigdotdice| & \hugebigdotdice\\ +% \verb|\Hugebigdotdice| & \Hugebigdotdice\\ +% \verb|\tinytextdice| & \tinytextdice{Q}\\ +% \verb|\scriptsizetextdice| & \scriptsizetextdice{Q}\\ +% \verb|\footnotesizetextdice| & \footnotesizetextdice{Q}\\ +% \verb|\smalltextdice| & \smalltextdice{Q}\\ +% \verb|\normalsizetextdice| & \normalsizetextdice{Q}\\ +% \verb|\largetextdice| & \largetextdice{Q}\\ +% \verb|\Largetextdice| & \Largetextdice{Q}\\ +% \verb|\LARGEtextdice| & \LARGEtextdice{Q}\\ +% \verb|\hugetextdice| & \hugetextdice{Q}\\ +% \verb|\Hugetextdice| & \Hugetextdice{Q}\\ +% \verb|\tinytextdicebot| & \tinytextdicebot{\sffamily d}\\ +% \verb|\scriptsizetextdicebot| & \scriptsizetextdicebot{\sffamily d}\\ +% \verb|\footnotesizetextdicebot| & \footnotesizetextdicebot{\sffamily d}\\ +% \verb|\smalltextdicebot| & \smalltextdicebot{\sffamily d}\\ +% \verb|\normalsizetextdicebot| & \normalsizetextdicebot{\sffamily d}\\ +% \verb|\largetextdicebot| & \largetextdicebot{\sffamily d}\\ +% \verb|\Largetextdicebot| & \Largetextdicebot{\sffamily d}\\ +% \verb|\LARGEtextdicebot| & \LARGEtextdicebot{\sffamily d}\\ +% \verb|\hugetextdicebot| & \hugetextdicebot{\sffamily d}\\ +% \verb|\Hugetextdicebot| & \Hugetextdicebot{\sffamily d}\\ +% \end{tabular} +%\end{center} +% +%\section{Advanced usage notes} +% +%\subsection{Dependencies} +% +%customdice uses TikZ and etoolbox. +% +%\subsection{Rotated text} +% +%You can rotate what is displayed on the face using \verb|\rotatebox{}| from the \verb|rotating| package. +% +%For example +% +%\begin{verbatim} +%\usepackage{rotating} +%\textdice[yellow,black]{\rotatebox{180}{2}} +%\textdice[white,blue]{\rotatebox{90}{\(\mathbb{R}\)}}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \textdice[yellow,black]{\rotatebox{180}{2}} \textdice[white,blue]{\rotatebox{90}{\(\mathbb{R}\)}}} +% +%Sometimes you might need to rotate the whole box, for example when using \verb|\dicetextbot|. +% +%For example compare +% +%\begin{verbatim} +%\usepackage{rotating} +%\textdicebot{\rotatebox{180}{\sffamily d}} +% +%\rotatebox{180}{\textdicebot{\sffamily d}}\end{verbatim} +% +%which produces output like this: +% +%\centerline{\Huge \textdicebot{\rotatebox{180}{\sffamily d}}} +% +%\centerline{\Huge \rotatebox{180}{\textdicebot{\sffamily d}}} +% +%The first has rotated the `d' but not the underline, so it appears to be a `P'. +% +%\subsection{Size}\label{sec:advancedsize} +% +%\subsubsection{Size and inline display} +% +%The size of the die face is 1.65ex square, which is about the height of capital letters in whatever font size is currently being used. This should mean inline use works well, as demonstrated below. +% +%\begin{tabular}{rll} +% \verb|\tiny| & {\tiny O\dice{1}E} & {\sffamily\tiny O\dice{1}E}\\ +% \verb|\scriptsize| & {\scriptsize T\dice{2}O} & {\sffamily\scriptsize T\dice{2}O}\\ +% \verb|\footnotesize| & {\footnotesize THR\dice{3}E} & {\sffamily\footnotesize THR\dice{3}E}\\ +% \verb|\small| & {\small F\dice{4}UR} & {\sffamily\small F\dice{4}UR}\\ +% \verb|\normalsize| & {\normalsize F\dice{5}VE} & {\sffamily\normalsize F\dice{5}VE}\\ +% \verb|\large| & {\large S\dice{6}X} & {\sffamily\large S\dice{6}X}\\ +% \verb|\Large| & {\Large O\dice{1}E} & {\sffamily\Large O\dice{1}E}\\ +% \verb|\LARGE| & {\LARGE T\dice{2}O} & {\sffamily\LARGE T\dice{2}O}\\ +% \verb|\huge| & {\huge THR\dice{3}E} & {\sffamily\huge THR\dice{3}E}\\ +% \verb|\Huge| & {\Huge F\dice{4}UR} & {\sffamily\Huge F\dice{4}UR}\\ +%\end{tabular}\bigskip +% +%You may find that you prefer your dice larger than the surrounding text, like this \Largetextdice{A} is done using \verb|\Largetextdice{A}|. The dice are designed to sit on the baseline of the current text size via a parameter called \verb|\customdicebaseline| which is by default \verb|0.02| and is passed to TikZ in \verb|\begin{tikzpicture}[baseline=\customdicebaseline ex]|. If you enlarge the size of the dice to be bigger than the surrounding text you may find they appear to sit above the line. If you prefer them to be centred vertically with the surrounding text you will need to adjust this parameter (by trial and error). Do this using \verb|\setdicebaseline{num}|. For example, setting \verb|\setdicebaseline{0.35}| should make \verb|\Largetextdice{A}| appear centred vertically on the line of text again, like this \setdicebaseline{0.35}\Largetextdice{A} now does. +% +%\setdicebaseline{0.02} +% +%\subsubsection{Changing the basic size} +% +%The size of the die face is 1.65ex square. All other sizes within the die face are defined in relation to this basic unit, and you can change it and them using \verb|\setdicefacesize{num}| where \verb|num| is a number that is interpreted as a number of ex. +% +%For example, +% +%\begin{verbatim} +%\Huge +%\dice{5} +%\setdicefacesize{3} +%\dice{5} +%\setdicefacesize{10} +%\dice{5} +%\setdicefacesize{20} +%\dice{5}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \dice{5} % +% \setdicefacesize{3}% +% \dice{5} % +% \setdicefacesize{10}% +% \dice{5} % +% \setdicefacesize{20}% +% \dice{5}} +% +%\setdicefacesize{1.65} +% +%\newpage +% +%\subsubsection{Changing all the sizes} +% +%This is a list of all the sizes used by the package, set by the two commands \verb|\setdicebaseline| and \verb|\setdicefacesize|. +% +%\noindent\begin{tabularx}{\linewidth}{lXlll} +% \textbf{Parameter} & \textbf{Description} & \textbf{Units} & \textbf{Set by} & \textbf{Default}\\\hline +% \verb|\customdicebaseline| & Controls where the dice sits in relation to surrounding text. & ex & \verb|\setdicebaseline| & 0.02\\\hline +% \verb|\customdicefacesize| & Side length of the dice face square. & ex & \verb|\setdicefacesize| & 1.65\\\hline +% \verb|\customdicehalfway| & Half way across the dice face, distance from the edge to the centre dot on the standard dice face. Also the centre of the text in \verb|\dicetext| and \verb|\dicetextbot|. & ex & \verb|\setdicefacesize| & 0.825\\\hline +% \verb|\customdicelower| & Distance from the edge to the `lower' dots (at the bottom or the left of the standard dice face). & ex & \verb|\setdicefacesize| & 0.4\\\hline +% \verb|\customdiceupper| & Distance from the edge to the `upper' dots (at the top or the right of the standard dice face). & ex & \verb|\setdicefacesize| & 1.25\\\hline +% \verb|\customdicedotsize| & Size of the standard dice dots. & ex & \verb|\setdicefacesize| & 0.12\\\hline +% \verb|\customdicebigdotsize| & Size of the bigdot dice dots. & ex & \verb|\setdicefacesize| & 0.45\\\hline +% \verb|\customdicecornerrounding| & Controls the rounding on the corners. & ex & \verb|\setdicefacesize| & 0.2\\\hline +% \verb|\customdiceborderthickness| & Thickness of the dice face border. & ex & \verb|\setdicefacesize| & 0.1\\\hline +% \verb|\customdicetextscale| & Scaling of the text on the dice faces in \verb|\dicetext| and \verb|\dicetextbot|. & none & \verb|\setdicefacesize| & 0.6\\ +%\end{tabularx} +% +%Note that \verb|\textdicebot| draws an underline of thickness \verb|\customdiceborderthickness| from +%\verb|(\customdicelower,\customdicecornerrounding)| to \verb|(\customdiceupper,\customdicecornerrounding)|. +% +%These parameters are all commands, so if you have a good reason to adjust one of them you can do so using \verb|\renewcommand|, for example \verb|\renewcommand{\customdicehalfway}{1.1}| changes {\Large\textdice{a}} to \renewcommand{\customdicehalfway}{1.1}{\Large\textdice{a}}\renewcommand{\customdicehalfway}{0.825}. Note that calling \verb|\setdicebaseline|/\verb|\setdicefacesize| will reset the relevant commands. +% +% +%\subsubsection{Text doesn't fit?} +% +%There is nothing to stop text running off the side of the die. For example \verb|\textdice{Hello}| just puts `Hello' centred at \verb|(\customdicehalfway,\customdicehalfway)|, like this: +% +%\centerline{\Huge\textdice{Hello}} +% +%In some circumstances, it may be possible to squeeze some overflowing text onto the die face by adjusting \verb|\customdicetextscale|. For example, \verb|\renewcommand{\customdicetextscale}{0.4}| converts \setdicebaseline{0.35} \Largetextdice{101} to \renewcommand{\customdicetextscale}{0.4}\Largetextdice{101}. +%\setdicebaseline{0.02} +% +%It is possible to overdo this and make the text illegible, of course, like the `Hello World' here: {\renewcommand{\customdicetextscale}{0.1}\textdice{Hello World}}. +% +%\renewcommand{\customdicetextscale}{0.6} +% +%Note that calling \verb|\setdicefacesize| will reset \verb|\customdicetextscale| relative to the new \verb|\customdicefacesize|. +% +%\subsection{Arbitrary drawing on dice faces} +% +%The commands \verb|\dice|, \verb|\bigdotdice|, \verb|\textdice| and \verb|\textdicedot| all start an environment called \verb|customdiceenv| and do some drawing on it. \verb|customdiceenv| is really a \verb|tikzpicture| with baseline set to \verb|\customdicebaseline ex| and the dice face outline drawn from \verb|(0ex,0ex)| to \\ +%\verb|(\customdicefacesize ex,\customdicefacesize ex)|. You can call \verb|customdiceenv| directly and within this environment, any other TikZ commands should work. +% +%For example +% +%\begin{verbatim} +%\usetikzlibrary{shapes.geometric} +%\begin{customdiceenv} +%\node[isosceles triangle,draw,inner sep=0.2ex] at (0.65ex,0.825ex) {}; +%\end{customdiceenv}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \begin{customdiceenv} +% \node[isosceles triangle,draw,inner sep=0.2ex] at (0.65ex,0.825ex) {}; +%\end{customdiceenv}}\bigskip +% +%\verb|customdiceenv| has one optional parameter which is a pair of colours, defaulting to \verb|white,black|. Note that what you draw isn't automatically coloured, though within \verb|customdiceenv| you can access the foreground colour as \verb|\customdicefg| and the background colour as \verb|\customdicebg|. +% +%You can also access other package parameters, such as the different sizes. To help stay within the confines of the dice face, it might be helpful to make use of \verb|\customdiceupper|, \verb|\customdicelower| and \verb|\customdicehalfway|. +% +%For example +% +%\begin{verbatim} +%\begin{customdiceenv}[pink,violet] +%\draw[very thick,->,\customdicefg] (\customdiceupper ex,\customdicelower ex) -- +%(\customdicelower ex,\customdiceupper ex); +%\end{customdiceenv}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \begin{customdiceenv}[pink,violet] +% \draw[very thick,->,\customdicefg] (\customdiceupper ex,\customdicelower ex) -- (\customdicelower ex,\customdiceupper ex); +%\end{customdiceenv}} +% +%\section{Is it `die' or `dice'?} +% +%Gosh, I don't know! Technically singular is `die' and plural is `dice', but common usage has typically drifted far from this and language evolves. I'm not sure I've used these terms correctly or consistently in this document. All commands use `dice'. +%\iffalse +%<*documentation> +\documentclass[a4paper]{article} +\usepackage{a4wide} +\usepackage{customdice} +\usepackage{rotating} +\usepackage{amsfonts} +\usepackage{ltablex} +\usepackage{doc} +\usepackage{hyperref} +\usetikzlibrary{shapes.geometric} +\begin{document} +\DocInput{customdice.dtx} +\end{document} +% +%\fi +%\iffalse +%<*customdice> +\ProvidesPackage{customdice}[2022/07/31 customdice 1.0] + +\RequirePackage{tikz} +\RequirePackage{etoolbox} + +\makeatletter +\@ifundefined{customdicecoldefault}{} +{\PackageWarning{customdice}{command `customdicecoldefault' already defined}} +\@ifundefined{customdicebg}{} +{\PackageWarning{customdice}{command `customdicebg' already defined}} +\@ifundefined{customdicefg}{} +{\PackageWarning{customdice}{command `customdicefg' already defined}} +\@ifundefined{customdicebaseline}{} +{\PackageWarning{customdice}{command `customdicebaseline' already defined}} +\@ifundefined{setdicebaseline}{} +{\PackageWarning{customdice}{command `setdicebaseline' already defined}} +\@ifundefined{customdicefacesize}{} +{\PackageWarning{customdice}{command `customdicefacesize' already defined}} +\@ifundefined{customdicehalfway}{} +{\PackageWarning{customdice}{command `customdicehalfway' already defined}} +\@ifundefined{customdicelower}{} +{\PackageWarning{customdice}{command `customdicelower' already defined}} +\@ifundefined{customdiceupper}{} +{\PackageWarning{customdice}{command `customdiceupper' already defined}} +\@ifundefined{customdicedotsize}{} +{\PackageWarning{customdice}{command `customdicedotsize' already defined}} +\@ifundefined{customdicebigdotsize}{} +{\PackageWarning{customdice}{command `customdicebigdotsize' already defined}} +\@ifundefined{customdicecornerrounding}{} +{\PackageWarning{customdice}{command `customdicecornerrounding' already defined}} +\@ifundefined{customdiceborderthickness}{} +{\PackageWarning{customdice}{command `customdiceborderthickness' already defined}} +\@ifundefined{customdicetextscale}{} +{\PackageWarning{customdice}{command `customdicetextscale' already defined}} +\@ifundefined{setdicefacesize}{} +{\PackageWarning{customdice}{command `setdicefacesize' already defined}} +\@ifundefined{dice}{} +{\PackageWarning{customdice}{command `dice' already defined}} +\@ifundefined{bigdotdice}{} +{\PackageWarning{customdice}{command `bigdotdice' already defined}} +\@ifundefined{textdice}{} +{\PackageWarning{customdice}{command `textdice' already defined}} +\@ifundefined{textdicebot}{} +{\PackageWarning{customdice}{command `textdicebot' already defined}} +\@ifundefined{layoutdice}{} +{\PackageWarning{customdice}{command `layoutdice' already defined}} +\@ifundefined{tinydice}{} +{\PackageWarning{customdice}{command `tinydice' already defined}} +\@ifundefined{scriptsizedice}{} +{\PackageWarning{customdice}{command `scriptsizedice' already defined}} +\@ifundefined{footnotesizedice}{} +{\PackageWarning{customdice}{command `footnotesizedice' already defined}} +\@ifundefined{smalldice}{} +{\PackageWarning{customdice}{command `smalldice' already defined}} +\@ifundefined{normalsizedice}{} +{\PackageWarning{customdice}{command `normalsizedice' already defined}} +\@ifundefined{largedice}{} +{\PackageWarning{customdice}{command `largedice' already defined}} +\@ifundefined{Largedice}{} +{\PackageWarning{customdice}{command `Largedice' already defined}} +\@ifundefined{LARGEdice}{} +{\PackageWarning{customdice}{command `LARGEdice' already defined}} +\@ifundefined{hugedice}{} +{\PackageWarning{customdice}{command `hugedice' already defined}} +\@ifundefined{Hugedice}{} +{\PackageWarning{customdice}{command `Hugedice' already defined}} +\@ifundefined{tinybigdotdice}{} +{\PackageWarning{customdice}{command `tinybigdotdice' already defined}} +\@ifundefined{scriptsizebigdotdice}{} +{\PackageWarning{customdice}{command `scriptsizebigdotdice' already defined}} +\@ifundefined{footnotesizebigdotdice}{} +{\PackageWarning{customdice}{command `footnotesizebigdotdice' already defined}} +\@ifundefined{smallbigdotdice}{} +{\PackageWarning{customdice}{command `smallbigdotdice' already defined}} +\@ifundefined{normalsizebigdotdice}{} +{\PackageWarning{customdice}{command `normalsizebigdotdice' already defined}} +\@ifundefined{largebigdotdice}{} +{\PackageWarning{customdice}{command `largebigdotdice' already defined}} +\@ifundefined{Largebigdotdice}{} +{\PackageWarning{customdice}{command `Largebigdotdice' already defined}} +\@ifundefined{LARGEbigdotdice}{} +{\PackageWarning{customdice}{command `LARGEbigdotdice' already defined}} +\@ifundefined{hugebigdotdice}{} +{\PackageWarning{customdice}{command `hugebigdotdice' already defined}} +\@ifundefined{Hugebigdotdice}{} +{\PackageWarning{customdice}{command `Hugebigdotdice' already defined}} +\@ifundefined{tinytextdice}{} +{\PackageWarning{customdice}{command `tinytextdice' already defined}} +\@ifundefined{scriptsizetextdice}{} +{\PackageWarning{customdice}{command `scriptsizetextdice' already defined}} +\@ifundefined{footnotesizetextdice}{} +{\PackageWarning{customdice}{command `footnotesizetextdice' already defined}} +\@ifundefined{smalltextdice}{} +{\PackageWarning{customdice}{command `smalltextdice' already defined}} +\@ifundefined{normalsizetextdice}{} +{\PackageWarning{customdice}{command `normalsizetextdice' already defined}} +\@ifundefined{largetextdice}{} +{\PackageWarning{customdice}{command `largetextdice' already defined}} +\@ifundefined{Largetextdice}{} +{\PackageWarning{customdice}{command `Largetextdice' already defined}} +\@ifundefined{LARGEtextdice}{} +{\PackageWarning{customdice}{command `LARGEtextdice' already defined}} +\@ifundefined{hugetextdice}{} +{\PackageWarning{customdice}{command `hugetextdice' already defined}} +\@ifundefined{Hugetextdice}{} +{\PackageWarning{customdice}{command `Hugetextdice' already defined}} +\@ifundefined{tinytextdicebot}{} +{\PackageWarning{customdice}{command `tinytextdicebot' already defined}} +\@ifundefined{scriptsizetextdicebot}{} +{\PackageWarning{customdice}{command `scriptsizetextdicebot' already defined}} +\@ifundefined{footnotesizetextdicebot}{} +{\PackageWarning{customdice}{command `footnotesizetextdicebot' already defined}} +\@ifundefined{smalltextdicebot}{} +{\PackageWarning{customdice}{command `smalltextdicebot' already defined}} +\@ifundefined{normalsizetextdicebot}{} +{\PackageWarning{customdice}{command `normalsizetextdicebot' already defined}} +\@ifundefined{largetextdicebot}{} +{\PackageWarning{customdice}{command `largetextdicebot' already defined}} +\@ifundefined{Largetextdicebot}{} +{\PackageWarning{customdice}{command `Largetextdicebot' already defined}} +\@ifundefined{LARGEtextdicebot}{} +{\PackageWarning{customdice}{command `LARGEtextdicebot' already defined}} +\@ifundefined{hugetextdicebot}{} +{\PackageWarning{customdice}{command `hugetextdicebot' already defined}} +\@ifundefined{Hugetextdicebot}{} +{\PackageWarning{customdice}{command `Hugetextdicebot' already defined}} +\makeatother + +% sizes +\newcommand{\customdicecoldefault}{f40fc2340eb940fc8a170db0f81d7139} % using a UUID so we are extremely unlikely to clash with any user-specified colour name +\global\let\customdicebg\customdicecoldefault +\global\let\customdicefg\customdicecoldefault +\newcommand{\customdicebaseline}{0.02} +\newcommand{\setdicebaseline}[1]{% + \renewcommand{\customdicebaseline}{#1}% +} +\newcommand{\customdicefacesize}{1.65} +\newcommand{\customdicehalfway}{0.825} +\newcommand{\customdicelower}{0.4} +\newcommand{\customdiceupper}{1.25} +\newcommand{\customdicedotsize}{0.12} +\newcommand{\customdicebigdotsize}{0.45} +\newcommand{\customdicecornerrounding}{0.2} +\newcommand{\customdiceborderthickness}{0.1} +\newcommand{\customdicetextscale}{0.6} +\newcommand{\setdicefacesize}[1]{% + \renewcommand{\customdicefacesize}{#1}% + \pgfmathsetmacro{\customdicehalfway}{#1/2}% + \pgfmathsetmacro{\customdicelower}{#1*0.425/1.65}% + \pgfmathsetmacro{\customdiceupper}{#1*1.25/1.65}% + \pgfmathsetmacro{\customdicedotsize}{#1*0.12/1.65}% + \pgfmathsetmacro{\customdicebigdotsize}{#1*0.45/1.65}% + \pgfmathsetmacro{\customdicecornerrounding}{#1*0.2/1.65}% + \pgfmathsetmacro{\customdiceborderthickness}{#1*0.1/1.65}% + \pgfmathsetmacro{\customdicetextscale}{#1*0.6/1.65}% +} + +% main dice environment +\newenvironment{customdiceenv}[1][white,black]{% + \foreach \colour in {#1}{% + \ifdefequal{\customdicebg}{\customdicecoldefault}{\global\let\customdicebg\colour}{\global\let\customdicefg\colour}% + }% + \begin{tikzpicture}[baseline=\customdicebaseline ex] + \draw[rounded corners=\customdicecornerrounding ex,darkgray,fill=\customdicebg,line width=\customdiceborderthickness ex] (0ex,0ex) rectangle (\customdicefacesize ex,\customdicefacesize ex); +}{\end{tikzpicture}% + \global\let\customdicebg\customdicecoldefault% + \global\let\customdicefg\customdicecoldefault% +} + +% \dice draws standard dice +\newcommand{\dice}[2][white,black]{% + \begin{customdiceenv}[#1] + \ifnumequal{#2}{1}{ + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicehalfway ex,\customdicehalfway ex) {}; + }{\ifnumequal{#2}{2}{ + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicelower ex,\customdiceupper ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdiceupper ex,\customdicelower ex) {}; + }{\ifnumequal{#2}{3}{ + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicelower ex,\customdicelower ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicehalfway ex,\customdicehalfway ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdiceupper ex,\customdiceupper ex) {}; + }{\ifnumequal{#2}{4}{ + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicelower ex,\customdicelower ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicelower ex,\customdiceupper ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdiceupper ex,\customdicelower ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdiceupper ex,\customdiceupper ex) {}; + }{\ifnumequal{#2}{5}{ + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicelower ex,\customdicelower ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicelower ex,\customdiceupper ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicehalfway ex,\customdicehalfway ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdiceupper ex,\customdicelower ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdiceupper ex,\customdiceupper ex) {}; + }{\ifnumequal{#2}{6}{ + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicelower ex,\customdicelower ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicelower ex,\customdicehalfway ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicelower ex,\customdiceupper ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdiceupper ex,\customdicelower ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdiceupper ex,\customdicehalfway ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdiceupper ex,\customdiceupper ex) {}; + }{}}}}}} + \end{customdiceenv}% +} + +% \bigdotdice draws dice with a big dot +\newcommand{\bigdotdice}[1][white,black]{% + \begin{customdiceenv}[#1] + \node[circle,fill=\customdicefg,inner sep=\customdicebigdotsize ex] at (\customdicehalfway ex,\customdicehalfway ex) {}; + \end{customdiceenv}% +} + +% \textdice puts text on a dice face +\newcommand{\textdice}[2][white,black]{% + \begin{customdiceenv}[#1] + \node[\customdicefg,inner sep=0,scale=\customdicetextscale] at (\customdicehalfway ex,\customdicehalfway ex) {#2}; + \end{customdiceenv}% +} + +% \textdicebot puts underlined text on a dice face +\newcommand{\textdicebot}[2][white,black]{% + \begin{customdiceenv}[#1] + \node[\customdicefg,inner sep=0,scale=\customdicetextscale] at (\customdicehalfway ex,\customdicehalfway ex) {#2}; + \draw[line width=\customdiceborderthickness ex,\customdicefg] (\customdicelower ex,\customdicecornerrounding ex) --(\customdiceupper ex,\customdicecornerrounding ex); + \end{customdiceenv}% +} + +% draws a dice net +\newcommand{\layoutdice}[6]{% + \setlength{\tabcolsep}{0pt}% + \renewcommand{\arraystretch}{0}% + \begin{tabular}{ccc} + ~ & #1 & ~\\ + #4 & #2 & #3\\ + ~ & #6 & ~\\ + ~ & #5 & ~\\ + \end{tabular}% +} + +% for convenience, passes \sizecommand as {\size\command} +\newcommand{\tinydice}[2][white,black]{% + {\tiny\dice[#1]{#2}} +} +\newcommand{\scriptsizedice}[2][white,black]{% + {\scriptsize\dice[#1]{#2}} +} +\newcommand{\footnotesizedice}[2][white,black]{% + {\footnotesize\dice[#1]{#2}} +} +\newcommand{\smalldice}[2][white,black]{% + {\small\dice[#1]{#2}} +} +\newcommand{\normalsizedice}[2][white,black]{% + {\normalsize\dice[#1]{#2}} +} +\newcommand{\largedice}[2][white,black]{% + {\large\dice[#1]{#2}} +} +\newcommand{\Largedice}[2][white,black]{% + {\Large\dice[#1]{#2}} +} +\newcommand{\LARGEdice}[2][white,black]{% + {\LARGE\dice[#1]{#2}} +} +\newcommand{\hugedice}[2][white,black]{% + {\huge\dice[#1]{#2}} +} +\newcommand{\Hugedice}[2][white,black]{% + {\Huge\dice[#1]{#2}} +} +\newcommand{\tinybigdotdice}[1][white,black]{% + {\tiny\bigdotdice[#1]} +} +\newcommand{\scriptsizebigdotdice}[1][white,black]{% + {\scriptsize\bigdotdice[#1]} +} +\newcommand{\footnotesizebigdotdice}[1][white,black]{% + {\footnotesize\bigdotdice[#1]} +} +\newcommand{\smallbigdotdice}[1][white,black]{% + {\small\bigdotdice[#1]} +} +\newcommand{\normalsizebigdotdice}[1][white,black]{% + {\normalsize\bigdotdice[#1]} +} +\newcommand{\largebigdotdice}[1][white,black]{% + {\large\bigdotdice[#1]} +} +\newcommand{\LARGEbigdotdice}[1][white,black]{% + {\LARGE\bigdotdice[#1]} +} +\newcommand{\Largebigdotdice}[1][white,black]{% + {\Large\bigdotdice[#1]} +} +\newcommand{\hugebigdotdice}[1][white,black]{% + {\huge\bigdotdice[#1]} +} +\newcommand{\Hugebigdotdice}[1][white,black]{% + {\Huge\bigdotdice[#1]} +} +\newcommand{\tinytextdice}[2][white,black]{% + {\tiny\textdice[#1]{#2}} +} +\newcommand{\scriptsizetextdice}[2][white,black]{% + {\scriptsize\textdice[#1]{#2}} +} +\newcommand{\footnotesizetextdice}[2][white,black]{% + {\footnotesize\textdice[#1]{#2}} +} +\newcommand{\smalltextdice}[2][white,black]{% + {\small\textdice[#1]{#2}} +} +\newcommand{\normalsizetextdice}[2][white,black]{% + {\normalsize\textdice[#1]{#2}} +} +\newcommand{\largetextdice}[2][white,black]{% + {\large\textdice[#1]{#2}} +} +\newcommand{\Largetextdice}[2][white,black]{% + {\Large\textdice[#1]{#2}} +} +\newcommand{\LARGEtextdice}[2][white,black]{% + {\LARGE\textdice[#1]{#2}} +} +\newcommand{\hugetextdice}[2][white,black]{% + {\huge\textdice[#1]{#2}} +} +\newcommand{\Hugetextdice}[2][white,black]{% + {\Huge\textdice[#1]{#2}} +} +\newcommand{\tinytextdicebot}[2][white,black]{% + {\tiny\textdicebot[#1]{#2}} +} +\newcommand{\scriptsizetextdicebot}[2][white,black]{% + {\scriptsize\textdicebot[#1]{#2}} +} +\newcommand{\footnotesizetextdicebot}[2][white,black]{% + {\footnotesize\textdicebot[#1]{#2}} +} +\newcommand{\smalltextdicebot}[2][white,black]{% + {\small\textdicebot[#1]{#2}} +} +\newcommand{\normalsizetextdicebot}[2][white,black]{% + {\normalsize\textdicebot[#1]{#2}} +} +\newcommand{\largetextdicebot}[2][white,black]{% + {\large\textdicebot[#1]{#2}} +} +\newcommand{\Largetextdicebot}[2][white,black]{% + {\Large\textdicebot[#1]{#2}} +} +\newcommand{\LARGEtextdicebot}[2][white,black]{% + {\LARGE\textdicebot[#1]{#2}} +} +\newcommand{\hugetextdicebot}[2][white,black]{% + {\huge\textdicebot[#1]{#2}} +} +\newcommand{\Hugetextdicebot}[2][white,black]{% + {\Huge\textdicebot[#1]{#2}} +} +% +%\fi \ No newline at end of file diff --git a/customdice/customdice.ins b/customdice/customdice.ins new file mode 100644 index 0000000000..90cc3459d9 --- /dev/null +++ b/customdice/customdice.ins @@ -0,0 +1,13 @@ +\input{docstrip.tex} +\keepsilent +\usedir{tex/latex/customdice} +\preamble +Copyright (c) 2022 Peter Rowlett + +The package is licenced under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ +\endpreamble +\askforoverwritefalse +\generate{ + \file{customdice.sty}{\from{customdice.dtx}{customdice}} +} +\endbatchfile diff --git a/customdice/customdice.pdf b/customdice/customdice.pdf new file mode 100644 index 0000000000..4b7f9b0a21 Binary files /dev/null and b/customdice/customdice.pdf differ diff --git a/graphics/pgf/contrib/bodeplot/README.md b/graphics/pgf/contrib/bodeplot/README.md index 25b8d7e1dd..31ac7a132f 100644 --- a/graphics/pgf/contrib/bodeplot/README.md +++ b/graphics/pgf/contrib/bodeplot/README.md @@ -52,4 +52,4 @@ Other new environments and associated commands: - `\addNyquistZPKPlot[plot-options]{z/{zeros},p/{poles},k/gain,d/delay}` - `\addNyquistTFPlot[plot-options]{num/{coeff},den/{coeff},d/delay}` -Limitation: Nichols charts from TF commands are wrapped between 0 and 360 degrees. +Limitation: TF commands are wrapped between 0 and 360 degrees in `pgf` mode. diff --git a/graphics/pgf/contrib/bodeplot/bodeplot.dtx b/graphics/pgf/contrib/bodeplot/bodeplot.dtx index a5cdfbf6db..aad1eb47d6 100644 --- a/graphics/pgf/contrib/bodeplot/bodeplot.dtx +++ b/graphics/pgf/contrib/bodeplot/bodeplot.dtx @@ -26,7 +26,8 @@ % %<*driver> \documentclass{ltxdoc} -\usepackage{bodeplot,cprotect} +\usepackage{cprotect} +\usepackage[declutter]{bodeplot} \usepackage[colorlinks]{hyperref} \usepackage{iftex} \iftutex % LuaTeX, XeTeX @@ -38,7 +39,7 @@ \usepackage[scaled]{DejaVuSansMono} \fi \usepackage{showexpl} - \lstset{% + \lstset{ explpreset={numbers=none}, language=[LaTeX]Tex, basicstyle=\ttfamily\tiny, @@ -66,7 +67,7 @@ % % \fi % -% \CheckSum{1404} +% \CheckSum{1723} % % \changes{v1.0}{2021/10/25}{Initial release} % \changes{v1.0.4}{2021/11/05}{Fixed unintended optional argument macro expansion} @@ -75,11 +76,12 @@ % \changes{v1.0.7}{2022/01/18}{Updated documentation} % \changes{v1.0.8}{2022/07/06}{Added a new class option `declutter'} % \changes{v1.1.0}{2022/07/06}{Fixed phase wrapping in gnuplot mode} +% \changes{v1.1.1}{2022/07/31}{Enable Hz and rad units} % % \GetFileInfo{bodeplot.sty} -% \DoNotIndex{\newcommand,\xdef,\gdef,\def,\edef,\addplot,\approx,\arabic,\opt,\typ,\obj,\else,\if@pgfarg,\fi,\begin,\end,\feature,\footnotesize,\draw,\detokenize,\DeclareOption,\foreach,\ifdim,\ifodd,\Im,\Re,\let,\newif,\nextgroupplot,\noexpand,\expandafter,\unexpanded,\PackageError,\PackageWarning,\relax,\RequirePackage,\tikzset,\pgfmathsetmacro,\pgfmathtruncatemacro,\ProcessOptions} +% \DoNotIndex{\newcommand,\xdef,\gdef,\def,\edef,\addplot,\approx,\arabic,\opt,\typ,\obj,\else,\if@pgfarg,\if@Hzarg,\if@radarg,\if@declutterarg,\fi,\begin,\end,\feature,\footnotesize,\draw,\detokenize,\DeclareOption,\foreach,\ifdim,\ifodd,\Im,\Re,\let,\newif,\nextgroupplot,\noexpand,\expandafter,\unexpanded,\PackageError,\PackageWarning,\relax,\RequirePackage,\tikzset,\pgfmathsetmacro,\pgfmathtruncatemacro,\ProcessOptions} % -% \title{The \textsf{bodeplot} package\thanks{This document corresponds to \textsf{bodeplot}~v1.1.0, dated July 20, 2022.}} +% \title{The \textsf{bodeplot} package\\version 1.1.1} % \author{Rushikesh Kamalapurkar \\ \texttt{rlkamalapurkar@gmail.com}} % % \maketitle @@ -87,14 +89,20 @@ % \clearpage % \section{Introduction} % -% Generate Bode, Nyquist, and Nichols plots for transfer functions in the canonical (TF) form \begin{equation}G(s) = e^{-Ts}\frac{b_ms^m+\cdots+b_1s+b_0}{a_ns^n+\cdots+a_1s+a_0}\label{eq:TF}\end{equation} and the zero-pole-gain (ZPK) form \begin{equation}G(s) = Ke^{-Ts}\frac{(s-z_1)(s-z_2)\cdots(s-z_m)}{(s-p_1)(s-p_2)\cdots(s-p_n)}.\label{eq:ZPK}\end{equation} In the equations above, $b_m,\cdots,b_0$ and $a_n,\cdots,a_0$ are real coefficients, $T\geq 0$ is the loop delay, $z_1,\cdots,z_m$ and $p_1,\cdots,p_n$ are complex zeros and poles of the transfer function, respectively, and $K\in \Re$ is the loop gain. For transfer functions in the ZPK format in (\ref{eq:ZPK}) \emph{with zero delay}, this package also supports linear and asymptotic approximation of Bode plots. By default, all phase plots use degrees as units. Use the |rad| package option to generate plots in radians. +% Generate Bode, Nyquist, and Nichols plots for transfer functions in the canonical (TF) form \begin{equation}G(s) = e^{-Ts}\frac{b_ms^m+\cdots+b_1s+b_0}{a_ns^n+\cdots+a_1s+a_0}\label{eq:TF}\end{equation} and the zero-pole-gain (ZPK) form \begin{equation}G(s) = Ke^{-Ts}\frac{(s-z_1)(s-z_2)\cdots(s-z_m)}{(s-p_1)(s-p_2)\cdots(s-p_n)}.\label{eq:ZPK}\end{equation} In the equations above, $b_m,\cdots,b_0$ and $a_n,\cdots,a_0$ are real coefficients, $T\geq 0$ is the loop delay, $z_1,\cdots,z_m$ and $p_1,\cdots,p_n$ are complex zeros and poles of the transfer function, respectively, and $K\in \Re$ is the loop gain. +% +% For transfer functions in the ZPK format in (\ref{eq:ZPK}) \emph{with zero delay}, this package also supports linear and asymptotic approximation of Bode plots. +% +% By default, all phase plots use degrees as units. Use the |rad| package option or the optional argument |tikz/{phase unit=rad}| to generate plots in radians. The |phase unit| key accepts either |rad| or |deg| as inputs and needs to be added to the |tikzpicture| environment that contains the plots. +% +% By default, frequency inputs and outputs are in radians per second. Use the |Hz| package option or the optional argument |tikz/{frequency unit=Hz}| to generate plots in hertz. The |frequency unit| key accepts either |rad| or |Hz| as inputs and needs to be added to the |tikzpicture| environment that contains the plots. % \subsection{External Dependencies} -% By default, the package uses |gnuplot| to do all the computations. If |gnuplot| is not available, the |pgf| package option can be used to do the calculations using the native |pgf| math engine. Compilation using the |pgf| math engine is typically slower, but the end result should be the identical (other than phase wrapping in the TF format, see limitations below). +% By default, the package uses |gnuplot| to do all the computations. If |gnuplot| is not available, the |pgf| package option can be used to do the calculations using the native |pgf| math engine. Compilation using the |pgf| math engine is typically slower, but the end result should be the identical (other than phase wrapping in the TF form, see limitations below). %\subsection{Directory Structure} % Since version 1.0.8, the |bodeplot| package places all |gnuplot| temporary files in the working directory. The package option |declutter| restores the original behavior where the temporary files are placed in a folder called |gnuplot|. % \subsection{Limitations} % \begin{itemize} -% \item When plotting Nichols charts in TF form, the phase angles are wrapped between 0 and 360$^\circ$. As such, the Nichols charts will have phase wrapping discontinuities. Phase wrapping in Bode plots was fixed in v1.1.0 using |gnuplot|. In |pgf| mode, Bode phase plots, plotted using the TF form, will also show phase wrapping discontinuities. +% \item In |pgf| mode, Bode phase plots and Nichols charts in TF form wrap angles so that they are always between 0 and 360$^\circ$ or 0 and $2\pi$ radian. As such, these plots will show phase wrapping discontinuities. Since v1.1.1, in |gnuplot| mode, the package uses the |smooth unwrap| filter to correct wrapping discontinuities. As of now, I have not found a way to do this in |pgf| mode, any merge requests or ideas you may have are welcome! % \item Use of the |declutter| option with other directory management tools such as a |tikzexternalize| prefix is not recommended. % \end{itemize} % \clearpage @@ -114,7 +122,7 @@ \BodeZPK{% z/{0,{-0.1,-0.5},{-0.1,0.5}}, p/{{-0.5,-10},{-0.5,10}}, - k/10 + k/10% } {0.01} {100} @@ -122,21 +130,28 @@ \hrulefill -Bode plot in TF format with arrow decoration, transport delay, and color customization (the phase plot will show wrapping if the |pgf| package option is used) +Same Bode plot over the same frequency range but supplied in Hz, in TF format with arrow decoration, transport delay, unit, and color customization (the phase plot may show wrapping if the |pgf| package option is used) \begin{LTXexample}[pos=r,width=0.5\textwidth] \BodeTF[% samples=1000, plot/mag/{blue,thick}, plot/ph/{green,thick}, - tikz/{>=latex}, + tikz/{% + >=latex, + phase unit=rad, + frequency unit=Hz% + }, commands/mag/{ - \draw[->](axis cs:1,40) -- (axis cs:10,60); - \node at (axis cs: 0.8,30) {\tiny Resonant Peak}; + \draw[->](axis cs:0.1,40) -- (axis cs:{10/(2*pi)},60); + \node at (axis cs: 0.08,30) {\tiny Resonant Peak}; }% ] -{num/{10,2,2.6,0},den/{1,1,100.25},d/0.01} -{0.01} -{500} +{% + num/{10,2,2.6,0}, + den/{1,1,100.25}% +} +{0.01/(2*pi)} +{100/(2*pi)} \end{LTXexample} \hrulefill @@ -154,7 +169,7 @@ Linear approximation with customization ]{% z/{0,{-0.1,-0.5},{-0.1,0.5}}, p/{{-0.5,-10},{-0.5,10}}, - k/10 + k/10% } {0.01} {100} @@ -164,16 +179,16 @@ Linear approximation with customization Plot with delay and customization \begin{LTXexample}[pos=r,hsep=20pt,width=0.5\textwidth] -\BodeZPK[ +\BodeZPK[% plot/mag/{blue,thick}, plot/ph/{green,thick}, axes/mag/ytick distance=40, - axes/ph/ytick distance=90 + axes/ph/ytick distance=90% ]{% z/{0,{-0.1,-0.5},{-0.1,0.5}}, p/{{-0.5,-10},{-0.5,10}}, k/10, - d/0.01 + d/0.01% } {0.01} {100} @@ -202,7 +217,7 @@ Individual gain and phase plots with more customization {% z/{0,{-0.1,-0.5},{-0.1,0.5}}, p/{{-0.5,-10},{-0.5,10}}, - k/10 + k/10% } \end{BodeMagPlot} \end{LTXexample} @@ -225,7 +240,7 @@ Individual gain and phase plots with more customization {% z/{0,{-0.1,-0.5},{-0.1,0.5}}, p/{{-0.5,-10},{-0.5,10}}, - k/10 + k/10% } \end{BodePhPlot} \end{LTXexample} @@ -240,7 +255,7 @@ Nichols chart z/{0,{-0.1,-0.5},{-0.1,0.5}}, p/{{-0.5,-10},{-0.5,10}}, k/10, - d/0.01 + d/0.01% } {0.001} {500} @@ -248,10 +263,14 @@ Nichols chart \hrulefill -Same Nichols chart in TF format (shows phase wrapping discontinuity) +Same Nichols chart in TF format (may show wrapping in |pgf| mode) \begin{LTXexample}[pos=r,hsep=20pt,width=0.5\textwidth] \NicholsTF[samples=1000] -{num/{10,2,2.6,0},den/{1,1,100.25},d/0.01} +{% + num/{10,2,2.6,0}, + den/{1,1,100.25}, + d/0.01% +} {0.001} {500} \end{LTXexample} @@ -271,13 +290,13 @@ Multiple Nichols charts with customization \addNicholsZPKChart [red,samples=1000] {% z/{0,{-0.1,-0.5},{-0.1,0.5}}, p/{{-0.5,-10},{-0.5,10}}, - k/10 - }; + k/10% + } \addNicholsZPKChart [blue,samples=1000] {% z/{0,{-0.1,-0.5},{-0.1,0.5}}, p/{{-0.5,-10},{-0.5,10}}, - k/5 - }; + k/5% + } \end{NicholsChart} \end{LTXexample} @@ -289,7 +308,7 @@ Nyquist plot {% z/{0,{-0.1,-0.5},{-0.1,0.5}}, p/{{-0.5,-10},{-0.5,10}}, - k/10 + k/10% } {-30} {30} @@ -311,7 +330,10 @@ Nyquist plot in TF format with arrows } }% ] -{num/{10,2,2.6,0},den/{1,1,100.25}} +{% + num/{10,2,2.6,0}, + den/{1,1,100.25}% +} {-30} {30} \end{LTXexample} @@ -326,13 +348,13 @@ Multiple Nyquist plots with customization \addNyquistZPKPlot [red,samples=1000] {% z/{0,{-0.1,-0.5},{-0.1,0.5}}, p/{{-0.5,-10},{-0.5,10}}, - k/10 - }; + k/10% + } \addNyquistZPKPlot [blue,samples=1000] {% z/{0,{-0.1,-0.5},{-0.1,0.5}}, p/{{-0.5,-10},{-0.5,10}}, - k/5 - }; + k/5% + } \end{NyquistPlot} \end{LTXexample} @@ -343,21 +365,21 @@ Nyquist plots with additional commands, using two different macros \begin{minipage}[t]{0.48\textwidth} \begin{LTXexample}[pos=t,width=\columnwidth] \begin{NyquistPlot}[% - tikz/{% + tikz/{ spy using outlines={% circle, magnification=3, connect spies, size=2cm - }% + } }% ] {-30}{30} \addNyquistZPKPlot [blue,samples=1000] {% z/{0,{-0.1,-0.5},{-0.1,0.5}}, p/{{-0.5,-10},{-0.5,10}}, - k/0.5 - }; + k/0.5% + } \coordinate (spyon) at (axis cs:0,0); \coordinate (spyat) at (axis cs:-22,5); \spy [green] on (spyon) in @@ -369,25 +391,25 @@ Nyquist plots with additional commands, using two different macros \begin{LTXexample}[pos=t,width=\columnwidth] \NyquistZPK[% plot/{blue,samples=1000}, - tikz/{% + tikz/{ spy using outlines={% circle, magnification=3, connect spies, size=2cm - }% + } }, - commands/{% + commands/{ \coordinate (spyon) at (axis cs:0,0); \coordinate (spyat) at (axis cs:-22,5); \spy [green] on (spyon) in node [fill=white] at (spyat); }% -]% -{ +] +{% z/{0,{-0.1,-0.5},{-0.1,0.5}}, p/{{-0.5,-10},{-0.5,10}}, - k/0.5 + k/0.5% } {-30} {30} @@ -402,6 +424,8 @@ Nyquist plots with additional commands, using two different macros % \fi % % \section{Usage} +% \noindent In all the macros described here, the frequency limits supplied by the user are assumed to be in |rad/s| unless either the |Hz| package option is used or the optional argument |tikz/{frequency unit=Hz}| is supplied to the |tikzpicture| environment. All phase plots are getenrated in degrees unless either the |rad| package option is used or the optional argument |tikz/{frequency unit=rad}| is supplied to the |tikzpicture| environment. +% % \subsection{Bode plots} % \DescribeMacro{\BodeZPK} % |\BodeZPK| \oarg{obj1/typ1/\marg{opt1},obj2/typ2/\marg{opt2},...}\\ @@ -517,7 +541,7 @@ Nyquist plots with additional commands, using two different macros % For example, given the transfer function in (\ref{eq:ZPKExample}), its linear, asymptotic, and true Bode plots can be superimposed using %\begin{verbatim} %\begin{BodeMagPlot}[height=2cm,width=4cm] {0.01} {100} -% \addBodeZPKPlots[ +% \addBodeZPKPlots[% % true/{black,thick}, % linear/{red,dashed,thick}, % asymptotic/{blue,dotted,thick}] @@ -526,7 +550,7 @@ Nyquist plots with additional commands, using two different macros %\end{BodeMagPlot} % %\begin{BodePhPlot}[height=2cm, width=4cm, ytick distance=90] {0.01} {100} -% \addBodeZPKPlots[ +% \addBodeZPKPlots[% % true/{black,thick}, % linear/{red,dashed,thick}, % asymptotic/{blue,dotted,thick}] @@ -537,7 +561,7 @@ Nyquist plots with additional commands, using two different macros % \begin{figure} % \begin{center} % \begin{BodeMagPlot}[height=2cm,width=4cm]{0.01}{100} -% \addBodeZPKPlots[ +% \addBodeZPKPlots[% % true/{black,thick}, % linear/{red,dashed,thick}, % asymptotic/{blue,dotted,thick}] @@ -545,7 +569,7 @@ Nyquist plots with additional commands, using two different macros % {z/{0,{-0.1,-0.5},{-0.1,0.5}},p/{{-0.5,-10},{-0.5,10}},k/10} % \end{BodeMagPlot} % \begin{BodePhPlot}[height=2cm,width=4cm,ytick distance=90]{0.01}{100} -% \addBodeZPKPlots[ +% \addBodeZPKPlots[% % true/{black,thick}, % linear/{red,dashed,thick}, % asymptotic/{blue,dotted,thick}] @@ -787,15 +811,6 @@ Nyquist plots with additional commands, using two different macros % \clearpage % \section{Implementation} % \subsection{Initialization} -% \begin{macro}{\pdfstrcmp} -% The package makes extensive use of the |\pdfstrcmp| macro to parse options. Since that macro is not available in |lualatex|, this code is needed. -% \begin{macrocode} -\RequirePackage{ifluatex}% -\ifluatex - \let\pdfstrcmp\pdf@strcmp -\fi -% \end{macrocode} -% \end{macro} % \begin{macro}{\n@mod} % \begin{macro}{\n@pow} % \begin{macro}{gnuplot@id} @@ -805,17 +820,21 @@ Nyquist plots with additional commands, using two different macros % This code is needed to support both |pgfplots| and |gnuplot| simultaneously. New macros are defined for the |pow| and |mod| functions to address differences between the two math engines. We start by processing the class options. % \begin{macrocode} \newif\if@pgfarg\@pgfargfalse -\DeclareOption{pgf}{% +\DeclareOption{pgf}{ \@pgfargtrue } \newif\if@declutterarg\@declutterargfalse -\DeclareOption{declutter}{% +\DeclareOption{declutter}{ \@declutterargtrue } \newif\if@radarg\@radargfalse -\DeclareOption{rad}{% +\DeclareOption{rad}{ \@radargtrue } +\newif\if@hzarg\@hzargfalse +\DeclareOption{Hz}{ + \@hzargtrue +} \ProcessOptions\relax % \end{macrocode} % Then, we define two new macros to unify |pgfplots| and |gnuplot|. @@ -823,8 +842,8 @@ Nyquist plots with additional commands, using two different macros \newcommand{\n@mod}[2]{(#1)-(floor((#1)/(#2))*(#2))} \if@pgfarg \newcommand{\n@pow}[2]{(#1)^(#2)} - \pgfplotsset{% - trig format plots=rad% + \pgfplotsset{ + trig format plots=rad } \else \newcommand{\n@pow}[2]{(#1)**(#2)} @@ -834,20 +853,16 @@ Nyquist plots with additional commands, using two different macros \newcounter{gnuplot@id} \setcounter{gnuplot@id}{0} \if@declutterarg - \tikzset{% - gnuplot@prefix/.style={% - id=\arabic{gnuplot@id}, - prefix=gnuplot/\jobname - }% - } + \edef\bodeplot@prefix{gnuplot/\jobname} \else - \tikzset{% - gnuplot@prefix/.style={% - id=\arabic{gnuplot@id}, - prefix=\jobname - }% - } + \edef\bodeplot@prefix{\jobname} \fi + \tikzset{ + gnuplot@prefix/.style={ + id=\arabic{gnuplot@id}, + prefix=\bodeplot@prefix + } + } % \end{macrocode} % If the operating system is not Windows, and if the |declutter| option is not passed, we create the |gnuplot| folder if it does not already exist. \changes{v1.0.2}{2021/11/01}{Fixed issue \#1} % \begin{macrocode} @@ -865,8 +880,8 @@ Nyquist plots with additional commands, using two different macros % \begin{macro}{bode@style} % Default axis properties for all plot macros are collected in this |pgf| style. % \begin{macrocode} -\pgfplotsset{% - bode@style/.style = {% +\pgfplotsset{ + bode@style/.style = { label style={font=\footnotesize}, tick label style={font=\footnotesize}, grid=both, @@ -877,25 +892,84 @@ Nyquist plots with additional commands, using two different macros scale only axis, samples=200, width=5cm, - }% + log basis x=10 + } } % \end{macrocode} % \end{macro} -% \begin{macro}{ph@filter} -% \begin{macro}{ph@x@filter} -% These macros create |pgf| filters to convert plots from radians to degrees. +% \begin{macro}{freq@filter} +% \begin{macro}{freq@label} +% \begin{macro}{freq@scale} +% \begin{macro}{ph@scale} +% \begin{macro}{ph@x@label} +% \begin{macro}{ph@y@label} +% These macros handle the |Hz| and |rad| class options and two new |pgf| keys named |frequency unit| and |phase unit| for conversion of frequency and phase units, respectively. \changes{v1.1.1}{2022/07/31}{New macros to enable `Hz' and `rad' units for frequency and phase, respectively} % \begin{macrocode} +\pgfplotsset{freq@filter/.style = {}} +\def\freq@scale{1} +\pgfplotsset{freq@label/.style = {xlabel = {Frequency (rad/s)}}} +\pgfplotsset{ph@x@label/.style = {xlabel={Phase (deg)}}} +\pgfplotsset{ph@y@label/.style = {ylabel={Phase (deg)}}} +\def\ph@scale{180/pi} \if@radarg - \pgfplotsset{ph@filter/.style = {ytick distance=pi/4, ylabel={Phase (rad)}}}% - \pgfplotsset{ph@x@filter/.style = {xlabel={Phase (rad)}}}% -\else - \pgfplotsset{ph@filter/.style = {y filter/.expression={y*180/pi}, ytick distance=45, ylabel={Phase (deg)}}}% - \pgfplotsset{ph@x@filter/.style = {x filter/.expression={x*180/pi}, xlabel={Phase (deg)}}}% + \pgfplotsset{ph@y@label/.style = {ylabel={Phase (rad)}}} + \pgfplotsset{ph@x@label/.style = {xlabel={Phase (rad)}}} + \def\ph@scale{1} \fi +\if@hzarg + \def\freq@scale{2*pi} + \pgfplotsset{freq@label/.style = {xlabel = {Frequency (Hz)}}} + \if@pgfarg + \pgfplotsset{freq@filter/.style = {x filter/.expression={x-log10(2*pi)}}} + \fi +\fi +\tikzset{ + phase unit/.initial={deg}, + phase unit/.default={deg}, + phase unit/.is choice, + phase unit/deg/.code={ + \renewcommand{\ph@scale}{180/pi} + \pgfplotsset{ph@x@label/.style = {xlabel={Phase (deg)}}} + \pgfplotsset{ph@y@label/.style = {ylabel={Phase (deg)}}} + }, + phase unit/rad/.code={ + \renewcommand{\ph@scale}{1} + \pgfplotsset{ph@y@label/.style = {ylabel={Phase (rad)}}} + \pgfplotsset{ph@x@label/.style = {xlabel={Phase (rad)}}} + }, + frequency unit/.initial={rad}, + frequency unit/.default={rad}, + frequency unit/.is choice, + frequency unit/Hz/.code={ + \renewcommand{\freq@scale}{2*pi} + \pgfplotsset{freq@label/.style = {xlabel = {Frequency (Hz)}}} + \if@pgfarg + \pgfplotsset{freq@filter/.style = {x filter/.expression={x-log10(2*pi)}}} + \fi + }, + frequency unit/rad/.code={ + \renewcommand{\freq@scale}{1} + \pgfplotsset{freq@label/.style = {xlabel = {Frequency (rad/s)}}} + } +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{get@interval@start} +% \begin{macro}{get@interval@end} +% Internal macros to extract start and end frequency limits from domain specifications.\changes{v1.1.1}{2022/07/31}{New macros to enable `Hz' and `rad' units for frequency and phase, respectively} +% \begin{macrocode} +\def\get@interval@start#1:#2\@nil{#1} +\def\get@interval@end#1:#2\@nil{#2} % \end{macrocode} % \end{macro} % \end{macro} % \subsection{Parametric function generators for poles, zeros, gains, and delays.} +% All calculations are carried out assuming that frequeny inputs are in |rad/s|. Magnitude outputs are in |dB| and phase outputs are in degrees or radians, depending on the value of |\ph@scale|. % \begin{macro}{\MagK} % \begin{macro}{\MagKAsymp} % \begin{macro}{\MagKLin} @@ -907,7 +981,7 @@ Nyquist plots with additional commands, using two different macros \newcommand*{\MagK}[2]{(20*log10(abs(#1)))} \newcommand*{\MagKAsymp}{\MagK} \newcommand*{\MagKLin}{\MagK} -\newcommand*{\PhK}[2]{(#1<0?-pi:0)} +\newcommand*{\PhK}[2]{((#1<0?-pi:0)*\ph@scale)} \newcommand*{\PhKAsymp}{\PhK} \newcommand*{\PhKLin}{\PhK} % \end{macrocode} @@ -922,7 +996,7 @@ Nyquist plots with additional commands, using two different macros % True magnitude and phase parametric functions for a pure delay $G(s)=e^{-Ts}$. The macros take two arguments corresponding to real and imaginary part of the gain to facilitate code reuse between delays, gains, poles, and zeros, but only real gains are supported. The second argument, if supplied, is ignored. % \begin{macrocode} \newcommand*{\MagDel}[2]{0} -\newcommand*{\PhDel}[2]{-#1*t} +\newcommand*{\PhDel}[2]{(-#1*t*\ph@scale)} % \end{macrocode} % \end{macro} % \end{macro} @@ -950,15 +1024,15 @@ Nyquist plots with additional commands, using two different macros % \end{macrocode} % Parametric function for the true phase of a complex pole. % \begin{macrocode} -\newcommand*{\PhPole}[2]{(#1 > 0 ? (#2 > 0 ? - (\n@mod{-atan2((t - (#2)),-(#1))}{2*pi}) : - (-atan2((t - (#2)),-(#1)))) : - (-atan2((t - (#2)),-(#1))))} +\newcommand*{\PhPole}[2]{((#1 > 0 ? (#2 > 0 ? + (\n@mod{-atan2((t - (#2)),-(#1))}{2*pi}) : + (-atan2((t - (#2)),-(#1)))) : + (-atan2((t - (#2)),-(#1))))*\ph@scale)} % \end{macrocode} % Parametric function for linear approximation of the phase of a complex pole. % \begin{macrocode} -\newcommand*{\PhPoleLin}[2]{% - (abs(#1)+abs(#2) == 0 ? -pi/2 : +\newcommand*{\PhPoleLin}[2]{ + ((abs(#1)+abs(#2) == 0 ? -pi/2 : (t < (sqrt(\n@pow{#1}{2} + \n@pow{#2}{2}) / (\n@pow{10}{sqrt(\n@pow{#1}{2}/(\n@pow{#1}{2} + \n@pow{#2}{2}))})) ? (-atan2(-(#2),-(#1))) : @@ -969,13 +1043,13 @@ Nyquist plots with additional commands, using two different macros (\n@pow{10}{sqrt(\n@pow{#1}{2}/(\n@pow{#1}{2} + \n@pow{#2}{2}))}))))*((#2>0?(#1>0?3*pi/2:-pi/2):-pi/2) + atan2(-(#2),-(#1)))/ (log10(\n@pow{10}{sqrt((4*\n@pow{#1}{2})/ - (\n@pow{#1}{2} + \n@pow{#2}{2}))}))))))} + (\n@pow{#1}{2} + \n@pow{#2}{2}))}))))))*\ph@scale)} % \end{macrocode} % Parametric function for asymptotic approximation of the phase of a complex pole. % \begin{macrocode} -\newcommand*{\PhPoleAsymp}[2]{(t < (sqrt(\n@pow{#1}{2} + \n@pow{#2}{2})) ? +\newcommand*{\PhPoleAsymp}[2]{((t < (sqrt(\n@pow{#1}{2} + \n@pow{#2}{2})) ? (-atan2(-(#2),-(#1))) : - (#2>0?(#1>0?3*pi/2:-pi/2):-pi/2))} + (#2>0?(#1>0?3*pi/2:-pi/2):-pi/2))*\ph@scale)} % \end{macrocode} % \end{macro} % \end{macro} @@ -1027,15 +1101,15 @@ Nyquist plots with additional commands, using two different macros % \end{macrocode} % Then, we have true, linear, and asymptotic phase plots for the canonical second order transfer function. % \begin{macrocode} -\newcommand*{\PhCSPoles}[2]{(-atan2((2*(#1)*(#2)*t),(\n@pow{#2}{2} - - \n@pow{t}{2})))} -\newcommand*{\PhCSPolesLin}[2]{(t < (#2 / (\n@pow{10}{abs(#1)})) ? +\newcommand*{\PhCSPoles}[2]{((-atan2((2*(#1)*(#2)*t),(\n@pow{#2}{2} + - \n@pow{t}{2})))*\ph@scale)} +\newcommand*{\PhCSPolesLin}[2]{((t < (#2 / (\n@pow{10}{abs(#1)})) ? 0 : - (t >= (#2 * (\n@pow{10}{abs(#1)})) ? + (t >= (#2 * (\n@pow{10}{abs(#1)})) ? (#1>0 ? -pi : pi) : - (#1>0 ? (-pi*(log10(t*(\n@pow{10}{#1})/#2))/(2*#1)) : - (pi*(log10(t*(\n@pow{10}{abs(#1)})/#2))/(2*abs(#1))))))} -\newcommand*{\PhCSPolesAsymp}[2]{(#1>0?(t<#2?0:-pi):(t<#2?0:pi))} + (#1>0 ? (-pi*(log10(t*(\n@pow{10}{#1})/#2))/(2*#1)) : + (pi*(log10(t*(\n@pow{10}{abs(#1)})/#2))/(2*abs(#1))))))*\ph@scale)} +\newcommand*{\PhCSPolesAsymp}[2]{((#1>0?(t<#2?0:-pi):(t<#2?0:pi))*\ph@scale)} % \end{macrocode} % Plots of the inverse function $G(s)=s^2+2\zeta\omega_n s+\omega_n^2$ are defined to be negative of plots of poles. The |0-| is necessary due to a bug in |gnuplot| (fixed in version 5.4, patchlevel 3). % \begin{macrocode} @@ -1062,11 +1136,11 @@ Nyquist plots with additional commands, using two different macros % \begin{macro}{\MagCSZerosPeak} % These macros are used to add a resonant peak to linear and asymptotic plots of canonical second order poles and zeros. Since the plots are parametric, a separate |\draw| command is needed to add a vertical arrow. % \begin{macrocode} -\newcommand*{\MagCSPolesPeak}[3][]{% +\newcommand*{\MagCSPolesPeak}[3][]{ \draw[#1,->] (axis cs:{#3},{-40*log10(#3)}) -- (axis cs:{#3},{-40*log10(#3)-20*log10(2*abs(#2))}) } -\newcommand*{\MagCSZerosPeak}[3][]{% +\newcommand*{\MagCSZerosPeak}[3][]{ \draw[#1,->] (axis cs:{#3},{40*log10(#3)}) -- (axis cs:{#3},{40*log10(#3)+20*log10(2*abs(#2))}) } @@ -1087,21 +1161,21 @@ Nyquist plots with additional commands, using two different macros % \begin{macro}{\PhSOZerosLin} % Consider a general second order transfer function $G(s) = \frac{1}{s^2 + a s + b}$. We start with true, linear, and asymptotic magnitude plots for this transfer function. % \begin{macrocode} -\newcommand*{\MagSOPoles}[2]{% +\newcommand*{\MagSOPoles}[2]{ (-20*log10(sqrt(\n@pow{#2 - \n@pow{t}{2}}{2} + \n@pow{#1*t}{2})))} -\newcommand*{\MagSOPolesLin}[2]{% +\newcommand*{\MagSOPolesLin}[2]{ (t < sqrt(abs(#2)) ? -20*log10(abs(#2)) : - 40*log10(t))} \newcommand*{\MagSOPolesAsymp}{\MagSOPolesLin} % \end{macrocode} % Then, we have true, linear, and asymptotic phase plots for the general second order transfer function. % \begin{macrocode} -\newcommand*{\PhSOPoles}[2]{(-atan2((#1)*t,((#2) - \n@pow{t}{2})))} -\newcommand*{\PhSOPolesLin}[2]{(#2>0 ? +\newcommand*{\PhSOPoles}[2]{((-atan2((#1)*t,((#2) - \n@pow{t}{2})))*\ph@scale)} +\newcommand*{\PhSOPolesLin}[2]{((#2>0 ? \PhCSPolesLin{(#1/(2*sqrt(#2)))}{(sqrt(#2))} : - (#1>0 ? -pi : pi))} -\newcommand*{\PhSOPolesAsymp}[2]{(#2>0 ? + (#1>0 ? -pi : pi))*\ph@scale)} +\newcommand*{\PhSOPolesAsymp}[2]{((#2>0 ? \PhCSPolesAsymp{(#1/(2*sqrt(#2)))}{(sqrt(#2))} : - (#1>0 ? -pi : pi))} + (#1>0 ? -pi : pi))*\ph@scale)} % \end{macrocode} % Plots of the inverse function $G(s)=s^2+as+b$ are defined to be negative of plots of poles. The |0-| is necessary due to a bug in |gnuplot| (fixed in version 5.4, patchlevel 3). % \begin{macrocode} @@ -1128,12 +1202,12 @@ Nyquist plots with additional commands, using two different macros % \begin{macro}{\MagSOZerosPeak} % These macros are used to add a resonant peak to linear and asymptotic plots of general second order poles and zeros. Since the plots are parametric, a separate |\draw| command is needed to add a vertical arrow. % \begin{macrocode} -\newcommand*{\MagSOPolesPeak}[3][]{% +\newcommand*{\MagSOPolesPeak}[3][]{ \draw[#1,->] (axis cs:{sqrt(abs(#3))},{-20*log10(abs(#3))}) -- (axis cs:{sqrt(abs(#3))},{-20*log10(abs(#3)) - 20*log10(abs(#2/sqrt(abs(#3))))}); } -\newcommand*{\MagSOZerosPeak}[3][]{% +\newcommand*{\MagSOZerosPeak}[3][]{ \draw[#1,->] (axis cs:{sqrt(abs(#3))},{20*log10(abs(#3))}) -- (axis cs:{sqrt(abs(#3))},{20*log10(abs(#3)) + 20*log10(abs(#2/sqrt(abs(#3))))}); @@ -1146,176 +1220,260 @@ Nyquist plots with additional commands, using two different macros % \begin{macro}{\BodeZPK} % This macro takes lists of complex poles and zeros of the form |{re,im}|, and values of gain and delay as inputs and constructs parametric functions for the Bode magnitude and phase plots. This is done by adding together the parametric functions generated by the macros for individual zeros, poles, gain, and delay, described above. The parametric functions are then plotted in a |tikzpicture| environment using the |\addplot| macro. Unless the package is loaded with the option |pgf|, the parametric functions are evaluated using |gnuplot|. \changes{v1.0.1}{2021/10/29}{Pass arbitrary TikZ commands as options.} % \begin{macrocode} -\newcommand{\BodeZPK}[4][approx/true]{% -% \end{macrocode} -% Most of the work is done by the |\parse@opt| and the |\build@ZPK@plot| macros, described in the 'Internal macros' section. The former is used to parse the optional arguments and the latter to extract poles, zeros, gain, and delay from the first mandatory argument and to generate macros |\func@mag| and |\func@ph| that hold the magnitude and phase parametric functions. -% \begin{macrocode} - \parse@opt{#1}% - \gdef\func@mag{}% - \gdef\func@ph{}% - \build@ZPK@plot{\func@mag}{\func@ph}{\opt@approx}{#2}% +\newcommand{\BodeZPK}[4][approx/true]{ % \end{macrocode} -% The |\noexpand| macros below are needed to so that only the macro |\opt@group| is expanded. \changes{v1.0.3}{2021/11/03}{Added Tikz option} +% Most of the work is done by the |\parse@opt| and the |\build@ZPK@plot| macros, described in the 'Internal macros' section. The former is used to parse the optional arguments and the latter to extract poles, zeros, gain, and delay from the first mandatory argument and to generate macros |\func@mag| and |\func@ph| that hold the magnitude and phase parametric functions. The |\noexpand| macros below are needed to so that only the macro |\opt@group| is expanded. \changes{v1.0.3}{2021/11/03}{Added Tikz option}\changes{v1.1.1}{2022/07/31}{Enabled `Hz' and `rad' units for frequency and phase, respectively} % \begin{macrocode} - \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}]% - \noexpand\begin{groupplot}[% + \parse@opt{#1} + \gdef\func@mag{} + \gdef\func@ph{} + \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}]} + \temp@cmd + \build@ZPK@plot{\func@mag}{\func@ph}{\opt@approx}{#2} + \edef\temp@cmd{\noexpand\begin{groupplot}[ bode@style, - xmin={#3}, - xmax={#4}, - domain=#3:#4, + xmin=#3, + xmax=#4, + domain=#3*\freq@scale:#4*\freq@scale, height=2.5cm, xmode=log, group style = {group size = 1 by 2,vertical sep=0.25cm}, \opt@group - ]% - }% - \temp@cmd + ]} + \temp@cmd % \end{macrocode} -% To ensure frequency tick marks on magnitude and the phase plots are always aligned, we use the |groupplot| library. The |\expandafter| chain below is used to expand macros in the plot and group optional arguments. +% To ensure frequency tick marks on magnitude and the phase plots are always aligned, we use the |groupplot| library. The |\noexpand| and |\unexpanded\expandafter| macros below are used to expand macros in the plot and group optional arguments. % \begin{macrocode} - \edef\temp@mag@cmd{\noexpand\nextgroupplot[ytick distance=20, ylabel={Gain (dB)}, xmajorticks=false, \optmag@axes] - \noexpand\addplot[variable=t, thick, \optmag@plot]} - \edef\temp@ph@cmd{\noexpand\nextgroupplot[ph@filter, xlabel={Frequency (rad/s)}, \optph@axes] - \noexpand\addplot[variable=t, thick, \optph@plot]} + \edef\temp@mag@cmd{\noexpand\nextgroupplot [ylabel={Gain (dB)}, xmajorticks=false, \optmag@axes] + \noexpand\addplot [freq@filter, variable=t, thick, \optmag@plot]} + \edef\temp@ph@cmd{\noexpand\nextgroupplot [ph@y@label, freq@label, \optph@axes] + \noexpand\addplot [freq@filter, variable=t, thick, \optph@plot]} + \if@pgfarg + \temp@mag@cmd {\func@mag}; + \optmag@commands + \temp@ph@cmd {\func@ph}; + \optph@commands + \else % \end{macrocode} -% In |gnuplot| mode, we increment the |gnuplot@id| counter before every plot to make sure that new and reusable |.gnuplot| and |.table| files are generated for every plot. +% In |gnuplot| mode, we increment the |gnuplot@id| counter before every plot to make sure that new and reusable |.gnuplot| and |.table| files are generated for every plot. We use |raw gnuplot| to make sure that the tables generated by |gnuplot| use the correct phase and frequency units as supplied by the user. % \begin{macrocode} - \if@pgfarg\else - \edef\temp@mag@cmd{\noexpand\stepcounter{gnuplot@id} \unexpanded\expandafter{\temp@mag@cmd} gnuplot[gnuplot@prefix]} - \edef\temp@ph@cmd{\noexpand\stepcounter{gnuplot@id} \unexpanded\expandafter{\temp@ph@cmd} gnuplot[gnuplot@prefix]} + \stepcounter{gnuplot@id} + \temp@mag@cmd gnuplot [raw gnuplot, gnuplot@prefix] + { set table $meta; + set dummy t; + set logscale x 10; + set xrange [#3*\freq@scale:#4*\freq@scale]; + set samples \pgfkeysvalueof{/pgfplots/samples}; + plot \func@mag; + set table "\bodeplot@prefix\arabic{gnuplot@id}.table"; + plot "$meta" using ($1/(\freq@scale)):($2); + }; + \optmag@commands + \stepcounter{gnuplot@id} + \temp@ph@cmd gnuplot [raw gnuplot, gnuplot@prefix] + { set table $meta; + set dummy t; + set logscale x 10; + set xrange [#3*\freq@scale:#4*\freq@scale]; + set samples \pgfkeysvalueof{/pgfplots/samples}; + plot \func@ph; + set table "\bodeplot@prefix\arabic{gnuplot@id}.table"; + plot "$meta" using ($1/(\freq@scale)):($2); + }; + \optph@commands \fi - \temp@mag@cmd {\func@mag}; - \optmag@commands - \temp@ph@cmd {\func@ph}; - \optph@commands \end{groupplot} \end{tikzpicture} } % \end{macrocode} % \end{macro} % \begin{macro}{\BodeTF} -% Implementation of this macro is very similar to the |\BodeZPK| macro above. The only difference is the lack of linear and asymptotic plots and slightly different parsing of the mandatory arguments. \changes{v1.0.3}{2021/11/03}{Added Tikz option} \changes{v1.1.0}{2022/07/06}{Fixed phase wrapping in gnuplot mode} +% Implementation of this macro is very similar to the |\BodeZPK| macro above. The only difference is the lack of linear and asymptotic plots and slightly different parsing of the mandatory arguments. \changes{v1.0.3}{2021/11/03}{Added Tikz option} \changes{v1.1.0}{2022/07/06}{Fixed phase wrapping in gnuplot mode}\changes{v1.1.1}{2022/07/31}{Enabled `Hz' and `rad' units for frequency and phase, respectively} % \begin{macrocode} -\newcommand{\BodeTF}[4][]{% - \parse@opt{#1}% - \gdef\func@mag{}% - \gdef\func@ph{}% - \build@TF@plot{\func@mag}{\func@ph}{#2}% - \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}]% - \noexpand\begin{groupplot}[% +\newcommand{\BodeTF}[4][]{ + \parse@opt{#1} + \gdef\func@mag{} + \gdef\func@ph{} + \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}]} + \temp@cmd + \build@TF@plot{\func@mag}{\func@ph}{#2} + \edef\temp@cmd{\noexpand\begin{groupplot}[ bode@style, - xmin={#3}, - xmax={#4}, - domain=#3:#4, + xmin=#3, + xmax=#4, + domain=#3*\freq@scale:#4*\freq@scale, height=2.5cm, xmode=log, group style = {group size = 1 by 2,vertical sep=0.25cm}, \opt@group - ]% - }% - \temp@cmd - \edef\temp@mag@cmd{\noexpand\nextgroupplot[ytick distance=20, ylabel={Gain (dB)}, xmajorticks=false, \optmag@axes] - \noexpand\addplot[variable=t, thick, \optmag@plot]} - \edef\temp@ph@cmd{\noexpand\nextgroupplot[ph@filter, xlabel={Frequency (rad/s)}, \optph@axes] - \noexpand\addplot[variable=t, thick, \optph@plot]} - \if@pgfarg\else - \edef\temp@mag@cmd{\noexpand\stepcounter{gnuplot@id} \unexpanded\expandafter{\temp@mag@cmd} gnuplot[gnuplot@prefix]} - \edef\temp@ph@cmd{\noexpand\stepcounter{gnuplot@id} \unexpanded\expandafter{\temp@ph@cmd} gnuplot[gnuplot@prefix]} - \fi - \temp@mag@cmd {\func@mag}; - \optmag@commands + ]} + \temp@cmd + \edef\temp@mag@cmd{\noexpand\nextgroupplot [ylabel={Gain (dB)}, xmajorticks=false, \optmag@axes] + \noexpand\addplot [freq@filter, variable=t, thick, \optmag@plot]} + \edef\temp@ph@cmd{\noexpand\nextgroupplot [ph@y@label, freq@label, \optph@axes] + \noexpand\addplot [freq@filter, variable=t, thick, \optph@plot]} \if@pgfarg - \temp@ph@cmd {\n@mod{\func@ph}{2*pi}}; + \temp@mag@cmd {\func@mag}; + \optmag@commands + \temp@ph@cmd {\n@mod{\func@ph}{2*pi*\ph@scale}}; + \optph@commands \else - \temp@ph@cmd {'+' using (t):\func@ph smooth unwrap}; + \stepcounter{gnuplot@id} + \temp@mag@cmd gnuplot [raw gnuplot, gnuplot@prefix] + { set table $meta; + set dummy t; + set logscale x 10; + set xrange [#3*\freq@scale:#4*\freq@scale]; + set samples \pgfkeysvalueof{/pgfplots/samples}; + plot \func@mag; + set table "\bodeplot@prefix\arabic{gnuplot@id}.table"; + plot "$meta" using ($1/(\freq@scale)):($2); + }; + \optmag@commands + \stepcounter{gnuplot@id} + \temp@ph@cmd gnuplot [raw gnuplot, gnuplot@prefix] + { set table $meta; + set dummy t; + set logscale x 10; + set trange [#3*\freq@scale:#4*\freq@scale]; + set samples \pgfkeysvalueof{/pgfplots/samples}; + plot '+' using (t) : ((\func@ph)/(\ph@scale)) smooth unwrap; + set table "\bodeplot@prefix\arabic{gnuplot@id}.table"; + plot "$meta" using ($1/(\freq@scale)):($2*\ph@scale); + }; + \optph@commands \fi - \optph@commands \end{groupplot} \end{tikzpicture} } % \end{macrocode} % \end{macro} % \begin{macro}{\addBodeZPKPlots} -% This macro is designed to issues multiple |\addplot| macros for the same set of poles, zeros, gain, and delay. All of the work is done by the |\build@ZPK@plot| macro. \changes{v1.0.1}{2021/10/29}{Improved optional argument handling.} +% This macro is designed to issues multiple |\addplot| macros for the same set of poles, zeros, gain, and delay. All of the work is done by the |\build@ZPK@plot| macro. \changes{v1.0.1}{2021/10/29}{Improved optional argument handling.}\changes{v1.1.1}{2022/07/31}{Enabled `Hz' and `rad' units for frequency and phase, respectively} % \begin{macrocode} -\newcommand{\addBodeZPKPlots}[3][true/{}]{% - \foreach \approx/\opt in {#1} {% - \gdef\plot@macro{}% - \gdef\temp@macro{}% - \ifnum\pdfstrcmp{#2}{phase}=0 - \build@ZPK@plot{\temp@macro}{\plot@macro}{\approx}{#3}% +\newcommand{\addBodeZPKPlots}[3][true/{}]{ + \foreach \approx/\opt in {#1} { + \gdef\plot@macro{} + \gdef\temp@macro{} + \ifnum\pdf@strcmp{#2}{phase}=0 + \build@ZPK@plot{\temp@macro}{\plot@macro}{\approx}{#3} \else - \build@ZPK@plot{\plot@macro}{\temp@macro}{\approx}{#3}% + \build@ZPK@plot{\plot@macro}{\temp@macro}{\approx}{#3} \fi + \edef\supplied@domain{\pgfkeysvalueof{/pgfplots/domain}} + \edef\domain@start{\expandafter\get@interval@start\supplied@domain\@nil} + \edef\domain@end{\expandafter\get@interval@end\supplied@domain\@nil} \if@pgfarg - \edef\temp@cmd{\noexpand\addplot[variable=t,thick,\opt]}% + \edef\temp@cmd{\noexpand\addplot [freq@filter, domain=\domain@start*\freq@scale:\domain@end*\freq@scale, variable=t, thick, \opt]} \temp@cmd {\plot@macro}; \else - \stepcounter{gnuplot@id}% - \edef\temp@cmd{\noexpand\addplot[variable=t,thick,\opt]} - \temp@cmd gnuplot[gnuplot@prefix] {\plot@macro}; + \stepcounter{gnuplot@id} + \edef\temp@cmd{\noexpand\addplot [variable=t, thick, \opt]} + \temp@cmd gnuplot [raw gnuplot, gnuplot@prefix] + { set table $meta; + set dummy t; + set logscale x 10; + set xrange [\domain@start*\freq@scale:\domain@end*\freq@scale]; + set samples \pgfkeysvalueof{/pgfplots/samples}; + plot \plot@macro; + set table "\bodeplot@prefix\arabic{gnuplot@id}.table"; + plot "$meta" using ($1/(\freq@scale)):($2); + }; \fi - }% + } } % \end{macrocode} %\end{macro} % \begin{macro}{\addBodeTFPlot} -% This macro is designed to issues a single |\addplot| macros for the set of coefficients and delay. All of the work is done by the |\build@TF@plot| macro. \changes{v1.1.0}{2022/07/06}{Fixed phase wrapping in gnuplot mode} +% This macro is designed to issues a single |\addplot| macros for the set of coefficients and delay. All of the work is done by the |\build@TF@plot| macro. \changes{v1.1.0}{2022/07/06}{Fixed phase wrapping in gnuplot mode}\changes{v1.1.1}{2022/07/31}{Enabled `Hz' and `rad' units for frequency and phase, respectively} % \begin{macrocode} -\newcommand{\addBodeTFPlot}[3][thick]{% - \gdef\plot@macro{}% - \gdef\temp@macro{}% - \ifnum\pdfstrcmp{#2}{phase}=0 - \build@TF@plot{\temp@macro}{\plot@macro}{#3}% +\newcommand{\addBodeTFPlot}[3][thick]{ + \gdef\plot@macro{} + \gdef\temp@macro{} + \ifnum\pdf@strcmp{#2}{phase}=0 + \build@TF@plot{\temp@macro}{\plot@macro}{#3} \else - \build@TF@plot{\plot@macro}{\temp@macro}{#3}% + \build@TF@plot{\plot@macro}{\temp@macro}{#3} \fi + \edef\supplied@domain{\pgfkeysvalueof{/pgfplots/domain}} + \edef\domain@start{\expandafter\get@interval@start\supplied@domain\@nil} + \edef\domain@end{\expandafter\get@interval@end\supplied@domain\@nil} \if@pgfarg - \ifnum\pdfstrcmp{#2}{phase}=0 - \addplot[variable=t,#1]{\n@mod{\plot@macro}{2*pi}}; + \ifnum\pdf@strcmp{#2}{phase}=0 + \addplot [freq@filter, domain=\domain@start*\freq@scale:\domain@end*\freq@scale, variable=t, #1]{\n@mod{\plot@macro}{2*pi}}; \else - \addplot[variable=t,#1]{\plot@macro}; + \addplot [freq@filter, domain=\domain@start*\freq@scale:\domain@end*\freq@scale, variable=t, #1]{\plot@macro}; \fi \else - \stepcounter{gnuplot@id}% - \ifnum\pdfstrcmp{#2}{phase}=0 - \addplot[variable=t,#1] gnuplot[gnuplot@prefix] {'+' using (t):\plot@macro smooth unwrap} + \stepcounter{gnuplot@id} + \ifnum\pdf@strcmp{#2}{phase}=0 + \addplot [variable=t, #1] gnuplot [raw gnuplot, gnuplot@prefix] + { set table $meta; + set dummy t; + set logscale x 10; + set trange [\domain@start*\freq@scale:\domain@end*\freq@scale]; + set samples \pgfkeysvalueof{/pgfplots/samples}; + plot '+' using (t) : ((\plot@macro)/(\ph@scale)) smooth unwrap; + set table "\bodeplot@prefix\arabic{gnuplot@id}.table"; + plot "$meta" using ($1/(\freq@scale)):($2*\ph@scale); + }; \else - \addplot[variable=t,#1] gnuplot[gnuplot@prefix] {\plot@macro}; + \addplot [variable=t, #1] gnuplot [raw gnuplot, gnuplot@prefix] + { set table $meta; + set dummy t; + set logscale x 10; + set xrange [\domain@start*\freq@scale:\domain@end*\freq@scale]; + set samples \pgfkeysvalueof{/pgfplots/samples}; + plot \plot@macro; + set table "\bodeplot@prefix\arabic{gnuplot@id}.table"; + plot "$meta" using ($1/(\freq@scale)):($2); + }; \fi \fi } % \end{macrocode} %\end{macro} % \begin{macro}{\addBodeComponentPlot} -% This macro is designed to issue a single |\addplot| macro capable of plotting linear combinations of the basic components described in Section \ref{sec:BasicComponents}. The only work to do here is to handle the |pgf| package option. +% This macro is designed to issue a single |\addplot| macro capable of plotting linear combinations of the basic components described in Section \ref{sec:BasicComponents}. The only work to do here is to handle the |pgf| package option.\changes{v1.1.1}{2022/07/31}{Enabled `Hz' and `rad' units for frequency and phase, respectively} % \begin{macrocode} -\newcommand{\addBodeComponentPlot}[2][thick]{% +\newcommand{\addBodeComponentPlot}[2][thick]{ + \edef\supplied@domain{\pgfkeysvalueof{/pgfplots/domain}} + \edef\domain@start{\expandafter\get@interval@start\supplied@domain\@nil} + \edef\domain@end{\expandafter\get@interval@end\supplied@domain\@nil} \if@pgfarg - \addplot[variable=t,#1]{#2}; + \addplot [freq@filter, domain=\domain@start*\freq@scale:\domain@end*\freq@scale, variable=t, #1] {#2}; \else - \stepcounter{gnuplot@id}% - \addplot[variable=t,#1] gnuplot[gnuplot@prefix] {#2}; + \stepcounter{gnuplot@id} + \addplot [variable=t, #1] gnuplot [raw gnuplot, gnuplot@prefix] + { set table $meta; + set dummy t; + set logscale x 10; + set xrange [\domain@start*\freq@scale:\domain@end*\freq@scale]; + set samples \pgfkeysvalueof{/pgfplots/samples}; + plot #2; + set table "\bodeplot@prefix\arabic{gnuplot@id}.table"; + plot "$meta" using ($1/(\freq@scale)):($2); + }; \fi } % \end{macrocode} %\end{macro} % \begin{environment}{BodePhPlot} -% An environment to host phase plot macros that pass parametric functions to |\addplot| macros. Uses the defaults specified in |bode@style| to create a shortcut that includes the |tikzpicture| and |semilogaxis| environments.\changes{v1.1.0}{2022/07/20}{Added separate environments for phase and magnitude plots} +% An environment to host phase plot macros that pass parametric functions to |\addplot| macros. Uses the defaults specified in |bode@style| to create a shortcut that includes the |tikzpicture| and |semilogaxis| environments.\changes{v1.1.0}{2022/07/20}{Added separate environments for phase and magnitude plots}\changes{v1.1.1}{2022/07/31}{Enabled `Hz' and `rad' units for frequency and phase, respectively} % \begin{macrocode} -\newenvironment{BodePhPlot}[3][]{% - \parse@env@opt{#1}% +\newenvironment{BodePhPlot}[3][]{ + \parse@env@opt{#1} \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}] - \noexpand\begin{semilogxaxis}[% - ph@filter, + \noexpand\begin{semilogxaxis}[ + ph@y@label, + freq@label, bode@style, xmin={#2}, xmax={#3}, domain=#2:#3, height=2.5cm, - xlabel={Frequency (rad/s)}, \unexpanded\expandafter{\opt@axes} - ]% + ] } \temp@cmd }{ @@ -1325,22 +1483,21 @@ Nyquist plots with additional commands, using two different macros % \end{macrocode} % \end{environment} % \begin{environment}{BodeMagPlot} -% An environment to host magnitude plot macros that pass parametric functions to |\addplot| macros. Uses the defaults specified in |bode@style| to create a shortcut that includes the |tikzpicture| and |semilogaxis| environments.\changes{v1.1.0}{2022/07/20}{Added separate environments for phase and magnitude plots} +% An environment to host magnitude plot macros that pass parametric functions to |\addplot| macros. Uses the defaults specified in |bode@style| to create a shortcut that includes the |tikzpicture| and |semilogaxis| environments.\changes{v1.1.0}{2022/07/20}{Added separate environments for phase and magnitude plots}\changes{v1.1.1}{2022/07/31}{Enabled `Hz' and `rad' units for frequency and phase, respectively} % \begin{macrocode} -\newenvironment{BodeMagPlot}[3][]{% - \parse@env@opt{#1}% +\newenvironment{BodeMagPlot}[3][]{ + \parse@env@opt{#1} \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}] - \noexpand\begin{semilogxaxis}[% + \noexpand\begin{semilogxaxis}[ bode@style, + freq@label, xmin={#2}, xmax={#3}, domain=#2:#3, height=2.5cm, - xlabel={Frequency (rad/s)}, ylabel={Gain (dB)}, - ytick distance=40, \unexpanded\expandafter{\opt@axes} - ]% + ] } \temp@cmd }{ @@ -1350,21 +1507,20 @@ Nyquist plots with additional commands, using two different macros % \end{macrocode} % \end{environment} % \begin{environment}{BodePlot} -% Same as |BodeMagPlot|. The |BodePlot| environment is deprecated as of v1.1.0, please use the |BodePhPlot| and |BodeMagPlot| environments instead.\changes{v1.0.3}{2021/11/03}{Added tikz option to environments}\changes{v1.1.0}{2022/02/20}{Deprecated BodePlot environment} +% Same as |BodeMagPlot|. The |BodePlot| environment is deprecated as of v1.1.0, please use the |BodePhPlot| and |BodeMagPlot| environments instead.\changes{v1.0.3}{2021/11/03}{Added tikz option to environments}\changes{v1.1.0}{2022/02/20}{Deprecated BodePlot environment}\changes{v1.1.1}{2022/07/31}{Enabled `Hz' and `rad' units for frequency and phase, respectively} % \begin{macrocode} -\newenvironment{BodePlot}[3][]{% - \PackageWarning{bodeplot}{Since v1.1.0, the BodePlot environment returns phase plots in radian units only. Please use the BodePhPlot environment if degree units are needed.}% - \parse@env@opt{#1}% +\newenvironment{BodePlot}[3][]{ + \parse@env@opt{#1} \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}] - \noexpand\begin{semilogxaxis}[% + \noexpand\begin{semilogxaxis}[ bode@style, + freq@label, xmin={#2}, xmax={#3}, domain=#2:#3, height=2.5cm, - xlabel={Frequency (rad/s)}, \unexpanded\expandafter{\opt@axes} - ]% + ] } \temp@cmd }{ @@ -1377,18 +1533,18 @@ Nyquist plots with additional commands, using two different macros % \begin{macro}{\add@feature} % This is an internal macro to add a basic component (pole, zero, gain, or delay), described using one of the macros in Section \ref{sec:BasicComponents} (input |#2|), to a parametric function stored in a global macro (input |#1|). The basic component value (input |#3|) is a complex number of the form |{re,im}|. If the imaginary part is missing, it is assumed to be zero. Implementation made possible by \href{https://tex.stackexchange.com/a/619637/110602}{this StackExchange answer}. % \begin{macrocode} -\newcommand*{\add@feature}[3]{% - \ifcat$\detokenize\expandafter{#1}$% - \xdef#1{\unexpanded\expandafter{#1 0+#2}}% +\newcommand*{\add@feature}[3]{ + \ifcat$\detokenize\expandafter{#1}$ + \xdef#1{\unexpanded\expandafter{#1 0+#2}} \else - \xdef#1{\unexpanded\expandafter{#1+#2}}% + \xdef#1{\unexpanded\expandafter{#1+#2}} \fi - \foreach \y [count=\n] in #3 {% - \xdef#1{\unexpanded\expandafter{#1}{\y}}% - \xdef\Last@LoopValue{\n}% - }% - \ifnum\Last@LoopValue=1% - \xdef#1{\unexpanded\expandafter{#1}{0}}% + \foreach \y [count=\n] in #3 { + \xdef#1{\unexpanded\expandafter{#1}{\y}} + \xdef\Last@LoopValue{\n} + } + \ifnum\Last@LoopValue=1 + \xdef#1{\unexpanded\expandafter{#1}{0}} \fi } % \end{macrocode} @@ -1396,256 +1552,257 @@ Nyquist plots with additional commands, using two different macros % \begin{macro}{\build@ZPK@plot} % This is an internal macro to build parametric Bode magnitude and phase plots by concatenating basic component (pole, zero, gain, or delay) macros (Section \ref{sec:BasicComponents}) to global magnitude and phase macros (inputs |#1| and |#2|). The |\add@feature| macro is used to do the concatenation. The basic component macros are inferred from a |feature/{values}| list, where |feature| is one of |z|,|p|,|k|, and |d|, for zeros, poles, gain, and delay, respectively, and |{values}| is a comma separated list of comma separated lists (complex numbers of the form |{re,im}|). If the imaginary part is missing, it is assumed to be zero. % \begin{macrocode} -\newcommand{\build@ZPK@plot}[4]{% - \foreach \feature/\values in {#4} {% - \ifnum\pdfstrcmp{\feature}{z}=0 - \foreach \z in \values {% - \ifnum\pdfstrcmp{#3}{linear}=0 - \add@feature{#2}{\PhZeroLin}{\z}% - \add@feature{#1}{\MagZeroLin}{\z}% +\newcommand{\build@ZPK@plot}[4]{ + \foreach \feature/\values in {#4} { + \ifnum\pdf@strcmp{\feature}{z}=0 + \foreach \z in \values { + \ifnum\pdf@strcmp{#3}{linear}=0 + \add@feature{#2}{\PhZeroLin}{\z} + \add@feature{#1}{\MagZeroLin}{\z} \else - \ifnum\pdfstrcmp{#3}{asymptotic}=0 - \add@feature{#2}{\PhZeroAsymp}{\z}% - \add@feature{#1}{\MagZeroAsymp}{\z}% + \ifnum\pdf@strcmp{#3}{asymptotic}=0 + \add@feature{#2}{\PhZeroAsymp}{\z} + \add@feature{#1}{\MagZeroAsymp}{\z} \else - \add@feature{#2}{\PhZero}{\z}% - \add@feature{#1}{\MagZero}{\z}% + \add@feature{#2}{\PhZero}{\z} + \add@feature{#1}{\MagZero}{\z} \fi \fi - }% + } \fi - \ifnum\pdfstrcmp{\feature}{p}=0 - \foreach \p in \values {% - \ifnum\pdfstrcmp{#3}{linear}=0 - \add@feature{#2}{\PhPoleLin}{\p}% - \add@feature{#1}{\MagPoleLin}{\p}% + \ifnum\pdf@strcmp{\feature}{p}=0 + \foreach \p in \values { + \ifnum\pdf@strcmp{#3}{linear}=0 + \add@feature{#2}{\PhPoleLin}{\p} + \add@feature{#1}{\MagPoleLin}{\p} \else - \ifnum\pdfstrcmp{#3}{asymptotic}=0 - \add@feature{#2}{\PhPoleAsymp}{\p}% - \add@feature{#1}{\MagPoleAsymp}{\p}% + \ifnum\pdf@strcmp{#3}{asymptotic}=0 + \add@feature{#2}{\PhPoleAsymp}{\p} + \add@feature{#1}{\MagPoleAsymp}{\p} \else - \add@feature{#2}{\PhPole}{\p}% - \add@feature{#1}{\MagPole}{\p}% + \add@feature{#2}{\PhPole}{\p} + \add@feature{#1}{\MagPole}{\p} \fi \fi - }% + } \fi - \ifnum\pdfstrcmp{\feature}{k}=0 - \ifnum\pdfstrcmp{#3}{linear}=0 - \add@feature{#2}{\PhKLin}{\values}% - \add@feature{#1}{\MagKLin}{\values}% + \ifnum\pdf@strcmp{\feature}{k}=0 + \ifnum\pdf@strcmp{#3}{linear}=0 + \add@feature{#2}{\PhKLin}{\values} + \add@feature{#1}{\MagKLin}{\values} \else - \ifnum\pdfstrcmp{#3}{asymptotic}=0 - \add@feature{#2}{\PhKAsymp}{\values}% - \add@feature{#1}{\MagKAsymp}{\values}% + \ifnum\pdf@strcmp{#3}{asymptotic}=0 + \add@feature{#2}{\PhKAsymp}{\values} + \add@feature{#1}{\MagKAsymp}{\values} \else - \add@feature{#2}{\PhK}{\values}% - \add@feature{#1}{\MagK}{\values}% + \add@feature{#2}{\PhK}{\values} + \add@feature{#1}{\MagK}{\values} \fi \fi \fi - \ifnum\pdfstrcmp{\feature}{d}=0 - \ifnum\pdfstrcmp{#3}{linear}=0 - \PackageError {bodeplot} {Linear approximation for pure delays is not + \ifnum\pdf@strcmp{\feature}{d}=0 + \ifnum\pdf@strcmp{#3}{linear}=0 + \PackageError {bodeplot} {Linear approximation for pure delays is not supported.} {Plot the true Bode plot using `true' instead of `linear'.} \else - \ifnum\pdfstrcmp{#3}{asymptotic}=0 - \PackageError {bodeplot} {Asymptotic approximation for pure delays is not + \ifnum\pdf@strcmp{#3}{asymptotic}=0 + \PackageError {bodeplot} {Asymptotic approximation for pure delays is not supported.} {Plot the true Bode plot using `true' instead of `asymptotic'.} \else \ifdim\values pt < 0pt \PackageError {bodeplot} {Delay needs to be a positive number.} \fi - \add@feature{#2}{\PhDel}{\values}% - \add@feature{#1}{\MagDel}{\values}% + \add@feature{#2}{\PhDel}{\values} + \add@feature{#1}{\MagDel}{\values} \fi \fi \fi - }% + } } % \end{macrocode} %\end{macro} % \begin{macro}{\build@TF@plot} -% This is an internal macro to build parametric Bode magnitude and phase functions by computing the magnitude and the phase given numerator and denominator coefficients and delay (input |#3|). The functions are assigned to user-supplied global magnitude and phase macros (inputs |#1| and |#2|). \changes{v1.0.8}{2022/07/05}{Included phase due to delay in wrapping.} +% This is an internal macro to build parametric Bode magnitude and phase functions by computing the magnitude and the phase given numerator and denominator coefficients and delay (input |#3|). The functions are assigned to user-supplied global magnitude and phase macros (inputs |#1| and |#2|). \changes{v1.0.8}{2022/07/05}{Included phase due to delay in wrapping.}\changes{v1.1.1}{2022/07/31}{Enabled `Hz' and `rad' units for frequency and phase, respectively} % \begin{macrocode} -\newcommand{\build@TF@plot}[3]{% - \gdef\num@real{0}% - \gdef\num@im{0}% - \gdef\den@real{0}% - \gdef\den@im{0}% - \gdef\loop@delay{0}% - \foreach \feature/\values in {#3} {% - \ifnum\pdfstrcmp{\feature}{num}=0 - \foreach \numcoeff [count=\numpow] in \values {% - \xdef\num@degree{\numpow}% - }% - \foreach \numcoeff [count=\numpow] in \values {% - \pgfmathtruncatemacro{\currentdegree}{\num@degree-\numpow}% +\newcommand{\build@TF@plot}[3]{ + \gdef\num@real{0} + \gdef\num@im{0} + \gdef\den@real{0} + \gdef\den@im{0} + \gdef\loop@delay{0} + \foreach \feature/\values in {#3} { + \ifnum\pdf@strcmp{\feature}{num}=0 + \foreach \numcoeff [count=\numpow] in \values { + \xdef\num@degree{\numpow} + } + \foreach \numcoeff [count=\numpow] in \values { + \pgfmathtruncatemacro{\currentdegree}{\num@degree-\numpow} \ifnum\currentdegree = 0 - \xdef\num@real{\num@real+\numcoeff}% + \xdef\num@real{\num@real+\numcoeff} \else \ifodd\currentdegree \xdef\num@im{\num@im+(\numcoeff*(\n@pow{-1}{(\currentdegree-1)/2})*% - (\n@pow{t}{\currentdegree}))}% + (\n@pow{t}{\currentdegree}))} \else \xdef\num@real{\num@real+(\numcoeff*(\n@pow{-1}{(\currentdegree)/2})*% - (\n@pow{t}{\currentdegree}))}% + (\n@pow{t}{\currentdegree}))} \fi \fi - }% + } \fi - \ifnum\pdfstrcmp{\feature}{den}=0 - \foreach \dencoeff [count=\denpow] in \values {% - \xdef\den@degree{\denpow}% - }% - \foreach \dencoeff [count=\denpow] in \values {% - \pgfmathtruncatemacro{\currentdegree}{\den@degree-\denpow}% + \ifnum\pdf@strcmp{\feature}{den}=0 + \foreach \dencoeff [count=\denpow] in \values { + \xdef\den@degree{\denpow} + } + \foreach \dencoeff [count=\denpow] in \values { + \pgfmathtruncatemacro{\currentdegree}{\den@degree-\denpow} \ifnum\currentdegree = 0 - \xdef\den@real{\den@real+\dencoeff}% + \xdef\den@real{\den@real+\dencoeff} \else \ifodd\currentdegree \xdef\den@im{\den@im+(\dencoeff*(\n@pow{-1}{(\currentdegree-1)/2})*% - (\n@pow{t}{\currentdegree}))}% + (\n@pow{t}{\currentdegree}))} \else \xdef\den@real{\den@real+(\dencoeff*(\n@pow{-1}{(\currentdegree)/2})*% - (\n@pow{t}{\currentdegree}))}% + (\n@pow{t}{\currentdegree}))} \fi \fi - }% + } \fi - \ifnum\pdfstrcmp{\feature}{d}=0 - \xdef\loop@delay{\values}% + \ifnum\pdf@strcmp{\feature}{d}=0 + \xdef\loop@delay{\values} \fi - }% - \xdef#2{(atan2((\num@im),(\num@real))-atan2((\den@im),% - (\den@real))-\loop@delay*t)}% + } + \xdef#2{((atan2((\num@im),(\num@real))-atan2((\den@im),% + (\den@real))-\loop@delay*t)*(\ph@scale))} \xdef#1{(20*log10(sqrt((\n@pow{\num@real}{2})+(\n@pow{\num@im}{2})))-% - 20*log10(sqrt((\n@pow{\den@real}{2})+(\n@pow{\den@im}{2}))))}% + 20*log10(sqrt((\n@pow{\den@real}{2})+(\n@pow{\den@im}{2}))))} } % \end{macrocode} %\end{macro} % \begin{macro}{\parse@opt} % Parses options supplied to the main Bode macros. A |for| loop over tuples of the form |\obj/\typ/\opt| with a long list of nested if-else statements does the job. If the input |\obj| is |plot|, |axes|, |group|, |approx|, or |tikz| the corresponding |\opt| are passed, unexpanded, to the |\addplot| macro, the |\nextgroupplot| macro, the |groupplot| environment, the |\build@ZPK@plot| macro, and the |tikzpicture| environment, respectively. If |\obj| is |commands|, the corresponding |\opt| are stored, unexpanded, in the macros |\optph@commands| and |\optmag@commands|, to be executed in appropriate |axis| environments. \changes{v1.0.3}{2021/11/03}{Added Tikz option} \changes{v1.0.5}{2021/11/15}{Fixed a bug} % \begin{macrocode} -\newcommand{\parse@opt}[1]{% - \gdef\optmag@axes{}% - \gdef\optph@axes{}% - \gdef\optph@plot{}% - \gdef\optmag@plot{}% - \gdef\opt@group{}% - \gdef\opt@approx{}% - \gdef\optph@commands{}% - \gdef\optmag@commands{}% - \gdef\opt@tikz{}% - \foreach \obj/\typ/\opt in {#1} {% - \ifnum\pdfstrcmp{\unexpanded\expandafter{\obj}}{plot}=0 - \ifnum\pdfstrcmp{\unexpanded\expandafter{\typ}}{mag}=0 - \xdef\optmag@plot{\unexpanded\expandafter{\opt}}% +\newcommand{\parse@opt}[1]{ + \gdef\optmag@axes{} + \gdef\optph@axes{} + \gdef\optph@plot{} + \gdef\optmag@plot{} + \gdef\opt@group{} + \gdef\opt@approx{} + \gdef\optph@commands{} + \gdef\optmag@commands{} + \gdef\opt@tikz{} + \foreach \obj/\typ/\opt in {#1} { + \ifnum\pdf@strcmp{\unexpanded\expandafter{\obj}}{plot}=0 + \ifnum\pdf@strcmp{\unexpanded\expandafter{\typ}}{mag}=0 + \xdef\optmag@plot{\unexpanded\expandafter{\opt}} \else - \ifnum\pdfstrcmp{\unexpanded\expandafter{\typ}}{ph}=0 - \xdef\optph@plot{\unexpanded\expandafter{\opt}}% + \ifnum\pdf@strcmp{\unexpanded\expandafter{\typ}}{ph}=0 + \xdef\optph@plot{\unexpanded\expandafter{\opt}} \else - \xdef\optmag@plot{\unexpanded\expandafter{\opt}}% - \xdef\optph@plot{\unexpanded\expandafter{\opt}}% + \xdef\optmag@plot{\unexpanded\expandafter{\opt}} + \xdef\optph@plot{\unexpanded\expandafter{\opt}} \fi \fi \else - \ifnum\pdfstrcmp{\unexpanded\expandafter{\obj}}{axes}=0 - \ifnum\pdfstrcmp{\unexpanded\expandafter{\typ}}{mag}=0 - \xdef\optmag@axes{\unexpanded\expandafter{\opt}}% + \ifnum\pdf@strcmp{\unexpanded\expandafter{\obj}}{axes}=0 + \ifnum\pdf@strcmp{\unexpanded\expandafter{\typ}}{mag}=0 + \xdef\optmag@axes{\unexpanded\expandafter{\opt}} \else - \ifnum\pdfstrcmp{\unexpanded\expandafter{\typ}}{ph}=0 - \xdef\optph@axes{\unexpanded\expandafter{\opt}}% + \ifnum\pdf@strcmp{\unexpanded\expandafter{\typ}}{ph}=0 + \xdef\optph@axes{\unexpanded\expandafter{\opt}} \else - \xdef\optmag@axes{\unexpanded\expandafter{\opt}}% - \xdef\optph@axes{\unexpanded\expandafter{\opt}}% + \xdef\optmag@axes{\unexpanded\expandafter{\opt}} + \xdef\optph@axes{\unexpanded\expandafter{\opt}} \fi \fi \else - \ifnum\pdfstrcmp{\unexpanded\expandafter{\obj}}{group}=0 - \xdef\opt@group{\unexpanded\expandafter{\opt}}% + \ifnum\pdf@strcmp{\unexpanded\expandafter{\obj}}{group}=0 + \xdef\opt@group{\unexpanded\expandafter{\opt}} \else - \ifnum\pdfstrcmp{\unexpanded\expandafter{\obj}}{approx}=0 - \xdef\opt@approx{\unexpanded\expandafter{\opt}}% + \ifnum\pdf@strcmp{\unexpanded\expandafter{\obj}}{approx}=0 + \xdef\opt@approx{\unexpanded\expandafter{\opt}} \else - \ifnum\pdfstrcmp{\unexpanded\expandafter{\obj}}{commands}=0 - \ifnum\pdfstrcmp{\unexpanded\expandafter{\typ}}{ph}=0 - \xdef\optph@commands{\unexpanded\expandafter{\opt}}% + \ifnum\pdf@strcmp{\unexpanded\expandafter{\obj}}{commands}=0 + \ifnum\pdf@strcmp{\unexpanded\expandafter{\typ}}{ph}=0 + \xdef\optph@commands{\unexpanded\expandafter{\opt}} \else - \xdef\optmag@commands{\unexpanded\expandafter{\opt}}% + \xdef\optmag@commands{\unexpanded\expandafter{\opt}} \fi \else - \ifnum\pdfstrcmp{\unexpanded\expandafter{\obj}}{tikz}=0 - \xdef\opt@tikz{\unexpanded\expandafter{\opt}}% + \ifnum\pdf@strcmp{\unexpanded\expandafter{\obj}}{tikz}=0 + \xdef\opt@tikz{\unexpanded\expandafter{\opt}} \else \xdef\optmag@plot{\unexpanded\expandafter{\optmag@plot}, - \unexpanded\expandafter{\obj}}% + \unexpanded\expandafter{\obj}} \xdef\optph@plot{\unexpanded\expandafter{\optph@plot}, - \unexpanded\expandafter{\obj}}% + \unexpanded\expandafter{\obj}} \fi \fi \fi \fi \fi \fi - }% + } } % \end{macrocode} %\end{macro} % \begin{macro}{\parse@env@opt} % Parses options supplied to the Bode, Nyquist, and Nichols environments. A |for| loop over tuples of the form |\obj/\opt|, processed using nested if-else statements does the job. The input |\obj| should either be |axes| or |tikz|, and the corresponding |\opt| are passed, unexpanded, to the |axis| environment and the |tikzpicture| environment, respectively. \changes{v1.0.3}{2021/11/03}{Added tikz option to environments} % \begin{macrocode} -\newcommand{\parse@env@opt}[1]{% - \gdef\opt@axes{}% - \gdef\opt@tikz{}% - \foreach \obj/\opt in {#1} {% - \ifnum\pdfstrcmp{\unexpanded\expandafter{\obj}}{axes}=0 - \xdef\opt@axes{\unexpanded\expandafter{\opt}}% +\newcommand{\parse@env@opt}[1]{ + \gdef\opt@axes{} + \gdef\opt@tikz{} + \foreach \obj/\opt in {#1} { + \ifnum\pdf@strcmp{\unexpanded\expandafter{\obj}}{axes}=0 + \xdef\opt@axes{\unexpanded\expandafter{\opt}} \else - \ifnum\pdfstrcmp{\unexpanded\expandafter{\obj}}{tikz}=0 - \xdef\opt@tikz{\unexpanded\expandafter{\opt}}% + \ifnum\pdf@strcmp{\unexpanded\expandafter{\obj}}{tikz}=0 + \xdef\opt@tikz{\unexpanded\expandafter{\opt}} \else \xdef\opt@axes{\unexpanded\expandafter{\opt@axes}, - \unexpanded\expandafter{\obj}}% + \unexpanded\expandafter{\obj}} \fi \fi - }% + } } % \end{macrocode} % \end{macro} % \subsection{Nyquist plots} % \subsubsection{User macros} % \begin{macro}{\NyquistZPK} -% Converts magnitude and phase parametric functions built using |\build@ZPK@plot| into real part and imaginary part parametric functions. A plot of these is the Nyquist plot. The parametric functions are then plotted in a |tikzpicture| environment using the |\addplot| macro. Unless the package is loaded with the option |pgf|, the parametric functions are evaluated using |gnuplot|. A large number of samples is typically needed to get a smooth plot because frequencies near 0 result in plot points that are very close to each other. Linear frequency sampling is unnecessarily fine near zero and very coarse for large $\omega$. Logarithmic sampling makes it worse, perhaps inverse logarithmic sampling will help, pull requests to fix that are welcome! \changes{v1.0.3}{2021/11/03}{Added commands and tikz options} +% Converts magnitude and phase parametric functions built using |\build@ZPK@plot| into real part and imaginary part parametric functions. A plot of these is the Nyquist plot. The parametric functions are then plotted in a |tikzpicture| environment using the |\addplot| macro. Unless the package is loaded with the option |pgf|, the parametric functions are evaluated using |gnuplot|. A large number of samples is typically needed to get a smooth plot because frequencies near 0 result in plot points that are very close to each other. Linear frequency sampling is unnecessarily fine near zero and very coarse for large $\omega$. Logarithmic sampling makes it worse, perhaps inverse logarithmic sampling will help, pull requests to fix that are welcome! \changes{v1.0.3}{2021/11/03}{Added commands and tikz options}\changes{v1.1.1}{2022/07/31}{Enabled `Hz' and `rad' units for frequency and phase, respectively} % \begin{macrocode} -\newcommand{\NyquistZPK}[4][]{% - \parse@N@opt{#1}% - \gdef\func@mag{}% - \gdef\func@ph{}% - \build@ZPK@plot{\func@mag}{\func@ph}{}{#2}% - \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}]% - \noexpand\begin{axis}[% +\newcommand{\NyquistZPK}[4][]{ + \parse@N@opt{#1} + \gdef\func@mag{} + \gdef\func@ph{} + \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}]} + \temp@cmd + \build@ZPK@plot{\func@mag}{\func@ph}{}{#2} + \edef\temp@cmd{\noexpand\begin{axis}[ bode@style, - domain=#3:#4, + domain=#3*\freq@scale:#4*\freq@scale, height=5cm, xlabel={$\Re$}, ylabel={$\Im$}, samples=500, \unexpanded\expandafter{\opt@axes} - ]% - }% - \temp@cmd + ]} + \temp@cmd \addplot [only marks,mark=+,thick,red] (-1 , 0); - \edef\temp@cmd{\noexpand\addplot[variable=t, thick, \unexpanded\expandafter{\opt@plot}]}% + \edef\temp@cmd{\noexpand\addplot [variable=t, thick, \unexpanded\expandafter{\opt@plot}]} \if@pgfarg - \temp@cmd ( {\n@pow{10}{((\func@mag)/20)}*cos(\func@ph)}, - {\n@pow{10}{((\func@mag)/20)}*sin(\func@ph)} ); + \temp@cmd ( {\n@pow{10}{((\func@mag)/20)}*cos((\func@ph)/(\ph@scale))}, + {\n@pow{10}{((\func@mag)/20)}*sin((\func@ph)/(\ph@scale))} ); \opt@commands \else - \stepcounter{gnuplot@id}% - \temp@cmd gnuplot[parametric,gnuplot@prefix] {% - \n@pow{10}{((\func@mag)/20)}*cos(\func@ph), - \n@pow{10}{((\func@mag)/20)}*sin(\func@ph)}; + \stepcounter{gnuplot@id} + \temp@cmd gnuplot [parametric, gnuplot@prefix] { + \n@pow{10}{((\func@mag)/20)}*cos((\func@ph)/(\ph@scale)), + \n@pow{10}{((\func@mag)/20)}*sin((\func@ph)/(\ph@scale)) + }; \opt@commands \fi \end{axis} @@ -1654,36 +1811,37 @@ Nyquist plots with additional commands, using two different macros % \end{macrocode} % \end{macro} % \begin{macro}{\NyquistTF} -% Implementation of this macro is very similar to the |\NyquistZPK| macro above. The only difference is a slightly different parsing of the mandatory arguments via |\build@TF@plot|. \changes{v1.0.3}{2021/11/03}{Added commands and tikz options} +% Implementation of this macro is very similar to the |\NyquistZPK| macro above. The only difference is a slightly different parsing of the mandatory arguments via |\build@TF@plot|. \changes{v1.0.3}{2021/11/03}{Added commands and tikz options}\changes{v1.1.1}{2022/07/31}{Enabled `Hz' and `rad' units for frequency and phase, respectively} % \begin{macrocode} -\newcommand{\NyquistTF}[4][]{% - \parse@N@opt{#1}% - \gdef\func@mag{}% - \gdef\func@ph{}% - \build@TF@plot{\func@mag}{\func@ph}{#2}% - \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}]% - \noexpand\begin{axis}[% +\newcommand{\NyquistTF}[4][]{ + \parse@N@opt{#1} + \gdef\func@mag{} + \gdef\func@ph{} + \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}]} + \temp@cmd + \build@TF@plot{\func@mag}{\func@ph}{#2} + \edef\temp@cmd{\noexpand\begin{axis}[ bode@style, - domain=#3:#4, + domain=#3*\freq@scale:#4*\freq@scale, height=5cm, xlabel={$\Re$}, ylabel={$\Im$}, samples=500, \unexpanded\expandafter{\opt@axes} - ]% - }% - \temp@cmd - \addplot [only marks,mark=+,thick,red] (-1 , 0); - \edef\temp@cmd{\noexpand\addplot[variable=t, thick, \unexpanded\expandafter{\opt@plot}]}% + ]} + \temp@cmd + \addplot [only marks, mark=+, thick, red] (-1 , 0); + \edef\temp@cmd{\noexpand\addplot [variable=t, thick, \unexpanded\expandafter{\opt@plot}]} \if@pgfarg - \temp@cmd ( {\n@pow{10}{((\func@mag)/20)}*cos(\func@ph)}, - {\n@pow{10}{((\func@mag)/20)}*sin(\func@ph)} ); + \temp@cmd ( {\n@pow{10}{((\func@mag)/20)}*cos((\func@ph)/(\ph@scale))}, + {\n@pow{10}{((\func@mag)/20)}*sin((\func@ph)/(\ph@scale))} ); \opt@commands \else - \stepcounter{gnuplot@id}% - \temp@cmd gnuplot[parametric,gnuplot@prefix]{% - \n@pow{10}{((\func@mag)/20)}*cos(\func@ph), - \n@pow{10}{((\func@mag)/20)}*sin(\func@ph)}; + \stepcounter{gnuplot@id} + \temp@cmd gnuplot [parametric, gnuplot@prefix] { + \n@pow{10}{((\func@mag)/20)}*cos((\func@ph)/(\ph@scale)), + \n@pow{10}{((\func@mag)/20)}*sin((\func@ph)/(\ph@scale)) + }; \opt@commands \fi \end{axis} @@ -1692,39 +1850,47 @@ Nyquist plots with additional commands, using two different macros % \end{macrocode} % \end{macro} % \begin{macro}{\addNyquistZPKPlot} -% Adds Nyquist plot of a transfer function in ZPK form. This macro is designed to pass two parametric function to an |\addplot| macro. The parametric functions for phase (|\func@ph|) and magnitude (|\func@mag|) are built using the |\build@ZPK@plot| macro, converted to real and imaginary parts and passed to |\addplot| commands. +% Adds Nyquist plot of a transfer function in ZPK form. This macro is designed to pass two parametric function to an |\addplot| macro. The parametric functions for phase (|\func@ph|) and magnitude (|\func@mag|) are built using the |\build@ZPK@plot| macro, converted to real and imaginary parts and passed to |\addplot| commands.\changes{v1.1.1}{2022/07/31}{Enabled `Hz' and `rad' units for frequency and phase, respectively} % \begin{macrocode} -\newcommand{\addNyquistZPKPlot}[2][]{% - \gdef\func@mag{}% - \gdef\func@ph{}% - \build@ZPK@plot{\func@mag}{\func@ph}{}{#2}% +\newcommand{\addNyquistZPKPlot}[2][]{ + \gdef\func@mag{} + \gdef\func@ph{} + \build@ZPK@plot{\func@mag}{\func@ph}{}{#2} + \edef\supplied@domain{\pgfkeysvalueof{/pgfplots/domain}} + \edef\domain@start{\expandafter\get@interval@start\supplied@domain\@nil} + \edef\domain@end{\expandafter\get@interval@end\supplied@domain\@nil} \if@pgfarg - \addplot[variable=t,#1] ( {\n@pow{10}{((\func@mag)/20)}*cos(\func@ph)}, - {\n@pow{10}{((\func@mag)/20)}*sin(\func@ph)} ); + \addplot [domain=\domain@start*\freq@scale:\domain@end*\freq@scale, variable=t, #1] ( {\n@pow{10}{((\func@mag)/20)}*cos((\func@ph)/(\ph@scale))}, + {\n@pow{10}{((\func@mag)/20)}*sin((\func@ph)/(\ph@scale))} ); \else - \stepcounter{gnuplot@id}% - \addplot[variable=t,#1] gnuplot[parametric,gnuplot@prefix]{% - \n@pow{10}{((\func@mag)/20)}*cos(\func@ph), - \n@pow{10}{((\func@mag)/20)}*sin(\func@ph)}; + \stepcounter{gnuplot@id} + \addplot [domain=\domain@start*\freq@scale:\domain@end*\freq@scale, variable=t, #1] gnuplot [parametric, gnuplot@prefix] { + \n@pow{10}{((\func@mag)/20)}*cos((\func@ph)/(\ph@scale)), + \n@pow{10}{((\func@mag)/20)}*sin((\func@ph)/(\ph@scale)) + }; \fi } % \end{macrocode} %\end{macro} % \begin{macro}{\addNyquistTFPlot} -% Adds Nyquist plot of a transfer function in TF form. This macro is designed to pass two parametric function to an |\addplot| macro. The parametric functions for phase (|\func@ph|) and magnitude (|\func@mag|) are built using the |\build@TF@plot| macro, converted to real and imaginary parts and passed to |\addplot| commands. +% Adds Nyquist plot of a transfer function in TF form. This macro is designed to pass two parametric function to an |\addplot| macro. The parametric functions for phase (|\func@ph|) and magnitude (|\func@mag|) are built using the |\build@TF@plot| macro, converted to real and imaginary parts and passed to |\addplot| commands.\changes{v1.1.1}{2022/07/31}{Enabled `Hz' and `rad' units for frequency and phase, respectively} % \begin{macrocode} -\newcommand{\addNyquistTFPlot}[2][]{% - \gdef\func@mag{}% - \gdef\func@ph{}% - \build@TF@plot{\func@mag}{\func@ph}{#2}% +\newcommand{\addNyquistTFPlot}[2][]{ + \gdef\func@mag{} + \gdef\func@ph{} + \build@TF@plot{\func@mag}{\func@ph}{#2} + \edef\supplied@domain{\pgfkeysvalueof{/pgfplots/domain}} + \edef\domain@start{\expandafter\get@interval@start\supplied@domain\@nil} + \edef\domain@end{\expandafter\get@interval@end\supplied@domain\@nil} \if@pgfarg - \addplot[variable=t,#1] ( {\n@pow{10}{((\func@mag)/20)}*cos(\func@ph)}, - {\n@pow{10}{((\func@mag)/20)}*sin(\func@ph)} ); + \addplot [domain=\domain@start*\freq@scale:\domain@end*\freq@scale, variable=t, #1] ( {\n@pow{10}{((\func@mag)/20)}*cos((\func@ph)/(\ph@scale))}, + {\n@pow{10}{((\func@mag)/20)}*sin((\func@ph)/(\ph@scale))} ); \else - \stepcounter{gnuplot@id}% - \addplot[variable=t,#1] gnuplot[parametric,gnuplot@prefix]{% - \n@pow{10}{((\func@mag)/20)}*cos(\func@ph), - \n@pow{10}{((\func@mag)/20)}*sin(\func@ph)}; + \stepcounter{gnuplot@id} + \addplot [domain=\domain@start*\freq@scale:\domain@end*\freq@scale, variable=t, #1] gnuplot [parametric, gnuplot@prefix]{ + \n@pow{10}{((\func@mag)/20)}*cos((\func@ph)/(\ph@scale)), + \n@pow{10}{((\func@mag)/20)}*sin((\func@ph)/(\ph@scale)) + }; \fi } % \end{macrocode} @@ -1732,21 +1898,21 @@ Nyquist plots with additional commands, using two different macros %\begin{macro}{NyquistPlot} % An environment to host |\addNyquist...| macros that pass parametric functions to |\addplot|. Uses the defaults specified in |bode@style| to create a shortcut that includes the |tikzpicture| and |axis| environments. \changes{v1.0.3}{2021/11/03}{Added tikz option to environments} % \begin{macrocode} -\newenvironment{NyquistPlot}[3][]{% - \parse@env@opt{#1}% - \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}]% - \noexpand\begin{axis}[% +\newenvironment{NyquistPlot}[3][]{ + \parse@env@opt{#1} + \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}] + \noexpand\begin{axis}[ bode@style, height=5cm, domain=#2:#3, xlabel={$\Re$}, ylabel={$\Im$}, \unexpanded\expandafter{\opt@axes} - ]% - }% + ] + } \temp@cmd \addplot [only marks,mark=+,thick,red] (-1 , 0); -}{% +}{ \end{axis} \end{tikzpicture} } @@ -1756,31 +1922,31 @@ Nyquist plots with additional commands, using two different macros % \begin{macro}{\parse@N@opt} % Parses options supplied to the main Nyquist and Nichols macros. A |for| loop over tuples of the form |\obj/\opt|, processed using nested if-else statements does the job. If the input |\obj| is |plot|, |axes|, or |tikz| then the corresponding |\opt| are passed, unexpanded, to the |\addplot| macro, the |axis| environment, and the |tikzpicture| environment, respectively. \changes{v1.0.3}{2021/11/03}{Added commands and tikz options} % \begin{macrocode} -\newcommand{\parse@N@opt}[1]{% - \gdef\opt@axes{}% - \gdef\opt@plot{}% - \gdef\opt@commands{}% +\newcommand{\parse@N@opt}[1]{ + \gdef\opt@axes{} + \gdef\opt@plot{} + \gdef\opt@commands{} \gdef\opt@tikz{} - \foreach \obj/\opt in {#1} {% - \ifnum\pdfstrcmp{\unexpanded\expandafter{\obj}}{axes}=0 - \xdef\opt@axes{\unexpanded\expandafter{\opt}}% + \foreach \obj/\opt in {#1} { + \ifnum\pdf@strcmp{\unexpanded\expandafter{\obj}}{axes}=0 + \xdef\opt@axes{\unexpanded\expandafter{\opt}} \else - \ifnum\pdfstrcmp{\unexpanded\expandafter{\obj}}{plot}=0 - \xdef\opt@plot{\unexpanded\expandafter{\opt}}% + \ifnum\pdf@strcmp{\unexpanded\expandafter{\obj}}{plot}=0 + \xdef\opt@plot{\unexpanded\expandafter{\opt}} \else - \ifnum\pdfstrcmp{\unexpanded\expandafter{\obj}}{commands}=0 - \xdef\opt@commands{\unexpanded\expandafter{\opt}}% + \ifnum\pdf@strcmp{\unexpanded\expandafter{\obj}}{commands}=0 + \xdef\opt@commands{\unexpanded\expandafter{\opt}} \else - \ifnum\pdfstrcmp{\unexpanded\expandafter{\obj}}{tikz}=0 - \xdef\opt@tikz{\unexpanded\expandafter{\opt}}% + \ifnum\pdf@strcmp{\unexpanded\expandafter{\obj}}{tikz}=0 + \xdef\opt@tikz{\unexpanded\expandafter{\opt}} \else \xdef\opt@plot{\unexpanded\expandafter{\opt@plot}, - \unexpanded\expandafter{\obj}}% + \unexpanded\expandafter{\obj}} \fi \fi \fi \fi - }% + } } % \end{macrocode} % \end{macro} @@ -1793,107 +1959,153 @@ Nyquist plots with additional commands, using two different macros % \changes{v1.0.3}{2021/11/03}{Added tikz option to environments} % \begin{macro}{\addNicholsZPKChart} % \begin{macro}{\addNicholsTFChart} -% These macros and the |NicholsChart| environment generate Nichols charts, and they are implemented similar to their Nyquist counterparts. +% These macros and the |NicholsChart| environment generate Nichols charts, and they are implemented similar to their Nyquist counterparts.\changes{v1.1.1}{2022/07/31}{Enabled `Hz' and `rad' units for frequency and phase, respectively} % \begin{macrocode} -\newcommand{\NicholsZPK}[4][]{% - \parse@N@opt{#1}% - \gdef\func@mag{}% - \gdef\func@ph{}% - \build@ZPK@plot{\func@mag}{\func@ph}{}{#2}% - \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}]% - \noexpand\begin{axis}[% - ph@x@filter, +\newcommand{\NicholsZPK}[4][]{ + \parse@N@opt{#1} + \gdef\func@mag{} + \gdef\func@ph{} + \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}]} + \temp@cmd + \build@ZPK@plot{\func@mag}{\func@ph}{}{#2} + \edef\temp@cmd{\noexpand\begin{axis}[ + ph@x@label, bode@style, - domain=#3:#4, + domain=#3*\freq@scale:#4*\freq@scale, height=5cm, ylabel={Gain (dB)}, samples=500, \unexpanded\expandafter{\opt@axes} - ]% - }% - \temp@cmd - \edef\temp@cmd{\noexpand\addplot[variable=t,thick,\opt@plot]}% + ]} + \temp@cmd + \edef\temp@cmd{\noexpand\addplot [variable=t,thick,\opt@plot]} \if@pgfarg \temp@cmd ( {\func@ph} , {\func@mag} ); \opt@commands \else - \stepcounter{gnuplot@id}% - \temp@cmd gnuplot[parametric,gnuplot@prefix] - { \func@ph , \func@mag }; + \stepcounter{gnuplot@id} + \temp@cmd gnuplot [raw gnuplot, gnuplot@prefix] + { set table $meta; + set logscale x 10; + set dummy t; + set samples \pgfkeysvalueof{/pgfplots/samples}; + set trange [#3*\freq@scale:#4*\freq@scale]; + plot '+' using (\func@mag) : ((\func@ph)/(\ph@scale)); + unset logscale x; + set table "\bodeplot@prefix\arabic{gnuplot@id}.table"; + plot "$meta" using ($2*\ph@scale):($1); + }; \opt@commands \fi \end{axis} \end{tikzpicture} } -\newcommand{\NicholsTF}[4][]{% - \parse@N@opt{#1}% - \gdef\func@mag{}% - \gdef\func@ph{}% - \build@TF@plot{\func@mag}{\func@ph}{#2}% - \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}]% - \noexpand\begin{axis}[% - ph@x@filter, +\newcommand{\NicholsTF}[4][]{ + \parse@N@opt{#1} + \gdef\func@mag{} + \gdef\func@ph{} + \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}]} + \temp@cmd + \build@TF@plot{\func@mag}{\func@ph}{#2} + \edef\temp@cmd{\noexpand\begin{axis}[ + ph@x@label, bode@style, - domain=#3:#4, + domain=#3*\freq@scale:#4*\freq@scale, height=5cm, ylabel={Gain (dB)}, samples=500, \unexpanded\expandafter{\opt@axes} - ]% - }% - \temp@cmd - \edef\temp@cmd{\noexpand\addplot[variable=t,thick,\opt@plot]}% + ]} + \temp@cmd + \edef\temp@cmd{\noexpand\addplot [variable=t,thick, \opt@plot]} \if@pgfarg - \temp@cmd ( {\n@mod{\func@ph}{2*pi}} , {\func@mag} ); + \temp@cmd ( {\n@mod{\func@ph}{2*pi*\ph@scale}} , {\func@mag} ); \opt@commands \else - \stepcounter{gnuplot@id}% - \temp@cmd gnuplot[parametric,gnuplot@prefix] - { \n@mod{\func@ph}{2*pi} , \func@mag }; + \stepcounter{gnuplot@id} + \temp@cmd gnuplot [raw gnuplot, gnuplot@prefix] + { set table $meta1; + set logscale x 10; + set dummy t; + set samples \pgfkeysvalueof{/pgfplots/samples}; + set trange [#3*\freq@scale:#4*\freq@scale]; + plot '+' using (\func@mag) : ((\func@ph)/(\ph@scale)); + unset logscale x; + set table $meta2; + plot "$meta1" using ($1):($2) smooth unwrap; + set table "\bodeplot@prefix\arabic{gnuplot@id}.table"; + plot "$meta2" using ($2*\ph@scale):($1); + }; \opt@commands \fi \end{axis} \end{tikzpicture} } -\newenvironment{NicholsChart}[3][]{% - \parse@env@opt{#1}% - \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}]% - \noexpand\begin{axis}[% - ph@x@filter, +\newenvironment{NicholsChart}[3][]{ + \parse@env@opt{#1} + \edef\temp@cmd{\noexpand\begin{tikzpicture} [\unexpanded\expandafter{\opt@tikz}] + \noexpand\begin{axis}[ + ph@x@label, bode@style, domain=#2:#3, height=5cm, ylabel={Gain (dB)}, \unexpanded\expandafter{\opt@axes} - ]% - }% + ] + } \temp@cmd }{ \end{axis} \end{tikzpicture} } -\newcommand{\addNicholsZPKChart}[2][]{% - \gdef\func@mag{}% - \gdef\func@ph{}% - \build@ZPK@plot{\func@mag}{\func@ph}{}{#2}% +\newcommand{\addNicholsZPKChart}[2][]{ + \gdef\func@mag{} + \gdef\func@ph{} + \build@ZPK@plot{\func@mag}{\func@ph}{}{#2} + \edef\supplied@domain{\pgfkeysvalueof{/pgfplots/domain}} + \edef\domain@start{\expandafter\get@interval@start\supplied@domain\@nil} + \edef\domain@end{\expandafter\get@interval@end\supplied@domain\@nil} \if@pgfarg - \addplot[variable=t,#1] ( {\func@ph} , {\func@mag} ); + \addplot [variable=t, domain=\domain@start*\freq@scale:\domain@end*\freq@scale, #1] ( {\func@ph} , {\func@mag} ); \else - \stepcounter{gnuplot@id}% - \addplot[variable=t,#1] gnuplot[parametric,gnuplot@prefix] - {\func@ph , \func@mag}; + \stepcounter{gnuplot@id} + \addplot [#1] gnuplot [raw gnuplot, gnuplot@prefix] + { set table $meta; + set logscale x 10; + set dummy t; + set samples \pgfkeysvalueof{/pgfplots/samples}; + set trange [\domain@start*\freq@scale:\domain@end*\freq@scale]; + plot '+' using (\func@mag) : ((\func@ph)/(\ph@scale)); + unset logscale x; + set table "\bodeplot@prefix\arabic{gnuplot@id}.table"; + plot "$meta" using ($2*\ph@scale):($1); + }; \fi } -\newcommand{\addNicholsTFChart}[2][]{% - \gdef\func@mag{}% - \gdef\func@ph{}% - \build@TF@plot{\func@mag}{\func@ph}{#2}% +\newcommand{\addNicholsTFChart}[2][]{ + \gdef\func@mag{} + \gdef\func@ph{} + \build@TF@plot{\func@mag}{\func@ph}{#2} + \edef\supplied@domain{\pgfkeysvalueof{/pgfplots/domain}} + \edef\domain@start{\expandafter\get@interval@start\supplied@domain\@nil} + \edef\domain@end{\expandafter\get@interval@end\supplied@domain\@nil} \if@pgfarg - \addplot[variable=t,#1] ( {\n@mod{\func@ph}{2*pi}} , {\func@mag} ); + \addplot [variable=t, domain=\domain@start*\freq@scale:\domain@end*\freq@scale, #1] ( {\n@mod{\func@ph}{2*pi*\ph@scale}} , {\func@mag} ); \else - \stepcounter{gnuplot@id}% - \addplot[variable=t,#1] gnuplot[gnuplot@prefix] - {\n@mod{\func@ph}{2*pi} , \func@mag}; + \stepcounter{gnuplot@id} + \addplot [#1] gnuplot [raw gnuplot, gnuplot@prefix] + { set table $meta1; + set logscale x 10; + set dummy t; + set samples \pgfkeysvalueof{/pgfplots/samples}; + set trange [\domain@start*\freq@scale:\domain@end*\freq@scale]; + plot '+' using (\func@mag) : ((\func@ph)/(\ph@scale)); + unset logscale x; + set table $meta2; + plot "$meta1" using ($1):($2) smooth unwrap; + set table "\bodeplot@prefix\arabic{gnuplot@id}.table"; + plot "$meta2" using ($2*\ph@scale):($1); + }; \fi } % \end{macrocode} diff --git a/graphics/pgf/contrib/bodeplot/bodeplot.pdf b/graphics/pgf/contrib/bodeplot/bodeplot.pdf index 1660b2dc51..e47b655740 100644 Binary files a/graphics/pgf/contrib/bodeplot/bodeplot.pdf and b/graphics/pgf/contrib/bodeplot/bodeplot.pdf differ diff --git a/graphics/pgf/contrib/customdice/README.md b/graphics/pgf/contrib/customdice/README.md new file mode 100644 index 0000000000..a898f330ce --- /dev/null +++ b/graphics/pgf/contrib/customdice/README.md @@ -0,0 +1,11 @@ +# customdice: LaTeX package for drawing customisable dice + +`customdice` is a package for LaTeX, LuaLaTeX and XeTeX that provides functionality for drawing dice. The aim is to provide highly-customisable but simple-to-use commands, allowing: + +- adding custom text to dice faces; +- control over colouring; +- control over sizing. + +By [Peter Rowlett](https://github.com/prowlett/). + +The package is licenced under [Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/). diff --git a/graphics/pgf/contrib/customdice/customdice.dtx b/graphics/pgf/contrib/customdice/customdice.dtx new file mode 100644 index 0000000000..ac44ae9fd9 --- /dev/null +++ b/graphics/pgf/contrib/customdice/customdice.dtx @@ -0,0 +1,806 @@ +%\iffalse meta-comment +%Copyright (c) 2022 Peter Rowlett +% +%The package is licenced under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ +%\fi +%\title{customdice v1.0} +%\author{Peter Rowlett} +%\maketitle +% +%\centerline{\Huge\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\bigskip +% +%\verb|customdice| is a package for \LaTeX\, Lua\LaTeX\ and Xe\TeX\ that provides functionality for drawing dice. The aim is to provide highly-customisable but simple-to-use commands, allowing: \begin{itemize} +% \item adding custom text to dice faces; +% \item control over colouring; +% \item control over sizing. +%\end{itemize} +% +%The package is licenced under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). To view a copy of this license, visit \url{http://creativecommons.org/licenses/by-sa/4.0/} +% +%\tableofcontents +% +% +%\section{Motivation} +% +%I've long struggled to find a dice package I fully like. I have been using epsdice, but it only offers white or black standard dice and I found I wanted to draw dice with other text on the faces so I wrote this package which draws the dice in TikZ and offers lots of customisation around what is displayed on the dice face, colour and size. +% +%\section{Basic usage} +% +%\subsection{Standard dice} +% +%Standard dice faces are created using \verb|\dice{num}| where \(\textrm{num}\in\{1,2,3,4,5,6\}\). +% +%For example +% +%\begin{verbatim} +%\dice{1} \dice{2} \dice{3} \dice{4} \dice{5} \dice{6}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \dice{1} \dice{2} \dice{3} \dice{4} \dice{5} \dice{6}} +% +%\subsection{Big dot dice} +% +%The command \verb|\bigdotdice| produces a dice face with one big dot in the centre. +% +%For example +% +%\begin{verbatim} +%\bigdotdice\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \bigdotdice} +% +%\subsection{Text on dice} +% +%The command \verb|\textdice{text}| produces a dice face with \verb|text| on it. +% +%For example +% +%\begin{verbatim} +%\textdice{7} +%\textdice{P} +%\textdice{\(\aleph\)}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \textdice{7} \textdice{P} \textdice{\(\aleph\)}}\bigskip +% +%Sometimes when drawing text on dice, there may be ambiguity about which way up a character goes. For this reason a second command \verb|\textdicebot{text}| is provided which draws a small line under \verb|text| (`bot' is to indicate `bottom line'). +% +%For example +% +%\begin{verbatim} +%\textdicebot{\(\cup\)} +%\textdicebot{\(\cap\)} +%\textdicebot{\sffamily W}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \textdicebot{\(\cup\)} \textdicebot{\(\cap\)} \textdicebot{\sffamily W}} +% +%\subsection{Layout dice} +% +%A command \verb|\layoutdice{face1}{face2}{face3}{face4}{face5}{face6}| takes six inputs and places them on an expanded net of a dice cube. Important: this command takes six inputs in numerical order and displays those inputs where they would sit on a standard die with \setdicebaseline{0.35}\Largedice{1}\setdicebaseline{0.02} oriented at the top of the diagram. +% +%For example +% +%\begin{verbatim} +%\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +%\layoutdice{\dice{6}}{\dice{5}}{\dice{3}}{\dice{4}}{\dice{2}}{\dice{1}} +%\layoutdice{\textdice{A}}{\textdice{B}}{\textdice{C}}{\textdice{D}}{\textdice{E}}{\textdice{F}}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice{6}}{\dice{5}}{\dice{3}}{\dice{4}}{\dice{2}}{\dice{1}} +% \layoutdice{\textdice{A}}{\textdice{B}}{\textdice{C}}{\textdice{D}}{\textdice{E}}{\textdice{F}}} +% +%\subsection{Colour} +% +%By default, dice are black on white. This can be changed by passing a pair of colour names \verb|[background,foreground]| to any of the commands above. +% +%For example +% +%\begin{verbatim} +%\dice[black,white]{3} +%\dice[violet,white]{5} +%\dice[yellow,black]{6} +%\bigdotdice[white,blue] +%\textdice[gray,green]{\(\aleph\)} +%\textdicebot[magenta,blue]{\sffamily W}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \dice[black,white]{3} \dice[violet,white]{5} \dice[yellow,black]{6} \bigdotdice[white,blue] \textdice[gray,green]{\(\aleph\)} \textdicebot[magenta,blue]{\sffamily W}}\bigskip +% +%Any defined colour name can be used, including ones you defined yourself. For example, +% +%\begin{verbatim} +%\usepackage{xcolor} +%\definecolor{airforceblue}{rgb}{0.36, 0.54, 0.66} % latexcolor.com +%\definecolor{papayawhip}{rgb}{1.0, 0.94, 0.84} % latexcolor.com +%\dice[airforceblue,papayawhip]{5}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \definecolor{airforceblue}{rgb}{0.36, 0.54, 0.66} +% \definecolor{papayawhip}{rgb}{1.0, 0.94, 0.84} +% \dice[airforceblue,papayawhip]{5}} +% +%\newpage +% +%\subsection{Size} +% +%The dice size responds to the current font size, as demonstrated below. (Actually, most of the example output in this document is done within \verb|\Huge| for visibility.)\bigskip +% +%\begin{tabular}{rl} +% \verb|\tiny| & {\tiny\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +% \verb|\scriptsize| & {\scriptsize\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +% \verb|\footnotesize| & {\footnotesize\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +% \verb|\small| & {\small\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +% \verb|\normalsize| & {\normalsize\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +% \verb|\large| & {\large\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +% \verb|\Large| & {\Large\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +% \verb|\LARGE| & {\LARGE\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +% \verb|\huge| & {\huge\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +% \verb|\Huge| & {\Huge\layoutdice{\dice{1}}{\dice{2}}{\dice{3}}{\dice{4}}{\dice{5}}{\dice{6}} +% \layoutdice{\dice[black,white]{1}}{\dice[black,white]{2}}{\dice[black,white]{3}}{\dice[black,white]{4}}{\dice[black,white]{5}}{\dice[black,white]{6}} +% \layoutdice{\dice[violet,white]{1}}{\dice[violet,white]{2}}{\dice[violet,white]{3}}{\dice[violet,white]{4}}{\dice[violet,white]{5}}{\dice[violet,white]{6}} +% \layoutdice{\bigdotdice[white,red]}{\bigdotdice[white,orange]}{\bigdotdice[white,yellow]}{\bigdotdice[white,green]}{\bigdotdice[white,blue]}{\bigdotdice[white,violet]} +% \layoutdice{\textdice[yellow,black]{1}}{\textdice[yellow,black]{\rotatebox{180}{2}}}{\textdice[yellow,black]{\rotatebox{90}{3}}}{\textdice[yellow,black]{4}}{\textdice[yellow,black]{5}}{\rotatebox{180}{\textdicebot[yellow,black]{6}}} +% \layoutdice{\textdice[white,blue]{\(\aleph\)}}{\rotatebox{90}{\textdicebot[white,blue]{8}}}{\textdice[white,blue]{\(\xi\)}}{\textdicebot[white,blue]{\(\infty\)}}{\rotatebox{-90}{\textdice[white,blue]{\(\mathbb{R}\)}}}{\textdicebot[white,blue]{\(\forall\)}}}\\ +%\end{tabular}\bigskip +% +% More detail on customising sizes is given in the advanced usage section \ref{sec:advancedsize}. +% +%\newpage +% +%For convenience, a series of commands are defined for each dice type based on the standard LaTeX size names. While e.g. \verb|\dice{num}| uses the current font size, e.g. \verb|\Largedice{num}| is always \verb|\Large|. +% +%\begin{center} +% \begin{tabular}{rl} +% \textbf{Command} & \textbf{Example output}\\ +% \verb|\tinydice| & \tinydice{5}\\ +% \verb|\scriptsizedice| & \scriptsizedice{5}\\ +% \verb|\footnotesizedice| & \footnotesizedice{5}\\ +% \verb|\smalldice| & \smalldice{5}\\ +% \verb|\normalsizedice| & \normalsizedice{5}\\ +% \verb|\largedice| & \largedice{5}\\ +% \verb|\Largedice| & \Largedice{5}\\ +% \verb|\LARGEdice| & \LARGEdice{5}\\ +% \verb|\hugedice| & \hugedice{5}\\ +% \verb|\Hugedice| & \Hugedice{5}\\ +% \verb|\tinybigdotdice| & \tinybigdotdice\\ +% \verb|\scriptsizebigdotdice| & \scriptsizebigdotdice\\ +% \verb|\footnotesizebigdotdice| & \footnotesizebigdotdice\\ +% \verb|\smallbigdotdice| & \smallbigdotdice\\ +% \verb|\normalsizebigdotdice| & \normalsizebigdotdice\\ +% \verb|\largebigdotdice| & \largebigdotdice\\ +% \verb|\Largebigdotdice| & \Largebigdotdice\\ +% \verb|\LARGEbigdotdice| & \LARGEbigdotdice\\ +% \verb|\hugebigdotdice| & \hugebigdotdice\\ +% \verb|\Hugebigdotdice| & \Hugebigdotdice\\ +% \verb|\tinytextdice| & \tinytextdice{Q}\\ +% \verb|\scriptsizetextdice| & \scriptsizetextdice{Q}\\ +% \verb|\footnotesizetextdice| & \footnotesizetextdice{Q}\\ +% \verb|\smalltextdice| & \smalltextdice{Q}\\ +% \verb|\normalsizetextdice| & \normalsizetextdice{Q}\\ +% \verb|\largetextdice| & \largetextdice{Q}\\ +% \verb|\Largetextdice| & \Largetextdice{Q}\\ +% \verb|\LARGEtextdice| & \LARGEtextdice{Q}\\ +% \verb|\hugetextdice| & \hugetextdice{Q}\\ +% \verb|\Hugetextdice| & \Hugetextdice{Q}\\ +% \verb|\tinytextdicebot| & \tinytextdicebot{\sffamily d}\\ +% \verb|\scriptsizetextdicebot| & \scriptsizetextdicebot{\sffamily d}\\ +% \verb|\footnotesizetextdicebot| & \footnotesizetextdicebot{\sffamily d}\\ +% \verb|\smalltextdicebot| & \smalltextdicebot{\sffamily d}\\ +% \verb|\normalsizetextdicebot| & \normalsizetextdicebot{\sffamily d}\\ +% \verb|\largetextdicebot| & \largetextdicebot{\sffamily d}\\ +% \verb|\Largetextdicebot| & \Largetextdicebot{\sffamily d}\\ +% \verb|\LARGEtextdicebot| & \LARGEtextdicebot{\sffamily d}\\ +% \verb|\hugetextdicebot| & \hugetextdicebot{\sffamily d}\\ +% \verb|\Hugetextdicebot| & \Hugetextdicebot{\sffamily d}\\ +% \end{tabular} +%\end{center} +% +%\section{Advanced usage notes} +% +%\subsection{Dependencies} +% +%customdice uses TikZ and etoolbox. +% +%\subsection{Rotated text} +% +%You can rotate what is displayed on the face using \verb|\rotatebox{}| from the \verb|rotating| package. +% +%For example +% +%\begin{verbatim} +%\usepackage{rotating} +%\textdice[yellow,black]{\rotatebox{180}{2}} +%\textdice[white,blue]{\rotatebox{90}{\(\mathbb{R}\)}}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \textdice[yellow,black]{\rotatebox{180}{2}} \textdice[white,blue]{\rotatebox{90}{\(\mathbb{R}\)}}} +% +%Sometimes you might need to rotate the whole box, for example when using \verb|\dicetextbot|. +% +%For example compare +% +%\begin{verbatim} +%\usepackage{rotating} +%\textdicebot{\rotatebox{180}{\sffamily d}} +% +%\rotatebox{180}{\textdicebot{\sffamily d}}\end{verbatim} +% +%which produces output like this: +% +%\centerline{\Huge \textdicebot{\rotatebox{180}{\sffamily d}}} +% +%\centerline{\Huge \rotatebox{180}{\textdicebot{\sffamily d}}} +% +%The first has rotated the `d' but not the underline, so it appears to be a `P'. +% +%\subsection{Size}\label{sec:advancedsize} +% +%\subsubsection{Size and inline display} +% +%The size of the die face is 1.65ex square, which is about the height of capital letters in whatever font size is currently being used. This should mean inline use works well, as demonstrated below. +% +%\begin{tabular}{rll} +% \verb|\tiny| & {\tiny O\dice{1}E} & {\sffamily\tiny O\dice{1}E}\\ +% \verb|\scriptsize| & {\scriptsize T\dice{2}O} & {\sffamily\scriptsize T\dice{2}O}\\ +% \verb|\footnotesize| & {\footnotesize THR\dice{3}E} & {\sffamily\footnotesize THR\dice{3}E}\\ +% \verb|\small| & {\small F\dice{4}UR} & {\sffamily\small F\dice{4}UR}\\ +% \verb|\normalsize| & {\normalsize F\dice{5}VE} & {\sffamily\normalsize F\dice{5}VE}\\ +% \verb|\large| & {\large S\dice{6}X} & {\sffamily\large S\dice{6}X}\\ +% \verb|\Large| & {\Large O\dice{1}E} & {\sffamily\Large O\dice{1}E}\\ +% \verb|\LARGE| & {\LARGE T\dice{2}O} & {\sffamily\LARGE T\dice{2}O}\\ +% \verb|\huge| & {\huge THR\dice{3}E} & {\sffamily\huge THR\dice{3}E}\\ +% \verb|\Huge| & {\Huge F\dice{4}UR} & {\sffamily\Huge F\dice{4}UR}\\ +%\end{tabular}\bigskip +% +%You may find that you prefer your dice larger than the surrounding text, like this \Largetextdice{A} is done using \verb|\Largetextdice{A}|. The dice are designed to sit on the baseline of the current text size via a parameter called \verb|\customdicebaseline| which is by default \verb|0.02| and is passed to TikZ in \verb|\begin{tikzpicture}[baseline=\customdicebaseline ex]|. If you enlarge the size of the dice to be bigger than the surrounding text you may find they appear to sit above the line. If you prefer them to be centred vertically with the surrounding text you will need to adjust this parameter (by trial and error). Do this using \verb|\setdicebaseline{num}|. For example, setting \verb|\setdicebaseline{0.35}| should make \verb|\Largetextdice{A}| appear centred vertically on the line of text again, like this \setdicebaseline{0.35}\Largetextdice{A} now does. +% +%\setdicebaseline{0.02} +% +%\subsubsection{Changing the basic size} +% +%The size of the die face is 1.65ex square. All other sizes within the die face are defined in relation to this basic unit, and you can change it and them using \verb|\setdicefacesize{num}| where \verb|num| is a number that is interpreted as a number of ex. +% +%For example, +% +%\begin{verbatim} +%\Huge +%\dice{5} +%\setdicefacesize{3} +%\dice{5} +%\setdicefacesize{10} +%\dice{5} +%\setdicefacesize{20} +%\dice{5}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \dice{5} % +% \setdicefacesize{3}% +% \dice{5} % +% \setdicefacesize{10}% +% \dice{5} % +% \setdicefacesize{20}% +% \dice{5}} +% +%\setdicefacesize{1.65} +% +%\newpage +% +%\subsubsection{Changing all the sizes} +% +%This is a list of all the sizes used by the package, set by the two commands \verb|\setdicebaseline| and \verb|\setdicefacesize|. +% +%\noindent\begin{tabularx}{\linewidth}{lXlll} +% \textbf{Parameter} & \textbf{Description} & \textbf{Units} & \textbf{Set by} & \textbf{Default}\\\hline +% \verb|\customdicebaseline| & Controls where the dice sits in relation to surrounding text. & ex & \verb|\setdicebaseline| & 0.02\\\hline +% \verb|\customdicefacesize| & Side length of the dice face square. & ex & \verb|\setdicefacesize| & 1.65\\\hline +% \verb|\customdicehalfway| & Half way across the dice face, distance from the edge to the centre dot on the standard dice face. Also the centre of the text in \verb|\dicetext| and \verb|\dicetextbot|. & ex & \verb|\setdicefacesize| & 0.825\\\hline +% \verb|\customdicelower| & Distance from the edge to the `lower' dots (at the bottom or the left of the standard dice face). & ex & \verb|\setdicefacesize| & 0.4\\\hline +% \verb|\customdiceupper| & Distance from the edge to the `upper' dots (at the top or the right of the standard dice face). & ex & \verb|\setdicefacesize| & 1.25\\\hline +% \verb|\customdicedotsize| & Size of the standard dice dots. & ex & \verb|\setdicefacesize| & 0.12\\\hline +% \verb|\customdicebigdotsize| & Size of the bigdot dice dots. & ex & \verb|\setdicefacesize| & 0.45\\\hline +% \verb|\customdicecornerrounding| & Controls the rounding on the corners. & ex & \verb|\setdicefacesize| & 0.2\\\hline +% \verb|\customdiceborderthickness| & Thickness of the dice face border. & ex & \verb|\setdicefacesize| & 0.1\\\hline +% \verb|\customdicetextscale| & Scaling of the text on the dice faces in \verb|\dicetext| and \verb|\dicetextbot|. & none & \verb|\setdicefacesize| & 0.6\\ +%\end{tabularx} +% +%Note that \verb|\textdicebot| draws an underline of thickness \verb|\customdiceborderthickness| from +%\verb|(\customdicelower,\customdicecornerrounding)| to \verb|(\customdiceupper,\customdicecornerrounding)|. +% +%These parameters are all commands, so if you have a good reason to adjust one of them you can do so using \verb|\renewcommand|, for example \verb|\renewcommand{\customdicehalfway}{1.1}| changes {\Large\textdice{a}} to \renewcommand{\customdicehalfway}{1.1}{\Large\textdice{a}}\renewcommand{\customdicehalfway}{0.825}. Note that calling \verb|\setdicebaseline|/\verb|\setdicefacesize| will reset the relevant commands. +% +% +%\subsubsection{Text doesn't fit?} +% +%There is nothing to stop text running off the side of the die. For example \verb|\textdice{Hello}| just puts `Hello' centred at \verb|(\customdicehalfway,\customdicehalfway)|, like this: +% +%\centerline{\Huge\textdice{Hello}} +% +%In some circumstances, it may be possible to squeeze some overflowing text onto the die face by adjusting \verb|\customdicetextscale|. For example, \verb|\renewcommand{\customdicetextscale}{0.4}| converts \setdicebaseline{0.35} \Largetextdice{101} to \renewcommand{\customdicetextscale}{0.4}\Largetextdice{101}. +%\setdicebaseline{0.02} +% +%It is possible to overdo this and make the text illegible, of course, like the `Hello World' here: {\renewcommand{\customdicetextscale}{0.1}\textdice{Hello World}}. +% +%\renewcommand{\customdicetextscale}{0.6} +% +%Note that calling \verb|\setdicefacesize| will reset \verb|\customdicetextscale| relative to the new \verb|\customdicefacesize|. +% +%\subsection{Arbitrary drawing on dice faces} +% +%The commands \verb|\dice|, \verb|\bigdotdice|, \verb|\textdice| and \verb|\textdicedot| all start an environment called \verb|customdiceenv| and do some drawing on it. \verb|customdiceenv| is really a \verb|tikzpicture| with baseline set to \verb|\customdicebaseline ex| and the dice face outline drawn from \verb|(0ex,0ex)| to \\ +%\verb|(\customdicefacesize ex,\customdicefacesize ex)|. You can call \verb|customdiceenv| directly and within this environment, any other TikZ commands should work. +% +%For example +% +%\begin{verbatim} +%\usetikzlibrary{shapes.geometric} +%\begin{customdiceenv} +%\node[isosceles triangle,draw,inner sep=0.2ex] at (0.65ex,0.825ex) {}; +%\end{customdiceenv}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \begin{customdiceenv} +% \node[isosceles triangle,draw,inner sep=0.2ex] at (0.65ex,0.825ex) {}; +%\end{customdiceenv}}\bigskip +% +%\verb|customdiceenv| has one optional parameter which is a pair of colours, defaulting to \verb|white,black|. Note that what you draw isn't automatically coloured, though within \verb|customdiceenv| you can access the foreground colour as \verb|\customdicefg| and the background colour as \verb|\customdicebg|. +% +%You can also access other package parameters, such as the different sizes. To help stay within the confines of the dice face, it might be helpful to make use of \verb|\customdiceupper|, \verb|\customdicelower| and \verb|\customdicehalfway|. +% +%For example +% +%\begin{verbatim} +%\begin{customdiceenv}[pink,violet] +%\draw[very thick,->,\customdicefg] (\customdiceupper ex,\customdicelower ex) -- +%(\customdicelower ex,\customdiceupper ex); +%\end{customdiceenv}\end{verbatim} +% +%produces output like this: +% +%\centerline{\Huge \begin{customdiceenv}[pink,violet] +% \draw[very thick,->,\customdicefg] (\customdiceupper ex,\customdicelower ex) -- (\customdicelower ex,\customdiceupper ex); +%\end{customdiceenv}} +% +%\section{Is it `die' or `dice'?} +% +%Gosh, I don't know! Technically singular is `die' and plural is `dice', but common usage has typically drifted far from this and language evolves. I'm not sure I've used these terms correctly or consistently in this document. All commands use `dice'. +%\iffalse +%<*documentation> +\documentclass[a4paper]{article} +\usepackage{a4wide} +\usepackage{customdice} +\usepackage{rotating} +\usepackage{amsfonts} +\usepackage{ltablex} +\usepackage{doc} +\usepackage{hyperref} +\usetikzlibrary{shapes.geometric} +\begin{document} +\DocInput{customdice.dtx} +\end{document} +% +%\fi +%\iffalse +%<*customdice> +\ProvidesPackage{customdice}[2022/07/31 customdice 1.0] + +\RequirePackage{tikz} +\RequirePackage{etoolbox} + +\makeatletter +\@ifundefined{customdicecoldefault}{} +{\PackageWarning{customdice}{command `customdicecoldefault' already defined}} +\@ifundefined{customdicebg}{} +{\PackageWarning{customdice}{command `customdicebg' already defined}} +\@ifundefined{customdicefg}{} +{\PackageWarning{customdice}{command `customdicefg' already defined}} +\@ifundefined{customdicebaseline}{} +{\PackageWarning{customdice}{command `customdicebaseline' already defined}} +\@ifundefined{setdicebaseline}{} +{\PackageWarning{customdice}{command `setdicebaseline' already defined}} +\@ifundefined{customdicefacesize}{} +{\PackageWarning{customdice}{command `customdicefacesize' already defined}} +\@ifundefined{customdicehalfway}{} +{\PackageWarning{customdice}{command `customdicehalfway' already defined}} +\@ifundefined{customdicelower}{} +{\PackageWarning{customdice}{command `customdicelower' already defined}} +\@ifundefined{customdiceupper}{} +{\PackageWarning{customdice}{command `customdiceupper' already defined}} +\@ifundefined{customdicedotsize}{} +{\PackageWarning{customdice}{command `customdicedotsize' already defined}} +\@ifundefined{customdicebigdotsize}{} +{\PackageWarning{customdice}{command `customdicebigdotsize' already defined}} +\@ifundefined{customdicecornerrounding}{} +{\PackageWarning{customdice}{command `customdicecornerrounding' already defined}} +\@ifundefined{customdiceborderthickness}{} +{\PackageWarning{customdice}{command `customdiceborderthickness' already defined}} +\@ifundefined{customdicetextscale}{} +{\PackageWarning{customdice}{command `customdicetextscale' already defined}} +\@ifundefined{setdicefacesize}{} +{\PackageWarning{customdice}{command `setdicefacesize' already defined}} +\@ifundefined{dice}{} +{\PackageWarning{customdice}{command `dice' already defined}} +\@ifundefined{bigdotdice}{} +{\PackageWarning{customdice}{command `bigdotdice' already defined}} +\@ifundefined{textdice}{} +{\PackageWarning{customdice}{command `textdice' already defined}} +\@ifundefined{textdicebot}{} +{\PackageWarning{customdice}{command `textdicebot' already defined}} +\@ifundefined{layoutdice}{} +{\PackageWarning{customdice}{command `layoutdice' already defined}} +\@ifundefined{tinydice}{} +{\PackageWarning{customdice}{command `tinydice' already defined}} +\@ifundefined{scriptsizedice}{} +{\PackageWarning{customdice}{command `scriptsizedice' already defined}} +\@ifundefined{footnotesizedice}{} +{\PackageWarning{customdice}{command `footnotesizedice' already defined}} +\@ifundefined{smalldice}{} +{\PackageWarning{customdice}{command `smalldice' already defined}} +\@ifundefined{normalsizedice}{} +{\PackageWarning{customdice}{command `normalsizedice' already defined}} +\@ifundefined{largedice}{} +{\PackageWarning{customdice}{command `largedice' already defined}} +\@ifundefined{Largedice}{} +{\PackageWarning{customdice}{command `Largedice' already defined}} +\@ifundefined{LARGEdice}{} +{\PackageWarning{customdice}{command `LARGEdice' already defined}} +\@ifundefined{hugedice}{} +{\PackageWarning{customdice}{command `hugedice' already defined}} +\@ifundefined{Hugedice}{} +{\PackageWarning{customdice}{command `Hugedice' already defined}} +\@ifundefined{tinybigdotdice}{} +{\PackageWarning{customdice}{command `tinybigdotdice' already defined}} +\@ifundefined{scriptsizebigdotdice}{} +{\PackageWarning{customdice}{command `scriptsizebigdotdice' already defined}} +\@ifundefined{footnotesizebigdotdice}{} +{\PackageWarning{customdice}{command `footnotesizebigdotdice' already defined}} +\@ifundefined{smallbigdotdice}{} +{\PackageWarning{customdice}{command `smallbigdotdice' already defined}} +\@ifundefined{normalsizebigdotdice}{} +{\PackageWarning{customdice}{command `normalsizebigdotdice' already defined}} +\@ifundefined{largebigdotdice}{} +{\PackageWarning{customdice}{command `largebigdotdice' already defined}} +\@ifundefined{Largebigdotdice}{} +{\PackageWarning{customdice}{command `Largebigdotdice' already defined}} +\@ifundefined{LARGEbigdotdice}{} +{\PackageWarning{customdice}{command `LARGEbigdotdice' already defined}} +\@ifundefined{hugebigdotdice}{} +{\PackageWarning{customdice}{command `hugebigdotdice' already defined}} +\@ifundefined{Hugebigdotdice}{} +{\PackageWarning{customdice}{command `Hugebigdotdice' already defined}} +\@ifundefined{tinytextdice}{} +{\PackageWarning{customdice}{command `tinytextdice' already defined}} +\@ifundefined{scriptsizetextdice}{} +{\PackageWarning{customdice}{command `scriptsizetextdice' already defined}} +\@ifundefined{footnotesizetextdice}{} +{\PackageWarning{customdice}{command `footnotesizetextdice' already defined}} +\@ifundefined{smalltextdice}{} +{\PackageWarning{customdice}{command `smalltextdice' already defined}} +\@ifundefined{normalsizetextdice}{} +{\PackageWarning{customdice}{command `normalsizetextdice' already defined}} +\@ifundefined{largetextdice}{} +{\PackageWarning{customdice}{command `largetextdice' already defined}} +\@ifundefined{Largetextdice}{} +{\PackageWarning{customdice}{command `Largetextdice' already defined}} +\@ifundefined{LARGEtextdice}{} +{\PackageWarning{customdice}{command `LARGEtextdice' already defined}} +\@ifundefined{hugetextdice}{} +{\PackageWarning{customdice}{command `hugetextdice' already defined}} +\@ifundefined{Hugetextdice}{} +{\PackageWarning{customdice}{command `Hugetextdice' already defined}} +\@ifundefined{tinytextdicebot}{} +{\PackageWarning{customdice}{command `tinytextdicebot' already defined}} +\@ifundefined{scriptsizetextdicebot}{} +{\PackageWarning{customdice}{command `scriptsizetextdicebot' already defined}} +\@ifundefined{footnotesizetextdicebot}{} +{\PackageWarning{customdice}{command `footnotesizetextdicebot' already defined}} +\@ifundefined{smalltextdicebot}{} +{\PackageWarning{customdice}{command `smalltextdicebot' already defined}} +\@ifundefined{normalsizetextdicebot}{} +{\PackageWarning{customdice}{command `normalsizetextdicebot' already defined}} +\@ifundefined{largetextdicebot}{} +{\PackageWarning{customdice}{command `largetextdicebot' already defined}} +\@ifundefined{Largetextdicebot}{} +{\PackageWarning{customdice}{command `Largetextdicebot' already defined}} +\@ifundefined{LARGEtextdicebot}{} +{\PackageWarning{customdice}{command `LARGEtextdicebot' already defined}} +\@ifundefined{hugetextdicebot}{} +{\PackageWarning{customdice}{command `hugetextdicebot' already defined}} +\@ifundefined{Hugetextdicebot}{} +{\PackageWarning{customdice}{command `Hugetextdicebot' already defined}} +\makeatother + +% sizes +\newcommand{\customdicecoldefault}{f40fc2340eb940fc8a170db0f81d7139} % using a UUID so we are extremely unlikely to clash with any user-specified colour name +\global\let\customdicebg\customdicecoldefault +\global\let\customdicefg\customdicecoldefault +\newcommand{\customdicebaseline}{0.02} +\newcommand{\setdicebaseline}[1]{% + \renewcommand{\customdicebaseline}{#1}% +} +\newcommand{\customdicefacesize}{1.65} +\newcommand{\customdicehalfway}{0.825} +\newcommand{\customdicelower}{0.4} +\newcommand{\customdiceupper}{1.25} +\newcommand{\customdicedotsize}{0.12} +\newcommand{\customdicebigdotsize}{0.45} +\newcommand{\customdicecornerrounding}{0.2} +\newcommand{\customdiceborderthickness}{0.1} +\newcommand{\customdicetextscale}{0.6} +\newcommand{\setdicefacesize}[1]{% + \renewcommand{\customdicefacesize}{#1}% + \pgfmathsetmacro{\customdicehalfway}{#1/2}% + \pgfmathsetmacro{\customdicelower}{#1*0.425/1.65}% + \pgfmathsetmacro{\customdiceupper}{#1*1.25/1.65}% + \pgfmathsetmacro{\customdicedotsize}{#1*0.12/1.65}% + \pgfmathsetmacro{\customdicebigdotsize}{#1*0.45/1.65}% + \pgfmathsetmacro{\customdicecornerrounding}{#1*0.2/1.65}% + \pgfmathsetmacro{\customdiceborderthickness}{#1*0.1/1.65}% + \pgfmathsetmacro{\customdicetextscale}{#1*0.6/1.65}% +} + +% main dice environment +\newenvironment{customdiceenv}[1][white,black]{% + \foreach \colour in {#1}{% + \ifdefequal{\customdicebg}{\customdicecoldefault}{\global\let\customdicebg\colour}{\global\let\customdicefg\colour}% + }% + \begin{tikzpicture}[baseline=\customdicebaseline ex] + \draw[rounded corners=\customdicecornerrounding ex,darkgray,fill=\customdicebg,line width=\customdiceborderthickness ex] (0ex,0ex) rectangle (\customdicefacesize ex,\customdicefacesize ex); +}{\end{tikzpicture}% + \global\let\customdicebg\customdicecoldefault% + \global\let\customdicefg\customdicecoldefault% +} + +% \dice draws standard dice +\newcommand{\dice}[2][white,black]{% + \begin{customdiceenv}[#1] + \ifnumequal{#2}{1}{ + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicehalfway ex,\customdicehalfway ex) {}; + }{\ifnumequal{#2}{2}{ + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicelower ex,\customdiceupper ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdiceupper ex,\customdicelower ex) {}; + }{\ifnumequal{#2}{3}{ + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicelower ex,\customdicelower ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicehalfway ex,\customdicehalfway ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdiceupper ex,\customdiceupper ex) {}; + }{\ifnumequal{#2}{4}{ + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicelower ex,\customdicelower ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicelower ex,\customdiceupper ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdiceupper ex,\customdicelower ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdiceupper ex,\customdiceupper ex) {}; + }{\ifnumequal{#2}{5}{ + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicelower ex,\customdicelower ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicelower ex,\customdiceupper ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicehalfway ex,\customdicehalfway ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdiceupper ex,\customdicelower ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdiceupper ex,\customdiceupper ex) {}; + }{\ifnumequal{#2}{6}{ + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicelower ex,\customdicelower ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicelower ex,\customdicehalfway ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdicelower ex,\customdiceupper ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdiceupper ex,\customdicelower ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdiceupper ex,\customdicehalfway ex) {}; + \node[circle,fill=\customdicefg,inner sep=\customdicedotsize ex] at (\customdiceupper ex,\customdiceupper ex) {}; + }{}}}}}} + \end{customdiceenv}% +} + +% \bigdotdice draws dice with a big dot +\newcommand{\bigdotdice}[1][white,black]{% + \begin{customdiceenv}[#1] + \node[circle,fill=\customdicefg,inner sep=\customdicebigdotsize ex] at (\customdicehalfway ex,\customdicehalfway ex) {}; + \end{customdiceenv}% +} + +% \textdice puts text on a dice face +\newcommand{\textdice}[2][white,black]{% + \begin{customdiceenv}[#1] + \node[\customdicefg,inner sep=0,scale=\customdicetextscale] at (\customdicehalfway ex,\customdicehalfway ex) {#2}; + \end{customdiceenv}% +} + +% \textdicebot puts underlined text on a dice face +\newcommand{\textdicebot}[2][white,black]{% + \begin{customdiceenv}[#1] + \node[\customdicefg,inner sep=0,scale=\customdicetextscale] at (\customdicehalfway ex,\customdicehalfway ex) {#2}; + \draw[line width=\customdiceborderthickness ex,\customdicefg] (\customdicelower ex,\customdicecornerrounding ex) --(\customdiceupper ex,\customdicecornerrounding ex); + \end{customdiceenv}% +} + +% draws a dice net +\newcommand{\layoutdice}[6]{% + \setlength{\tabcolsep}{0pt}% + \renewcommand{\arraystretch}{0}% + \begin{tabular}{ccc} + ~ & #1 & ~\\ + #4 & #2 & #3\\ + ~ & #6 & ~\\ + ~ & #5 & ~\\ + \end{tabular}% +} + +% for convenience, passes \sizecommand as {\size\command} +\newcommand{\tinydice}[2][white,black]{% + {\tiny\dice[#1]{#2}} +} +\newcommand{\scriptsizedice}[2][white,black]{% + {\scriptsize\dice[#1]{#2}} +} +\newcommand{\footnotesizedice}[2][white,black]{% + {\footnotesize\dice[#1]{#2}} +} +\newcommand{\smalldice}[2][white,black]{% + {\small\dice[#1]{#2}} +} +\newcommand{\normalsizedice}[2][white,black]{% + {\normalsize\dice[#1]{#2}} +} +\newcommand{\largedice}[2][white,black]{% + {\large\dice[#1]{#2}} +} +\newcommand{\Largedice}[2][white,black]{% + {\Large\dice[#1]{#2}} +} +\newcommand{\LARGEdice}[2][white,black]{% + {\LARGE\dice[#1]{#2}} +} +\newcommand{\hugedice}[2][white,black]{% + {\huge\dice[#1]{#2}} +} +\newcommand{\Hugedice}[2][white,black]{% + {\Huge\dice[#1]{#2}} +} +\newcommand{\tinybigdotdice}[1][white,black]{% + {\tiny\bigdotdice[#1]} +} +\newcommand{\scriptsizebigdotdice}[1][white,black]{% + {\scriptsize\bigdotdice[#1]} +} +\newcommand{\footnotesizebigdotdice}[1][white,black]{% + {\footnotesize\bigdotdice[#1]} +} +\newcommand{\smallbigdotdice}[1][white,black]{% + {\small\bigdotdice[#1]} +} +\newcommand{\normalsizebigdotdice}[1][white,black]{% + {\normalsize\bigdotdice[#1]} +} +\newcommand{\largebigdotdice}[1][white,black]{% + {\large\bigdotdice[#1]} +} +\newcommand{\LARGEbigdotdice}[1][white,black]{% + {\LARGE\bigdotdice[#1]} +} +\newcommand{\Largebigdotdice}[1][white,black]{% + {\Large\bigdotdice[#1]} +} +\newcommand{\hugebigdotdice}[1][white,black]{% + {\huge\bigdotdice[#1]} +} +\newcommand{\Hugebigdotdice}[1][white,black]{% + {\Huge\bigdotdice[#1]} +} +\newcommand{\tinytextdice}[2][white,black]{% + {\tiny\textdice[#1]{#2}} +} +\newcommand{\scriptsizetextdice}[2][white,black]{% + {\scriptsize\textdice[#1]{#2}} +} +\newcommand{\footnotesizetextdice}[2][white,black]{% + {\footnotesize\textdice[#1]{#2}} +} +\newcommand{\smalltextdice}[2][white,black]{% + {\small\textdice[#1]{#2}} +} +\newcommand{\normalsizetextdice}[2][white,black]{% + {\normalsize\textdice[#1]{#2}} +} +\newcommand{\largetextdice}[2][white,black]{% + {\large\textdice[#1]{#2}} +} +\newcommand{\Largetextdice}[2][white,black]{% + {\Large\textdice[#1]{#2}} +} +\newcommand{\LARGEtextdice}[2][white,black]{% + {\LARGE\textdice[#1]{#2}} +} +\newcommand{\hugetextdice}[2][white,black]{% + {\huge\textdice[#1]{#2}} +} +\newcommand{\Hugetextdice}[2][white,black]{% + {\Huge\textdice[#1]{#2}} +} +\newcommand{\tinytextdicebot}[2][white,black]{% + {\tiny\textdicebot[#1]{#2}} +} +\newcommand{\scriptsizetextdicebot}[2][white,black]{% + {\scriptsize\textdicebot[#1]{#2}} +} +\newcommand{\footnotesizetextdicebot}[2][white,black]{% + {\footnotesize\textdicebot[#1]{#2}} +} +\newcommand{\smalltextdicebot}[2][white,black]{% + {\small\textdicebot[#1]{#2}} +} +\newcommand{\normalsizetextdicebot}[2][white,black]{% + {\normalsize\textdicebot[#1]{#2}} +} +\newcommand{\largetextdicebot}[2][white,black]{% + {\large\textdicebot[#1]{#2}} +} +\newcommand{\Largetextdicebot}[2][white,black]{% + {\Large\textdicebot[#1]{#2}} +} +\newcommand{\LARGEtextdicebot}[2][white,black]{% + {\LARGE\textdicebot[#1]{#2}} +} +\newcommand{\hugetextdicebot}[2][white,black]{% + {\huge\textdicebot[#1]{#2}} +} +\newcommand{\Hugetextdicebot}[2][white,black]{% + {\Huge\textdicebot[#1]{#2}} +} +% +%\fi \ No newline at end of file diff --git a/graphics/pgf/contrib/customdice/customdice.ins b/graphics/pgf/contrib/customdice/customdice.ins new file mode 100644 index 0000000000..90cc3459d9 --- /dev/null +++ b/graphics/pgf/contrib/customdice/customdice.ins @@ -0,0 +1,13 @@ +\input{docstrip.tex} +\keepsilent +\usedir{tex/latex/customdice} +\preamble +Copyright (c) 2022 Peter Rowlett + +The package is licenced under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ +\endpreamble +\askforoverwritefalse +\generate{ + \file{customdice.sty}{\from{customdice.dtx}{customdice}} +} +\endbatchfile diff --git a/graphics/pgf/contrib/customdice/customdice.pdf b/graphics/pgf/contrib/customdice/customdice.pdf new file mode 100644 index 0000000000..4b7f9b0a21 Binary files /dev/null and b/graphics/pgf/contrib/customdice/customdice.pdf differ diff --git a/info/install-latex-guide-zh-cn/appendix/mirror.tex b/info/install-latex-guide-zh-cn/appendix/mirror.tex index b53358a868..5193902ede 100644 --- a/info/install-latex-guide-zh-cn/appendix/mirror.tex +++ b/info/install-latex-guide-zh-cn/appendix/mirror.tex @@ -29,8 +29,8 @@ & \url{https://mirrors.bfsu.edu.cn/CTAN/systems/texlive/}\\ \href{https://mirrors.cqu.edu.cn/}{重庆大学} & \url{https://mirrors.cqu.edu.cn/CTAN/systems/texlive/}\\ - \href{https://mirrors.dgut.edu.cn/}{东莞理工学院} - & \url{https://mirrors.dgut.edu.cn/CTAN/systems/texlive/}\\ + % \href{https://mirrors.dgut.edu.cn/}{东莞理工学院} + % & \url{https://mirrors.dgut.edu.cn/CTAN/systems/texlive/}\\ \href{https://mirrors.hit.edu.cn/}{哈尔滨工业大学} & \url{https://mirrors.hit.edu.cn/CTAN/systems/texlive/}\\ \href{https://mirrors.huaweicloud.com/}{华为云} diff --git a/info/install-latex-guide-zh-cn/appendix/updateinfo.tex b/info/install-latex-guide-zh-cn/appendix/updateinfo.tex index 78c600dce6..49dbbb1cbf 100644 --- a/info/install-latex-guide-zh-cn/appendix/updateinfo.tex +++ b/info/install-latex-guide-zh-cn/appendix/updateinfo.tex @@ -2,6 +2,14 @@ \chapter{版本信息} +\section*{v2022.8.1} + +\begin{enumerate} + \item 补充 Mac\TeX{} 卸载和跨版本升级的一些内容 + \item 添加了一个编译参数的例子 + \item 删除了失效的国内镜像 +\end{enumerate} + \section*{v2022.7.1} \begin{enumerate} diff --git a/info/install-latex-guide-zh-cn/chapter/macos.tex b/info/install-latex-guide-zh-cn/chapter/macos.tex index cf9a4b989b..d934bda690 100644 --- a/info/install-latex-guide-zh-cn/chapter/macos.tex +++ b/info/install-latex-guide-zh-cn/chapter/macos.tex @@ -99,6 +99,10 @@ Homebrew 安装教程可以在其网站找到, 这里简单列出来: \section{卸载 Mac\TeX} +如果用户直接下载了 Mac\TeX{} 安装包进行安装, +可以对照\href{https://www.tug.org/mactex/uninstalling.html}{这里}的介绍来卸载, +通常我个人会比较建议在跨版本升级前卸载就版本. + 如果用户借助 Homebrew cask 安装了 Mac\TeX, 那么卸载工作可能会稍显麻烦. 这里引用 \href{https://github.com/Homebrew/homebrew-cask/issues/32073}{Github} 上的讨论. @@ -106,6 +110,13 @@ Homebrew 安装教程可以在其网站找到, 这里简单列出来: \section{跨版本升级 Mac\TeX} +如果用户直接下载了 Mac\TeX{} 安装包进行安装, +可以先卸载旧版本, +再安装新版本, +或者干脆保留多个版本, +具体见\href{https://www.tug.org/mactex/multipletexdistributions.html}{这里}. + +如果用户借助 Homebrew cask 安装了 Mac\TeX, 跨版本升级 (Mac\TeX{} 的版本与 \TeX{} Live 保持一致), 可在\textsf{终端}借助 Homebrew 完成: \begin{lstlisting}[language=bash] brew update diff --git a/info/install-latex-guide-zh-cn/chapter/windows.tex b/info/install-latex-guide-zh-cn/chapter/windows.tex index fe0b888d9f..4b9a341764 100644 --- a/info/install-latex-guide-zh-cn/chapter/windows.tex +++ b/info/install-latex-guide-zh-cn/chapter/windows.tex @@ -479,6 +479,12 @@ Doing a new installation is necessary.}. \begin{lstlisting}[language=bash] pdflatex -synctex=1 main \end{lstlisting} +有些编译还需要额外调用系统命令, +例如使用 \textsf{minted} 包就有这类要求, +因此可以在执行编译时添加参数 +\begin{lstlisting}[language=bash] + pdflatex -shell-escape main +\end{lstlisting} 此外还有很多其他参数, 用户若感兴趣, 可自行阅读手册. 在很多时候, 我个人更倾向于使用 \texttt{latexmk} 来编译 \texttt{tex} 文档, 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 a8104ad70e..c6bd9ccf2f 100644 Binary files a/info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf and b/info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf differ diff --git a/macros/jptex/latex/gentombow/LICENSE b/macros/jptex/latex/gentombow/LICENSE deleted file mode 100644 index 9661ce7b8d..0000000000 --- a/macros/jptex/latex/gentombow/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2016-2020 Hironobu Yamashita -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the copyright holder nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/macros/jptex/latex/gentombow/README.md b/macros/jptex/latex/gentombow/README.md deleted file mode 100644 index 94cbdbdac0..0000000000 --- a/macros/jptex/latex/gentombow/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# gentombow - -This bundle provides a LaTeX package for generating Japanese-style -crop marks (called 'tombow' in Japanese) for practical use in -self-publishing. -The core feature of "gentombow.sty" is based on pLaTeX kernel. - -## Supported engines - -All packages except bounddvi.sty works with the followings: -- LaTeX + dvips/dvipdfmx -- pLaTeX/upLaTeX + dvips/dvipdfmx -- pdfLaTeX -- LuaLaTeX -- XeLaTeX - -## Bundle contents - -- gentombow.sty: - Generate crop marks (called 'tombow' in Japanese) for - practical use in self-publishing. - It provides the core 'tombow' feature if not available. -- pxgentombow.sty: - (Superseded by gentombow.sty; for compatibility only.) -- bounddvi.sty: - Set papersize special to DVI file. - Can be used on LaTeX/pLaTeX/upLaTeX (with DVI output mode) - with dvips or dvipdfmx drivers. - Old version (v6.0) was written by Koichi INOU in 2004 - (https://www.ma.ns.tcu.ac.jp/Pages/TeX/bounddvi.sty.html), - and incorporated into this bundle by his courtesy. - -## Miscellaneous patches - -Some packages are unaware of crop marks defined in "gentombow"; -to cope with those packages, patches are provided here. -- pxtextpos.sty: - Patch for textpos.sty (by Norman Gray). -- pxesopic.sty: - Patch for eso-pic.sty (by Rolf Niepraschk). -- pxpdfpages.sty: - Patch for pdfpages.sty (by Andreas Matthias). - -These patches can also be used independent of "gentombow", -to avoid problems with crop marks on pLaTeX and upLaTeX. - -## Character encoding - -All the package files (.sty) contain ASCII characters only. -All the document files (.tex) are encoded in UTF-8. - -## Installation - -- *.sty -> $TEXMF/tex/latex/gentombow -- *.tex, *.pdf -> $TEXMF/doc/latex/gentombow - -## Repository - -The bundle is maintained on GitHub: - https://github.com/aminophen/gentombow - -## License - -The bundle may be distributed and/or modified under the terms of -the 3-clause BSD license (see [LICENSE](./LICENSE)). - -## Release Date - -2020-10-14 - -Hironobu Yamashita diff --git a/macros/jptex/latex/gentombow/bounddvi-en.pdf b/macros/jptex/latex/gentombow/bounddvi-en.pdf deleted file mode 100644 index 2cf419316e..0000000000 Binary files a/macros/jptex/latex/gentombow/bounddvi-en.pdf and /dev/null differ diff --git a/macros/jptex/latex/gentombow/bounddvi-en.tex b/macros/jptex/latex/gentombow/bounddvi-en.tex deleted file mode 100644 index 82046f888a..0000000000 --- a/macros/jptex/latex/gentombow/bounddvi-en.tex +++ /dev/null @@ -1,136 +0,0 @@ -%# -*- ascii characters only -*- - -% Package v1.0--v6.0: Koichi INOUE -% Package v7.0-- : Hironobu Yamashita -% The package documentation (this file) was -% written by Hironobu Yamashita. - -\documentclass[a4paper]{article} -\usepackage{doc} -\usepackage{bounddvi} -\GetFileInfo{bounddvi.sty} -\title{Package \textsf{bounddvi} \fileversion} -\author{Koichi Inoue \& Hironobu Yamashita} -\date{\filedate} -\begin{document} - -\maketitle - -Package \textsf{bounddvi} sets papersize special into DVI file. -This package can be used in both tate (vertical) and yoko (horizontal) -writing directions of Japanese p\LaTeX/up\LaTeX, and both -\texttt{dvipdfmx} and \texttt{dvips} drivers are supported. -The \texttt{tombow} option defined in Japanese p\LaTeX\ kernel is -also supported. Of course, this package can be used also with the -original \LaTeX\ in DVI output mode. - -This package (since v7.0) is part of \textsf{gentombow} bundle: -\begin{verbatim} - https://github.com/aminophen/gentombow -\end{verbatim} -Originally it was part of \textsf{platex-tools} bundle, -but it has been moved since March 2018. - -\section*{Usage} - -Load this package in preamble. -\begin{verbatim} - \documentclass[a5paper]{article} - \usepackage{bounddvi} - ... -\end{verbatim} -Process the \texttt{.tex} file using \texttt{latex} + -\texttt{dvips} chain or \texttt{latex} + \texttt{dvipdfmx} chain. - -\section*{Known limitations} - -\begin{enumerate} -\item The compatibility with \textsf{geometry} package may not be -perfect, as both \textsf{geometry} and \textsf{bounddvi} embeds -papersize special into a DVI file. The loading order of these -two packages may affect the actual size of output. -\item This package supports ``\textsf{jsclasses}-like employment'' -of \verb+\mag+, because it's more widely used in Japan. This may -be incompatible with some classes or packages which employ -\verb+\mag+ in other ways. -\end{enumerate} -The details are described in the sections below. - -\subsection*{The behavior of multiple papersize specials} - -Sometimes multiple papersize specials may be embedded into a DVI -file. Among these specials, the specification which appears -\emph{at last} in DVI takes effect when \texttt{dvipdfmx} or -\texttt{dvips} (\TeX\ Live 2017 or later) is used\footnote{% -When \texttt{dvips} in \TeX\ Live 2016 or earlier is used, -the specification which appears \emph{first} in DVI took effect, -but the default behavior was changed in \TeX\ Live r42420 to -be compatible with \texttt{dvipdfmx}. The new option \texttt{-L0} -can be used to recover the old behavior.}. For example, when the -following source is processed with \texttt{dvipdfmx}, -\begin{verbatim} - % latex + dvipdfmx - \documentclass{...} - \usepackage{bounddvi} - \usepackage[dvipdfm]{geometry} -\end{verbatim} -the specification by \textsf{geometry} wins. - -\section*{Note about \texttt{\char92mag} handling} - -Among the packages in CTAN, there are two types of implementation -in terms of \verb+\mag+ employment. It seems that there is no -(official or practical) ``standard'' in \verb+\mag+ treatment. - -When the output is going to the physical size of A4 -($210\,\mathrm{mm} \times 297\,\mathrm{mm}$) with the setting of -\verb+\mag=2000+, there are two ways: some classes/packages can set -\begin{quote} - \texttt{\char92mag=2000}\\ - \texttt{\char92paperwidth=210mm} ($= 420\,\mathrm{truemm}$)\\ - \texttt{\char92paperheight=297mm} ($= 594\,\mathrm{truemm}$) -\end{quote} -and others can set -\begin{quote} - \texttt{\char92mag=2000}\\ - \texttt{\char92paperwidth=105mm} ($= 210\,\mathrm{truemm}$)\\ - \texttt{\char92paperheight=148.5mm} ($= 297\,\mathrm{truemm}$) -\end{quote} -The first way is adopted by \textsf{geometry} package etc, and it's -(probably) based on the behavior of the \verb+papersize+ special of -\texttt{dvips}. It does not handle true units properly, and accepts -only non-true units and evaluates them as if they were true units. -The second way is adopted by \textsf{jsclasses} document class etc, -and is also suppoted by \verb+pdf:pagesize+ special of -\texttt{dvipdfm(x)}. This can be more consistent with \LaTeX, since -all other layout parameters (e.g. \verb+\textwidth+) are set -according to the unit truemm. - -The \textsf{bounddvi} supports the latter, so some classes/packages -which are based on the former may or may not work properly when -using \textsf{bounddvi} package. - -\section*{References} - -\begin{itemize} -\item Setting paper size using \texttt{dvips} \& \texttt{dvipdfm} - (description in Japanese)\\ - \texttt{https://www.ma.ns.tcu.ac.jp/Pages/TeX/bounddvi.sty.html} -\end{itemize} - -\section*{ChangeLog} - -\begin{itemize} - \item 2002/03/10 v1.0 (KI) First version - \item 2002/10/30 v2.0 (KI) Add \texttt{dvipdfm} \texttt{pdf:pagesize} special - \item 2003/03/22 v3.2 (KI) Compatibility with \textsf{hyperref} - \item 2004/05/08 v4.0 (KI) Support for $\mathtt{\char92mag} \ne 1000$ - \item 2004/12/08 v5.2 (KI) Compatibility with \textsf{geometry} - \item 2004/12/15 v6.0 (KI) Not to use \texttt{dvipdfm(x)} \texttt{pdf:pagesize special} - \item 2016/10/25 v7.1 (HY) Support for p\LaTeXe\ tombow option, - compatibility with \textsf{graphics}/\textsf{color} packages - \item 2016/12/28 v7.2 (HY) Documentation for the new \texttt{dvips} behavior - \item 2020/09/25 v8.0 (HY) Support for \LaTeXe/p\LaTeXe~2020-10-01 -\end{itemize} - -\end{document} diff --git a/macros/jptex/latex/gentombow/bounddvi.pdf b/macros/jptex/latex/gentombow/bounddvi.pdf deleted file mode 100644 index 57fed9c6c7..0000000000 Binary files a/macros/jptex/latex/gentombow/bounddvi.pdf and /dev/null differ diff --git a/macros/jptex/latex/gentombow/bounddvi.sty b/macros/jptex/latex/gentombow/bounddvi.sty deleted file mode 100644 index a70da52c6e..0000000000 --- a/macros/jptex/latex/gentombow/bounddvi.sty +++ /dev/null @@ -1,112 +0,0 @@ -% -% bounddvi.sty -% 2020/10/08 v8.2-v7.0 h.y.acetaminophen [at] gmail.com -% 2004/12/15 v6.0-v1.0 inoue [at] ma.ns.tcu.ac.jp -% -% This package, originally written by Koichi Inoue -% and modified by Hironobu Yamashita, is distributed -% as part of the gentombow bundle. -% https://github.com/aminophen/gentombow -% - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{bounddvi}[2020/10/08 v8.2 bounddvi] - -% Note: graphics/color drivers -% - dvips.def 2016/07/10 v3.1a or later -% - dvipdfmx.def 2016/07/10 v4.12 or later -% emit papersize special _only_ when \Gin@setpagesizetrue -% and \mag = 1000. When graphicx(s) or color is used with -% setpagesize option (= default since 2016) and \mag equals -% to 1000, we can exploit its routine. -% (they are using \AtBeginDocument{\AtBeginDvi{...}}) -% However, these .def files do _not_ care about tombow; so, -% we set \stock{width,height} to invoke stock test in those -% files (probably meant for memoir.cls). - -% detection of \iftombow status is delayed until \AtBeginDocument, -% to support both (u)pLaTeX kernel and ``gentombow.sty'' -\def\bddv@maybe@ensure@stock{% - \ifx\tombowtrue\@undefined - \let\bddv@ensure@stock\relax % skip if-tokens - \fi - \bddv@ensure@stock} - -% when \iftombow == \iftrue, we also need \stock{width,height} -\def\bddv@ensure@stock{% - \iftombow - % if \stockwidth/\stockheight are not available, - % define them now - \ifx\stockwidth\@undefined \newdimen\stockwidth \fi - \ifx\stockheight\@undefined \newdimen\stockheight \fi - % if \stockwidth already has effective value, do nothing; - % otherwise assume pLaTeX-style tombow and set it to - % \paperwidth + 2in (similar for \stockheight) - \ifdim\stockwidth>\z@\else - \stockwidth\paperwidth \advance\stockwidth2in - \fi - \ifdim\stockheight>\z@\else - \stockheight\paperheight \advance\stockheight2in - \fi - \fi -} - -% prepare actual papersize special -\def\bddv@emit@papersize{% - \begingroup - % if \stockwidth/\stockheight are defined & have effective - % values, copy them to \paperwidth/\paperheight - % for current group - \ifx\stockwidth\@undefined\else \ifdim\stockwidth>\z@ - \paperwidth\stockwidth - \fi\fi - \ifx\stockheight\@undefined\else \ifdim\stockheight>\z@ - \paperheight\stockheight - \fi\fi - % adjust for \mag and emit papersize special - \divide\paperwidth\@m\multiply\paperwidth\mag - \divide\paperheight\@m\multiply\paperheight\mag - \special{papersize=\the\paperwidth,\the\paperheight}% - \endgroup -} - -%% Since LaTeX2e 2020-10-01, \@begindocumenthook is deprecated -%% and \UseHook{begindocument} etc. are used. -%% This code appends papersize special to the _end_ of the hook. -%% (Note: support for old dvips is removed.) -\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} -\IfFormatAtLeastTF{2020-10-01}{% - \AtBeginDocument{% - \bddv@maybe@ensure@stock - \AtBeginDvi{\bddv@emit@papersize}}% - \endinput -}{} - -%% The rest of this package is meant for -%% LaTeX2e 2020-02-02 PL5 or older. - -% following code is almost equivalent to -% \AtBeginDocument{\AtBeginDvi{...}} -% however, we put into the _beginning_ of \@begindocumenthook; -% this ensures proper papersize when old dvips -% (TeX Live 2016 or earlier) is used. -% also, note that old pLaTeX (before 2016/07/01) needs \yoko -% at the beginning of \AtBeginDvi. -\begingroup -\def\@prependto@begindocumenthook{% - \bddv@maybe@ensure@stock - \global\setbox\@begindvibox\vbox{% - \csname yoko\endcsname\unvbox\@begindvibox - \bddv@emit@papersize}} -\toks@\expandafter\expandafter\expandafter - {\expandafter\@prependto@begindocumenthook\@begindocumenthook} -\xdef\@begindocumenthook{\the\toks@} -% append papersize special again to the _end_ of the -% current \@begindocumenthook; this will be meaningful e.g. when -% geometry is loaded before bounddvi. -% (geometry adds \AtBeginDocument{\AtBeginDvi{...}} specification) -\expandafter\g@addto@macro\expandafter\@begindocumenthook - \expandafter{\@prependto@begindocumenthook} -\endgroup - -\endinput diff --git a/macros/jptex/latex/gentombow/bounddvi.tex b/macros/jptex/latex/gentombow/bounddvi.tex deleted file mode 100644 index 198bbb7fb9..0000000000 --- a/macros/jptex/latex/gentombow/bounddvi.tex +++ /dev/null @@ -1,149 +0,0 @@ -%# -*- coding: utf-8 -*- -\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016) - \epTeXinputencoding utf8 % ensure utf-8 encoding for platex -\fi - -% パッケージ作者 (v1.0--v6.0):東京都市大学(旧称・武蔵工業大学)井上浩一 -% 修正版 (v7.0--) および本ドキュメント:山下弘展 (Hironobu Yamashita) - -\documentclass[a4paper]{jsarticle} -\usepackage{doc} -\usepackage{bounddvi} -\GetFileInfo{bounddvi.sty} -\title{Package \textsf{bounddvi} \fileversion} -\author{Koichi Inoue \& Hironobu Yamashita} -\date{\filedate} -\begin{document} - -\maketitle - -DVIファイルは用紙サイズ情報を含みませんが、PostScriptやPDFといった -用紙サイズを規定するフォーマットへ変換するプログラム(\texttt{dvips}や -\texttt{dvipdfmx})は、\verb+\special+命令によってDVIファイルに埋め込ま -れた用紙サイズ情報を解釈します。 -たとえば、幅100mm、高さ200mmの用紙に出力したい場合は -\begin{verbatim} - \special{papersize=100mm,200mm} -\end{verbatim} -のように指定してやることができます。 - -\textsf{bounddvi}パッケージは、クラスファイルなどが想定している用紙 -サイズ情報(\verb+\paperwidth+, \verb+\paperheight+)をDVIファイルに -\verb+\special+命令として埋め込むことで、\texttt{dvips}や -\texttt{dvipdfmx}の出力用紙サイズを指定する機能を提供します。 -\begin{verbatim} - \documentclass[a4j]{jarticle} - \usepackage{bounddvi} - \begin{document} - …本文… - \end{document} -\end{verbatim} -のように使います。p\LaTeX における横組と縦組の両方で使え、また -版面拡大(\verb+\mag+)が使われた場合にも対応しています(詳細は付録 -を参照してください)。また、v7.0以降、p\LaTeX カーネルのトンボ -オプションを使用した場合にも対応しており、p\LaTeX が仮定している -「トンボのノビ(2in)を含めたサイズ」に設定します。 - -本パッケージはv7.0以降、\textsf{gentombow}バンドルの一部として -配布されています: -\begin{verbatim} - https://github.com/aminophen/gentombow -\end{verbatim} -2017年までは\textsf{platex-tools}バンドルの一部でしたが、 -2018年以降は移転しました。 - -\section*{他のパッケージとの互換性} - -用紙サイズ設定機能だけを提供する\textsf{bounddvi}パッケージのほかにも、 -パッケージの機能の一部として用紙サイズ設定を行うものがいくつかあります。 -\begin{itemize} -\item 日本語環境でよく用いられる、p\LaTeX/up\LaTeX 用のクラスファイル - \textsf{jsclasses}(奥村さん作)の\texttt{papersize}オプション - との併用は問題ありません(ただし、このオプションを使用すれば用紙 - サイズ設定には十分ですから、本\textsf{bounddvi}パッケージを併用 - することにも特にメリットはありません)。 -\item 2016年以降の\textsf{graphics/graphicx}パッケージや - \textsf{color}パッケージには用紙サイズ設定機能 - (\texttt{setpagesize}オプション:デフォルトで有効)が - ありますが、併用しても問題は起きないでしょう。 -\item \textsf{hyperref}パッケージも上と同様で、併用しても - 問題は起きないでしょう。 -\item \textsf{geometry}パッケージと併用する場合は、 - 本\textsf{bounddvi}パッケージを\emph{後から}読み込むほうが - 安全でしょう。特に、\texttt{dvipdfmx}を使用して変換する場合に - トンボを付けたいなら、\textsf{bounddvi}を後から読み込むことで - うまくいく可能性があります(付録を参照)。 -\end{itemize} - -\section*{付録:複数の用紙サイズ指定が発行された場合の挙動} - -一つのDVIファイルに複数の用紙サイズ指定\verb+\special+命令が -埋め込まれる場合があります。このうち、\texttt{dvipdfmx}および -\TeX\ Live 2017以降の\texttt{dvips}では、DVIファイルの\emph{最後}に -指定されたものが有効になります\footnote{\TeX\ Live 2016以前の -\texttt{dvips}では、DVIファイルの\emph{最初}に指定されたものが有効 -でしたが、\TeX\ Live r42420で挙動が変更されました。\texttt{-L0}オプ -ションを指定すると従来の挙動に戻ります。}。たとえば\textsf{bounddvi}と -\textsf{geometry}を併用したソース -\begin{verbatim} - \documentclass{...} - \usepackage{bounddvi} - \usepackage[dvipdfm]{geometry} -\end{verbatim} -を\textsf{dvipdfmx}でPDFに変換すると、\textsf{geometry}パッケージの -指定が優先されます。このとき、用紙サイズの設定が正しいかどうかは -\textsf{geometry}パッケージに依存します。 - -\section*{付録:\texttt{\char92mag}の扱いについて} - -本\textsf{bounddvi}パッケージは、日本で広く使われている奥村さんの -\textsf{jsclasses}クラス流の\verb+\mag+の用法をサポートしています。 -しかし、\verb+\mag+の使い方はCTANにある多様なパッケージの中で統一 -されておらず、大きく分けて二通りの使い方があるようです。 - -たとえば、版面を2倍に拡大 (\verb+\mag=2000+) して物理的なA4サイズ -($210\,\mathrm{mm}\times297\,\mathrm{mm}$)の出力を得たい場合 -\begin{quote} - \texttt{\char92mag=2000}\\ - \texttt{\char92paperwidth=210mm} ($= 420\,\mathrm{truemm}$)\\ - \texttt{\char92paperheight=297mm} ($= 594\,\mathrm{truemm}$) -\end{quote} -と設定するものと -\begin{quote} - \texttt{\char92mag=2000}\\ - \texttt{\char92paperwidth=105mm} ($= 210\,\mathrm{truemm}$)\\ - \texttt{\char92paperheight=148.5mm} ($= 297\,\mathrm{truemm}$) -\end{quote} -と設定するものとが存在します。 -前者は\textsf{geometry}パッケージなどの方式で、おそらく\texttt{dvips}の -\verb+papersize+ specialの挙動(truedimenを正しく解釈せず、trueの付か -ない単位だけを受け付けてあたかもtrue付であるかのように評価)に則った -ものでしょう。後者は\textsf{jsclasses}クラスの方式で、これは -\texttt{dvipdfm(x)}の\verb+pdf:pagesize+ specialとも同じです。 -この方式のほうが、truedimenで設定された\LaTeX のほかのレイアウト変数 -(\verb+\textwidth+など)に対して一貫性があると思われます。 -本\textsf{bounddvi}パッケージがサポートしているのは後者の方式です。 - -\section*{参考} - -\begin{itemize} -\item dvipsやdvipdfmなどで用紙サイズを出力\\ - \texttt{https://www.ma.ns.tcu.ac.jp/Pages/TeX/bounddvi.sty.html} -\end{itemize} - -\section*{変更履歴} - -\begin{itemize} - \item 2002/03/10 v1.0 (KI) 最初の公開版 - \item 2002/10/30 v2.0 (KI) \texttt{dvipdfm}の\texttt{pdf:pagesize special}を使用 - \item 2003/03/22 v3.2 (KI) \textsf{hyperref}との互換性を改良 - \item 2004/05/08 v4.0 (KI) $\mathtt{\char92mag} \ne 1000$に対応 - \item 2004/12/08 v5.2 (KI) \texttt{dvips}で\textsf{geometry}との互換性を改良 - \item 2004/12/15 v6.0 (KI) \texttt{dvipdfm(x)}の\texttt{pdf:pagesize special}を不使用に - \item 2016/10/25 v7.1 (HY) p\LaTeXe{}のトンボサポート、 - 2016年の新しい\textsf{graphics}/\textsf{color}に対応 - \item 2016/12/28 v7.2 (HY) 新仕様の\texttt{dvips}をドキュメント化 - \item 2020/09/25 v8.0 (HY) \LaTeXe/p\LaTeXe~2020-10-01(予定)への対応 -\end{itemize} - -\end{document} diff --git a/macros/jptex/latex/gentombow/gentombow-ja.pdf b/macros/jptex/latex/gentombow/gentombow-ja.pdf deleted file mode 100644 index ee94b6c132..0000000000 Binary files a/macros/jptex/latex/gentombow/gentombow-ja.pdf and /dev/null differ diff --git a/macros/jptex/latex/gentombow/gentombow-ja.tex b/macros/jptex/latex/gentombow/gentombow-ja.tex deleted file mode 100644 index 411aad1db2..0000000000 --- a/macros/jptex/latex/gentombow/gentombow-ja.tex +++ /dev/null @@ -1,459 +0,0 @@ -%# -*- coding: utf-8 -*- -\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016) - \epTeXinputencoding utf8 % ensure utf-8 encoding for platex -\fi - -\RequirePackage{plautopatch}% pldocverb -\documentclass[a4paper,dvipdfmx]{jsarticle} -\usepackage{doc} -\makeatletter -\xspcode"5C=3 %% \ -\xspcode"22=3 %% " -%%% dangerous bend -\font\man=manfnt at 10pt -\def\dbend{\leavevmode\raise0pt\hbox{\man\char'177}} -\newenvironment{dangerous}{% - \ifnum\@listdepth>\z@ - \GenericError{}{Do not use `dangerous' environment inside any list}{}{} - \fi - \par\addvspace\medskipamount - \@tempdima=\dimexpr\textwidth-2zw\relax\small - \divide\@tempdima by\dimexpr1zw\relax\@tempcnta=\@tempdima - \leftskip=\dimexpr\textwidth-\@tempcnta zw\relax - \@totalleftmargin\dimexpr\leftskip+0zw - \linewidth=\dimexpr\@tempcnta zw-0zw - \parindent1zw\noindent\kern-\leftskip\hbox to\leftskip{\dbend\hss}% - \everypar{\everypar{}}\ignorespaces -}{\par\addvspace\medskipamount} -%%% logo -\def\pTeX{p\kern-.15em\TeX} -\def\epTeX{$\varepsilon$-\pTeX} -%%% misc -\newcommand{\Meta}[1]{$\langle$\mbox{}\textit{#1}\mbox{}$\rangle$} -\newcommand{\jMeta}[1]{$\langle$\mbox{}\textsf{#1}\mbox{}$\rangle$} -%%% -\makeatother -\usepackage{longtable} -\usepackage[pdfbox]{gentombow} -%\usepackage{bounddvi} -\GetFileInfo{gentombow.sty} -\title{Package \textsf{gentombow} \fileversion} -\author{Hironobu Yamashita} -\date{\filedate} -\begin{document} - -\maketitle - -\begin{center} -English version is available: see \textsf{gentombow.pdf}! -\end{center} - -日本の出版では、たとえば仕上がり寸法がA4サイズの場合、一回り大きな -B4サイズの用紙の中央にトンボ付きで印刷することがあるようです。 -このドキュメントは、実際にA4用紙をB4用紙の中央にトンボ付きで -配置している事例です。 - -\textsf{gentombow}パッケージは、クラスファイルなどが想定している用紙 -サイズ情報(\verb+\paperwidth+, \verb+\paperheight+)を検知し、 -それより一回り大きなサイズの用紙の中央にトンボ付きで出力するために -必要な機能を提供します。使い方の例は -\begin{verbatim} - \documentclass[a4j]{jarticle} - \usepackage{gentombow} - \usepackage{bounddvi} - \begin{document} - …本文… - \end{document} -\end{verbatim} -です。 - -任意の\LaTeX フォーマットで利用可能です。具体的には -\begin{itemize} -\item p\LaTeX, up\LaTeX (縦組にも対応) -\item Lua\LaTeX (Lua\TeX-ja使用の場合は縦組にも対応) -\item pdf\LaTeX -\item Xe\LaTeX -\end{itemize} -での動作を確認しています。また、\textsf{jsclasses}のような -版面拡大(\verb+\mag+)が使われた場合にも対応しています。 - -ただし、本パッケージは実際の出力サイズ指定を発行しませんので、 -以下のいずれかのパッケージと併用するとよいでしょう: -\begin{itemize} -\item \textsf{bounddvi}パッケージ(\textsf{gentombow}バンドル) -\item \textsf{bxpapersize}パッケージ(ZRさん作) -\item \textsf{graphicx}パッケージの2016年以降の版 - (\texttt{setpagesize}機能つきのもの) -\end{itemize} -\textsf{bounddvi}パッケージは本パッケージと同じく -\textsf{gentombow}バンドルに収録されていますが、 -名前のとおりDVIを経由する場合にしか利用できません。 -一方、\textsf{bxpapersize}パッケージは汎用で、Lua\TeX のような -PDF直接出力の場合にも利用できます。また、\textsf{graphicx}パッケージ -は画像挿入用のパッケージですが、2016年以降は自動的に出力サイズ指定も -行うようです($\verb+\mag+ \ne 1000$の場合には機能しません)。 - -本パッケージは、\textsf{gentombow}バンドルの一部として -配布されています: -\begin{verbatim} - https://github.com/aminophen/gentombow -\end{verbatim} -2017年までは\textsf{platex-tools}バンドルの一部でしたが、 -2018年以降は独立させてあります。また、v0.9eまでは -(u)p\LaTeX とLua\TeX-ja専用の\textsf{pxgentombow}パッケージを -用意していましたが、v0.9f以降は\textsf{gentombow}に一本化しました。 - -\section{簡単な使用法} - -はじめに、パッケージをオプション指定なしに使用する場合の機能を -説明します。 - -\subsection{用紙サイズの自動検知による出力サイズ決定} - -パッケージにはあらかじめA系列(\texttt{a0}--\texttt{a10})、 -B系列(\texttt{b0}--\texttt{b10})、C系列(\texttt{c0}--\texttt{c10})と -\texttt{letter}, \texttt{legal}, \texttt{executive}の用紙サイズが -定義されています。ここで、B系列はISOではなくJISです。 -また、変型版として\texttt{a4var}(\texttt{a4}の変型)と -\texttt{b5var}(\texttt{b5}の変型)も定義されています。 - -これらのうちいずれか(ただし\texttt{a0}, \texttt{b0}, \texttt{c0}を -除く)の用紙サイズを検知すると、 -出力サイズが次の規則で自動的に決定されます\footnote{なお、 -C系列と\texttt{letter}, \texttt{legal}, \texttt{executive}については -日本での慣習が不明の -ため、現時点ではA系列のサイズで出力することにしています。}。 -\begin{itemize} -\item 用紙サイズがA系列のとき: - 出力サイズは一回り大きなB系列 -\item 用紙サイズがB, C系列または - \texttt{letter}, \texttt{legal}, \texttt{executive}のとき: - 出力サイズは一回り大きなA系列 -\end{itemize} -この場合、パッケージを読み込んだだけでトンボが付きます。 -なお、用紙サイズが横長の場合は自動的に出力も横長になり、 -縦長の場合は自動的に縦長になります。 - -よく使われる用紙サイズの例を挙げます。 -\begin{longtable}[c]{cc} - \hline - 用紙サイズ & 出力サイズ \\ - \hline - a6 & b6 \\ - b6 & a5 \\ - a5 & b5 \\ - b5 & a4 \\ - a4 & b4 \\ - b4 & a3 \\ - a3 & b3 \\ - b3 & a2 \\ - \hline - c6 & a5 \\ - c5 & a4 \\ - c4 & a3 \\ - c3 & a2 \\ - \hline - letter & a3 \\ - legal & a3 \\ - executive & a4 \\ - \hline -\end{longtable} - -\subsection*{参考:用紙サイズの自動検知に失敗した場合の出力サイズ決定} - -仮に用紙サイズが定義済みのいずれとも異なる場合は、デフォルトでは -用紙の天地左右に1インチずつのノビを付けたサイズで出力します。 -たとえば、幅$100\,\mathrm{mm}$、高さ$200\,\mathrm{mm}$の用紙の場合、 -出力サイズは幅$100\,\mathrm{mm}+2\,\mathrm{in}$、 -高さ$200\,\mathrm{mm}+2\,\mathrm{in}$になります。 - -\subsection{トンボへのバナーの出力} - -デフォルトでは\makeatletter\texttt{\the\@bannertoken}\makeatother -のような形式で、トンボにジョブ情報(処理ファイル名と日付)を示すバナーが -出力されます。これは、\pLaTeX 向けの日本語クラスファイルの多くで -利用可能な\verb+tombow+オプションと同様です。 -ただし、クラスオプションに\verb+tombo+(ジョブ情報を出力しない)または -\verb+mentuke+(トンボの線を表示しない)が指定されている場合は、 -この設定が引き継がれます。 - -\section{パッケージオプション} - -パッケージオプションによって、出力サイズやバナーのジョブ情報の有無を -指定する方法を説明します。 - -\subsection{出力サイズの明示指定} - -自動決定されるサイズと異なるサイズに出力したい場合、 -パッケージオプションで明示的に指定することができます。たとえば -\begin{verbatim} - \documentclass[a4j]{jarticle} - \usepackage[tombow-a3]{gentombow} - \begin{document} - …本文… - \end{document} -\end{verbatim} -とすると、出力サイズは(自動決定のb4は無視されて)a3に変わります。 -指定可能なサイズは、定義済みの用紙サイズと同じものです。すなわち、 -A系列(\texttt{a0}--\texttt{a10})、 -B系列(\texttt{b0}--\texttt{b10})、 -C系列(\texttt{c0}--\texttt{c10})と -\texttt{a4var}, \texttt{b5var}, -\texttt{letter}, \texttt{legal}, \texttt{executive}です。 -なお、ここでも用紙サイズが横長の場合は自動的に出力も横長になり、 -縦長の場合は自動的に縦長になります。 - -オプションは\jMeta{トンボ形式}\texttt{-}\jMeta{出力サイズ}の書式 -\footnote{他のパッケージで見られるようなkey=value形式ではないので -注意してください。このような特殊なオプション書式を用いているのは、 -オプション名が他のクラスファイルやパッケージと衝突する可能性を -小さくするためです。}で与えます。 -トンボ形式は、p\LaTeX の標準クラスと同じで -\verb+tombow+, \verb+tombo+, \verb+mentuke+のいずれかを選びます -(\verb+tombow+はジョブ情報を表示し、\verb+tombo+は表示しません。 -また、\verb+mentuke+はトンボの線を表示しません)。 - -\subsection{トンボに表示するジョブ情報の有無} - -用紙サイズを明示的に指定する場合は、前節のようにトンボ形式と出力サイズを -同時にオプションで与えることができます。 -逆に出力サイズを自動決定に任せつつ、ジョブ情報の有無だけを指定したい -場合は、トンボへのバナー出力を抑制する\verb+notombowbanner+オプションを -使用してください。 - -\section{詳細なカスタマイズ} - -\textsf{gentombow}パッケージは、トンボの見た目やバナーの内容を -カスタマイズする機能も提供します。 - -\subsection{トンボに表示するバナーの内容} - -\verb+\settombowbanner+命令を用います。例えば\epTeX の -\verb+\pdfcreationdate+プリミティブを使って -\begin{verbatim} - \documentclass[a4j]{jarticle} - \usepackage{gentombow} - \settombowbanner{\jobname\space (\pdfcreationdate)} - \begin{document} - …本文… - \end{document} -\end{verbatim} -とすると、バナーの表示内容は -{\settombowbanner{\jobname\space (\pdfcreationdate)}% - \makeatletter\texttt{\the\@bannertoken}\makeatother}になります。 -命令の引数には任意のトークン列を与えることができます。 - -\subsection{バナーの文字のフォント} - -\verb+\settombowbannerfont+命令を用います。例えば -\begin{verbatim} - \settombowbannerfont{cmss10 at 9pt} -\end{verbatim} -のような指定が可能です。内部的には\verb+\font+プリミティブを利用しており、 -使用している\TeX エンジンがサポートする任意のフォントを指定可能です -\footnote{Lua\TeX やXe\TeX (\textsf{gentombow}パッケージの場合)では、 -OpenTypeフォントを直接利用することもできます。}。 - -\subsection{トンボの線の太さ} - -デフォルトではトンボの線の太さは0.1~ptですが、 -\verb+\settombowwidth{1pt}+とすると1~ptになります。 -命令の引数には任意の寸法を与えることができますが、 -実用上は数pt以内が良いでしょう。 - -\subsection{塗り足し(ドブ)の幅} - -デフォルトでは塗り足し(ドブ)の幅は3~mmですが、 -\verb+\settombowbleed{5mm}+とすると5~mmになります。 -命令の引数には任意の寸法を与えることができますが、実用上は数mmでしょう。 - -\subsection{トンボの色} - -トンボの色を指定します。実際に色をつける場合は -\textsf{xcolor}パッケージ(推奨)またはまたは\textsf{color}パッケージが必要です。 -\verb+\settombowcolor{\color[cmyk]{0,1,0,0}}+とするとマゼンタになります。 -CMYKの版ごとにトンボを作成する場合や、特色のトンボが必要な場合に便利です。 - -\section{PDFのデジタルトンボ(page box)の設定} - -この機能はドライバに依存するため、オプション機能としています。 -\textsf{gentombow}パッケージ読み込み時に\verb+pdfbox+オプションを -指定します。DVIを経由する場合は、さらにドライバオプションも必須です -\footnote{例外として、\textsf{gentombow}が読み込まれた時点で -\textsf{graphics}/\textsf{color}のいずれかが読み込まれていた -場合は、そのドライバ設定を引き継ぐことができます。}。 - -この機能を有効化すると、PDFに以下のバウンディングボックス情報 -(いわゆるデジタルトンボ)が書き込まれ、 -さらに用紙サイズ設定(\verb+/MediaBox+相当)も行われます。 -\begin{itemize} -\item \verb+/TrimBox+: 仕上がり紙面サイズ。 -\item \verb+/BleedBox+: 裁ち落とし領域を含んだサイズ。 -\item \verb+/CropBox+, \verb+/ArtBox+: 明示しない。 -\end{itemize} -注意:\textsf{pdfx}パッケージがPDF/Xモードで読み込まれていれば、 -このオプション機能は自動的に有効化されます。 -また、\verb+/CropBox+も明示します。 - -\section{その他の注意点} - -特定のクラスファイルやパッケージと一緒に使用する場合、 -いくつかの注意点があります。 - -\subsection{\textsf{jsclasses}で使用する場合の注意} - -奥村晴彦氏による\textsf{jsclasses}のクラス(2016年以降は日本語\TeX 開発 -コミュニティが管理)を使用していて、10pt以外のサイズオプションを -指定する場合は、以下のいずれかの方法をとってください。 -\begin{itemize} -\item クラスオプションに「トンボオプション」 - (\verb+tombow+または\verb+tombo+)を追加する。 -\item クラスオプションに「\verb+\mag+を使わないオプション」 - (\verb+nomag+または\verb+nomag*+)を追加する。 -\end{itemize} -これは、\textsf{jsclasses}クラス内で行われる\verb+\oddsidemargin+と -\verb+\topmargin+の計算の都合からくる制約です。たとえば -\begin{verbatim} - \documentclass[a4j,14pt]{jsarticle} - \usepackage{gentombow} -\end{verbatim} -という使い方は\emph{誤り}です(このままでは誤った余白設定が -適用されますので、安全のため\textsf{gentombow}パッケージ -がエラーを出すようにしてあります)。代わりに -\begin{verbatim} - \documentclass[a4j,14pt,tombow]{jsarticle} - \usepackage{gentombow} -\end{verbatim} -と書くようにしてください。 - -また、塗り足しの幅などの寸法指定は\verb+true+付きの単位を -使用してください。例えば -\verb+\settombowbleed{3truemm}+と指定すれば、 -\verb+\mag+による版面拡大(縮小)後の塗り足し幅を3~mmにできます。 - -同様に、ZR氏による\textsf{BXjscls}のクラスを使用していて、10pt以外の -サイズオプションを指定する場合は -\begin{itemize} -\item クラスオプションに「\verb+\mag+を使わないオプション」 - (\verb+nomag+または\verb+nomag*+)を追加する。 -\end{itemize} -という対処が必要です(\textsf{BXjscls}クラスでは「トンボオプション」が -機能しないダミーになっていることに注意)。 - -\subsection{レイアウト設定の注意} - -余白などのレイアウト設定でありがちですが、 -\verb+\hoffset+や\verb+\voffset+の値を$0$以外に設定するのは -避けてください。このような設定は\textsf{gentombow}パッケージの -トンボ出力機能と衝突するため、正しい出力が得られません。 -レイアウト設定のために変更すべきなのはこれらの寸法ではなく、 -\verb+\oddsidemargin+や\verb+\topmargin+であることがほとんどです。 -したがって、それらを適切な値に設定するか、レイアウトの設定すべてを -\textsf{geometry}パッケージに任せてしまうのも一つの方法です。 - -\begin{dangerous} -たとえば左右の余白を$25\,\mathrm{mm}$に、上下の余白を -$30\,\mathrm{mm}$にしたいとき\footnote{ここでは「本文の領域以外」を -余白と定義します。すなわち、ヘッダとフッタは余白の一部です。}、 -まず「\TeX の1インチ」を -削除してから\verb+\oddsidemargin+や\verb+\topmargin+を変更すると、 -「見かけ上は」期待どおりの結果になることがあります。 -\begin{verbatim} - \setlength{\hoffset}{-1in}% <== NG - \setlength{\voffset}{-1in}% <== NG - \setlength{\oddsidemargin}{25mm} - \setlength{\topmargin}{30mm} - \setlength{\textwidth}{\paperwidth} - \addtolength{\textwidth}{-2\oddsidemargin} - \setlength{\textheight}{\paperheight} - \addtolength{\textheight}{-2\topmargin} - \addtolength{\topmargin}{-\headheight} - \addtolength{\topmargin}{-\headsep} -\end{verbatim} -しかし、この設定では\textsf{gentombow}パッケージがトンボを -追加するとき、正しい余白を維持することができません。 - -一方、\verb+\hoffset+や\verb+\voffset+は$0$のままで、以下のように -\verb+\oddsidemargin+や\verb+\topmargin+を設定していれば問題ありません。 -\begin{verbatim} - \setlength{\oddsidemargin}{-0.4mm}% 25mm = 1inch - 0.4mm - \setlength{\topmargin}{4.6mm}% 30mm = 1inch + 4.6mm - \setlength{\textwidth}{\paperwidth} - \addtolength{\textwidth}{-50mm} - \addtolength{\topmargin}{-\headheight} - \addtolength{\topmargin}{-\headsep} - \setlength{\textheight}{\paperheight} - \addtolength{\textheight}{-60mm} -\end{verbatim} -これと同等のレイアウト設定は、以下のように\textsf{geometry}パッケージで -行うのが簡単です。 -\begin{verbatim} - \usepackage[lmargin=25mm,rmargin=25mm, - tmargin=30mm,bmargin=30mm]{geometry} -\end{verbatim} -\end{dangerous} - -なお、\textsf{geometry}パッケージは用紙サイズ -(\verb+\paperwidth+, \verb+\paperheight+)を変更する場合もあります。 -こうした場合に備え、\textsf{gentombow}パッケージは -\textsf{geometry}パッケージよりも後に読み込むようにしてください。 - -\section*{雑記} - -発端はこの話です。 -\begin{itemize} -\item 齋藤修三郎 (@psi\_tau) on Twitter, 2017年2月9日\\ - \texttt{https://twitter.com/psi\_tau/status/829873082911248386} -\end{itemize} - -また、現在検討中の事項を挙げておきます。 -\begin{itemize} -\item 現状では、用紙の横長・縦長がそのまま出力に反映されるので、 - これを逆転させるオプションの実装。また、任意の出力サイズを - 指定できるインタフェースの実現。 -\item 自動で決定できる出力サイズの拡張。現状では用紙サイズが - 定義値に完全一致する場合のみ自動決定されるが、中間のサイズでも - その一回り大きなサイズに出力したい場合があるのではないか。 -\item 出版用途ではカラー印刷の場合に、CMYKの版ごとにトンボを作る - 必要がある。\textsf{color}パッケージが利用可能な場合に、 - オプション次第でCKなど必要な色を選べるようにするとよい - のではないか\footnote{ただし作者の本業は出版ではないので、 - 商用を含む実用には程遠いかもしれない。}。 -\item $\verb+\mag+ \ne 1000$の場合について、\textsf{jsclasses}以外での - 動作は未確認。特に、\textsf{geometry}とは共存しない可能性が高い。 -\item \verb+\stockwidth+/\verb+\stockheight+が - \verb+\paperwidth+/\verb+\paperheight+より小さい場合の動作。 - 現在は警告を出すだけとしているが、さらに天地左右1inに - フォールバックしたほうが無難だろうか。 -\end{itemize} - -\section*{変更履歴} - -\begin{itemize} - \item 2017/02/10 v0.1 最初の公開版(\textsf{pxgentombow}として) - \item 2017/03/01 v0.4 トンボ形式の修正など - \item 2017/05/05 v0.5 \textsf{jsclasses}の$\verb+\mag+ \ne 1000$に対応、 - 最初のCTANリリース版 - \item 2017/05/06 v0.6 \textsf{jsclasses}との共存時のチェック強化、 - Lua\TeX-jaでの動作確認 - \item 2017/07/23 v0.7 ドキュメント更新 - \item 2017/12/17 v0.9 \textsf{gentombow}パッケージの新設 - \item 2018/03/16 v0.9e クラスオプションの\verb+tombow+等の引き継ぎ、 - トンボ書式のカスタマイズ機能の追加 - (\verb+\settombowbanner+, - \verb+\settombowbannerfont+, - \verb+\settombowwidth+の各命令) - \item 2018/05/17 v0.9g \textsf{gentombow}に\textsf{pxgentombow}を統合、 - \verb+pdfbox+オプションの追加、 - \verb+\settombowbleed+, \verb+\settombowcolor+の追加 - \item 2018/08/20 v0.9h 用紙サイズ検出に\texttt{hagaki}を追加、 - \textsf{pdfpages}対策の改良 - \item 2018/08/30 v0.9j \textsf{jsclasses}の$\verb+\mag+ \ne 1000$でも - \verb+pdfbox+オプションが正常動作するように改良、 - \verb+\settombowbleed+が\verb+/TrimBox+に反映されな - かったバグの修正 - \item 2019/07/21 v0.9k \textsf{pdfx}パッケージとの整合性をとる改良 - \item 2020/10/14 v0.9l \textsf{plautopatch}からトンボ対策パッチを取り込み -\end{itemize} - -\end{document} diff --git a/macros/jptex/latex/gentombow/gentombow.pdf b/macros/jptex/latex/gentombow/gentombow.pdf deleted file mode 100644 index 178bab4c52..0000000000 Binary files a/macros/jptex/latex/gentombow/gentombow.pdf and /dev/null differ diff --git a/macros/jptex/latex/gentombow/gentombow.sty b/macros/jptex/latex/gentombow/gentombow.sty deleted file mode 100644 index bcd8093f50..0000000000 --- a/macros/jptex/latex/gentombow/gentombow.sty +++ /dev/null @@ -1,747 +0,0 @@ -% -% gentombow.sty -% written by Hironobu Yamashita (@aminophen) -% -% This package is part of the gentombow bundle. -% https://github.com/aminophen/gentombow -% - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{gentombow} - [2020/10/14 v0.9l Generate crop mark 'tombow'] -\def\pxgtmb@pkgname{gentombow} -\@namedef{ver@pxgentombow.sty}{}% fake - -%% error status -\chardef\pxgtmb@errlevel=\z@ - -%% supported engines -% case 2: pdfLaTeX etc. -% case 1: pLaTeX2e <2018-04-01>+2 or older -% case 0: pLaTeX2e <2018-05-20> or newer -% --- checked plcore.ltx in platex 2020/09/28 v1.3g -\ifx\pfmtname\@undefined - \@ifpackageloaded{luatexja}{}{\chardef\pxgtmb@errlevel=\tw@} -\fi -\ifnum\pxgtmb@errlevel<\tw@ - \ifx\@tombowreset@@paper\@undefined - \chardef\pxgtmb@errlevel=\@ne - \fi -\fi -\ifcase\pxgtmb@errlevel - \let\pxgtmb@sel@twoone\@gobble - \let\pxgtmb@sel@two@one\@gobbletwo - \let\pxgtmb@sel@two\@gobble -\or - \let\pxgtmb@sel@twoone\@firstofone - \let\pxgtmb@sel@two@one\@secondoftwo - \let\pxgtmb@sel@two\@gobble -\or - \let\pxgtmb@sel@twoone\@firstofone - \let\pxgtmb@sel@two@one\@firstoftwo - \let\pxgtmb@sel@two\@firstofone -\else - \PackageError{\pxgtmb@pkgname}{% - This cannot happen! - Please report to package author}\@ehc - \expandafter\endinput -\fi -\@onlypreamble\pxgtmb@sel@twoone -\@onlypreamble\pxgtmb@sel@two@one -\@onlypreamble\pxgtmb@sel@two - -%%%%% EMULATION BEGIN - -% required for patching \@outputpage -\pxgtmb@sel@twoone{\RequirePackage{etoolbox}} - -% patch \@outputpage -\begingroup -\def\pxgtmb@emu@status{0} -\let\pxgtmb@emu@outputpage\@outputpage -\pxgtmb@sel@two@one -{%% case 2 begin - \patchcmd\pxgtmb@emu@outputpage % try first patch - {\reset@font\normalsize\normalsfcodes}% - {\@tombowreset@@paper - \reset@font\normalsize\normalsfcodes}% - {}{\def\pxgtmb@emu@status{1}} - \patchcmd\pxgtmb@emu@outputpage % try second patch - {\@begindvi \vskip \topmargin}% - {\@begindvi \@outputtombow \vskip \@@topmargin}% - {}{\def\pxgtmb@emu@status{1}} -}%% case 2 end -{%% case 1 begin - \patchcmd\pxgtmb@emu@outputpage % try patch - {% - \@@topmargin\topmargin - \iftombow - \@@paperwidth\paperwidth \advance\@@paperwidth 6mm\relax - \@@paperheight\paperheight \advance\@@paperheight 16mm\relax - \advance\@@topmargin 1in\relax \advance\@themargin 1in\relax - \fi - \reset@font\normalsize\normalsfcodes} - {\@tombowreset@@paper - \reset@font\normalsize\normalsfcodes}% - {}{\def\pxgtmb@emu@status{1}} -}%% case 1 end -% commit the change only when successful; otherwise -% tombow feature is never enabled, exit right away -\pxgtmb@sel@twoone -{%% case 2 and 1 begin - \if 0\pxgtmb@emu@status\relax - \global\let\@outputpage\pxgtmb@emu@outputpage - \else - \PackageError{\pxgtmb@pkgname}{% - Failed in patching \string\@outputpage!\MessageBreak - Sorry, I can't proceed anymore...}\@ehc - \expandafter\expandafter\expandafter\endinput\expandafter - \fi -}%% case 2 and 1 end -\endgroup -% - -% provides equivalent for plcore.ltx -\pxgtmb@sel@two -{%% case 2 begin -\newif\iftombow \tombowfalse -\newif\iftombowdate \tombowdatetrue -\newdimen\@tombowwidth -\setlength{\@tombowwidth}{.1\p@} -}%% case 2 end -\pxgtmb@sel@twoone -{%% case 2 and 1 begin -\setlength{\@tombowwidth}{.1\p@} -\def\@tombowbleed{3mm} -\def\@tombowcolor{\normalcolor} -}%% case 2 and 1 end -\pxgtmb@sel@two -{%% case 2 begin -\newbox\@TL\newbox\@Tl -\newbox\@TC -\newbox\@TR\newbox\@Tr -\newbox\@BL\newbox\@Bl -\newbox\@BC -\newbox\@BR\newbox\@Br -\newbox\@CL -\newbox\@CR -\font\@bannerfont=cmtt9 -\newtoks\@bannertoken -\@bannertoken{} -}%% case 2 end -\pxgtmb@sel@twoone -{%% case 2 and 1 begin -\def\maketombowbox{% hide \yoko from all boxes - \setbox\@TL\hbox to\z@{\csname yoko\endcsname\hss - \vrule width\dimexpr 10mm+\@tombowbleed\relax height\@tombowwidth depth\z@ - \vrule height10mm width\@tombowwidth depth\z@ - \iftombowdate - \raise4pt\hbox to\z@{\hskip5mm\@bannerfont\the\@bannertoken\hss}% - \fi}% - \setbox\@Tl\hbox to\z@{\csname yoko\endcsname\hss - \vrule width10mm height\@tombowwidth depth\z@ - \vrule height\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth depth\z@}% - \setbox\@TC\hbox{\csname yoko\endcsname - \vrule width10mm height\@tombowwidth depth\z@ - \vrule height10mm width\@tombowwidth depth\z@ - \vrule width10mm height\@tombowwidth depth\z@}% - \setbox\@TR\hbox to\z@{\csname yoko\endcsname - \vrule height10mm width\@tombowwidth depth\z@ - \vrule width\dimexpr 10mm+\@tombowbleed\relax height\@tombowwidth depth\z@\hss}% - \setbox\@Tr\hbox to\z@{\csname yoko\endcsname - \vrule height\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth depth\z@ - \vrule width10mm height\@tombowwidth depth\z@\hss}% - \setbox\@BL\hbox to\z@{\csname yoko\endcsname\hss - \vrule width\dimexpr 10mm+\@tombowbleed\relax depth\@tombowwidth height\z@ - \vrule depth10mm width\@tombowwidth height\z@}% - \setbox\@Bl\hbox to\z@{\csname yoko\endcsname\hss - \vrule width10mm depth\@tombowwidth height\z@ - \vrule depth\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth height\z@}% - \setbox\@BC\hbox{\csname yoko\endcsname - \vrule width10mm depth\@tombowwidth height\z@ - \vrule depth10mm width\@tombowwidth height\z@ - \vrule width10mm depth\@tombowwidth height\z@}% - \setbox\@BR\hbox to\z@{\csname yoko\endcsname - \vrule depth10mm width\@tombowwidth height\z@ - \vrule width\dimexpr 10mm+\@tombowbleed\relax depth\@tombowwidth height\z@\hss}% - \setbox\@Br\hbox to\z@{\csname yoko\endcsname - \vrule depth\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth height\z@ - \vrule width10mm depth\@tombowwidth height\z@\hss}% - \setbox\@CL\hbox to\z@{\csname yoko\endcsname\hss - \vrule width10mm height.5\@tombowwidth depth.5\@tombowwidth - \vrule height10mm depth10mm width\@tombowwidth}% - \setbox\@CR\hbox to\z@{\csname yoko\endcsname - \vrule height10mm depth10mm width\@tombowwidth - \vrule height.5\@tombowwidth depth.5\@tombowwidth width10mm\hss}% -} -\def\@outputtombow{% - \iftombow - \vbox to\z@{\kern-\dimexpr 10mm+\@tombowbleed\relax\relax - \boxmaxdepth\maxdimen - \moveleft\@tombowbleed \vbox to\@@paperheight{% - \color@begingroup - \@tombowcolor - \hbox to\@@paperwidth{\hskip\@tombowbleed\relax - \copy\@TL\hfill\copy\@TC\hfill\copy\@TR\hskip\@tombowbleed}% - \kern-10mm - \hbox to\@@paperwidth{\copy\@Tl\hfill\copy\@Tr}% - \vfill - \hbox to\@@paperwidth{\copy\@CL\hfill\copy\@CR}% - \vfill - \hbox to\@@paperwidth{\copy\@Bl\hfill\copy\@Br}% - \kern-10mm - \hbox to\@@paperwidth{\hskip\@tombowbleed\relax - \copy\@BL\hfill\copy\@BC\hfill\copy\@BR\hskip\@tombowbleed}% - \color@endgroup - }\vss - }% - \fi -} -}%% case 2 and 1 end -\pxgtmb@sel@two -{%% case 2 begin -\newdimen\@@paperheight -\newdimen\@@paperwidth -\newdimen\@@topmargin -}%% case 2 end -\pxgtmb@sel@twoone -{%% case 2 and 1 begin -\def\@tombowreset@@paper{% - \@@topmargin\topmargin - \iftombow - \@@paperwidth\paperwidth - \advance\@@paperwidth 2\dimexpr\@tombowbleed\relax - \@@paperheight\paperheight \advance\@@paperheight 10mm\relax - \advance\@@paperheight 2\dimexpr\@tombowbleed\relax - \advance\@@topmargin 1in\relax \advance\@themargin 1in\relax - \fi -} -}%% case 2 and 1 end -\pxgtmb@sel@two -{%% case 2 begin -\newcount\hour -\newcount\minute -}%% case 2 end - -%%%%% EMULATION END - -%% import from jsclasses -\hour\time \divide\hour by 60\relax -\@tempcnta\hour \multiply\@tempcnta 60\relax -\minute\time \advance\minute-\@tempcnta - -\ifnum\mag=\@m\else - % if BXjscls is detected and \mag != 1000, - % the layout will be definitely broken - \ifx\bxjs@param@mag\@undefined\else - \PackageError{\pxgtmb@pkgname}{% - It seems you are using Japanese `BXjscls'\MessageBreak - (bxjsarticle, bxjsbook, bxjsreport, etc.) or\MessageBreak - some derived class. Try adding `nomag' or\MessageBreak - `nomag*' to the class option list}\@ehc - \fi - % if \mag != 1000 and \inv@mag is defined, assume jsclasses-style \mag employment - \ifx\inv@mag\@undefined\else - % \pxgtmb@magscale is almost equivalent to \jsc@magscale (introduced around 2016) - % but defined only when \mag is actually employed - \begingroup - % calculation code borrowed from BXjscls - \@tempcnta=\mag - \advance\@tempcnta100000\relax - \def\pxgtmb@tempa#1#2#3#4\@nil{\@tempdima=#2#3.#4\p@} - \expandafter\pxgtmb@tempa\the\@tempcnta\@nil - \xdef\pxgtmb@magscale{\strip@pt\@tempdima} - \endgroup - \fi -\fi - -%% this package will use tombo feature in pLaTeX kernel -% if tombow-related option is not included in class option list, -% show info and enable it now -\iftombow\else - % if jsclasses is detected and \mag != 1000, it's too late - % -- When a size option other than `10pt' is specified, - % jsclasses uses \mag and calculates \oddsidemargin and \topmargin - % differently, depending on tombow status. - % In order to force `jsclasses' to calculate correctly, - % `tombow' or `tombo' is required as a class option. - % ... or, you may add `nomag' or `nomag*' instead. - \ifx\pxgtmb@magscale\@undefined\else - \PackageError{\pxgtmb@pkgname}{% - It seems you are using Japanese `jsclasses'\MessageBreak - (jsarticle, jsbook, jsreport, etc.) or some\MessageBreak - derived class. Please add `tombow' or `tombo'\MessageBreak - to the class option list}\@ehc - \fi - % BXjscls is already checked above, no check here - \PackageInfo\pxgtmb@pkgname{tombow feature enabled by \pxgtmb@pkgname} -\fi -\tombowtrue %\tombowdatetrue %% enabled by tombowbanner option -\setlength{\@tombowwidth}{.1\p@}% - -%% import from jsclasses -\@bannertoken{% - \jobname\space(\number\year-\two@digits\month-\two@digits\day - \space\two@digits\hour:\two@digits\minute)} - -%% prepare dimension -\ifx\stockwidth\@undefined \newdimen\stockwidth \fi -\ifx\stockheight\@undefined \newdimen\stockheight \fi - -%% prepare flag -\newif\ifpxgtmb@switch \pxgtmb@switchfalse -\newif\ifpxgtmb@landscape \pxgtmb@landscapefalse -\newif\ifpxgtmb@pdfx@x \pxgtmb@pdfx@xfalse - -%% passed from class options -%% should be declared first inside this package (least priority) -\DeclareOption{tombow}{\tombowdatetrue} -\DeclareOption{tombo}{\tombowdatefalse} -\DeclareOption{mentuke}{\tombowdatefalse \setlength{\@tombowwidth}{\z@}} - -%% package options part 1 -\DeclareOption{tombowbanner}{\tombowdatetrue} -\DeclareOption{notombowbanner}{\tombowdatefalse} -\DeclareOption{tombowdate}{% obsolete since v0.9c (2018/01/11) - \PackageWarning{\pxgtmb@pkgname}{% - Option `tombowdate' is renamed;\MessageBreak - use `tombowbanner' instead}% - \tombowdatetrue} -\DeclareOption{notombowdate}{% obsolete since v0.9c (2018/01/11) - \PackageWarning{\pxgtmb@pkgname}{% - Option `notombowdate' is renamed;\MessageBreak - use `notombowbanner' instead}% - \tombowdatefalse} - -%% register a list of candidate papersize -% * \pxgtmb@addpapersize[]{}{}{} -% used for declaration of papersize. -% when no option is specified (that is, \ifpxgtmb@switch = \iffalse), -% also used for automatic stocksize determination. -% * if = \@empty, the next is assumed. -% * if = n, stocksize is set to papersize + 2in. -\def\pxgtmb@addpapersize{\@ifnextchar[{\pxgtmb@addp@persize}{\pxgtmb@addp@persize[\@empty]}} -\def\pxgtmb@addp@persize[#1]#2#3#4{% - % get current papersize and search through known standard in ascending order - \ifx\pxgtmb@guessedtombow\@empty - \ifx\pxgtmb@guessedpaper\@empty - % shorter edge -> \@tempdima, longer edge -> \@tempdimb - \ifdim\paperwidth>\paperheight\relax - \pxgtmb@landscapetrue - \@tempdima\paperheight \@tempdimb\paperwidth - \else - \pxgtmb@landscapefalse - \@tempdima\paperwidth \@tempdimb\paperheight - \fi - % \@ovri and \@ovro are used temporarily (safe enough) - \@ovri=#3\relax - \@ovro=#4\relax - % when jsclasses-style \mag employment is assumed ... - \ifx\pxgtmb@magscale\@undefined\else - \@ovri=\inv@mag\@ovri\relax - \@ovro=\inv@mag\@ovro\relax - \fi - % compare - \ifdim\@tempdima=\@ovri\relax \ifdim\@tempdimb=\@ovro\relax - \def\pxgtmb@guessedpaper{#2}% - \ifx#1\@empty\else - \def\pxgtmb@guessedtombow{#1}% - \if n\pxgtmb@guessedtombow\else - \ExecuteOptions{tombow-#1}% package defaults to tombowdatetrue - \pxgtmb@switchfalse - \fi - \fi - \fi \fi - \else - \def\pxgtmb@guessedtombow{#2}% save for console message - \pxgtmb@setstock{#3}{#4}% set stockwidth/height - \fi\fi - \DeclareOption{tombow-#2}{% - \pxgtmb@switchtrue - \tombowdatetrue - \pxgtmb@setstock{#3}{#4}% - }% - \DeclareOption{tombo-#2}{% - \pxgtmb@switchtrue - \tombowdatefalse - \pxgtmb@setstock{#3}{#4}% - }% - \DeclareOption{mentuke-#2}{% - \pxgtmb@switchtrue - \tombowdatefalse - \setlength{\@tombowwidth}{\z@}% - \pxgtmb@setstock{#3}{#4}% - }% -} -\def\pxgtmb@setstock#1#2{% - \ifpxgtmb@landscape - \setlength\stockwidth{#2}% - \setlength\stockheight{#1}% - \else - \setlength\stockwidth{#1}% - \setlength\stockheight{#2}% - \fi - % when jsclasses-style \mag employment is assumed ... - \ifx\pxgtmb@magscale\@undefined\else - \stockwidth=\inv@mag\stockwidth\relax - \stockheight=\inv@mag\stockheight\relax - \fi -}% -\@onlypreamble\pxgtmb@addpapersize -\@onlypreamble\pxgtmb@addp@persize -\@onlypreamble\pxgtmb@setstock - -%% initialize before search -\def\pxgtmb@guessedpaper{} -\def\pxgtmb@guessedtombow{} -\@onlypreamble\pxgtmb@guessedpaper -\@onlypreamble\pxgtmb@guessedtombow - -%% package options part 2 -% ISO A series <=> JIS B series in the ascending order -\pxgtmb@addpapersize{a10}{26mm}{37mm} -\pxgtmb@addpapersize{b10}{32mm}{45mm} -\pxgtmb@addpapersize{a9}{37mm}{52mm} -\pxgtmb@addpapersize{b9}{45mm}{64mm} -\pxgtmb@addpapersize{a8}{52mm}{74mm} -\pxgtmb@addpapersize{b8}{64mm}{91mm} -\pxgtmb@addpapersize{a7}{74mm}{105mm} -\pxgtmb@addpapersize{b7}{91mm}{128mm} -\pxgtmb@addpapersize{a6}{105mm}{148mm} -\pxgtmb@addpapersize{b6}{128mm}{182mm} -\pxgtmb@addpapersize{a5}{148mm}{210mm} -\pxgtmb@addpapersize{b5}{182mm}{257mm} -\pxgtmb@addpapersize{a4}{210mm}{297mm} -\pxgtmb@addpapersize{b4}{257mm}{364mm} -\pxgtmb@addpapersize{a3}{297mm}{420mm} -\pxgtmb@addpapersize{b3}{364mm}{515mm} -\pxgtmb@addpapersize{a2}{420mm}{594mm} -\pxgtmb@addpapersize{b2}{515mm}{728mm} -\pxgtmb@addpapersize{a1}{594mm}{841mm} -\pxgtmb@addpapersize{b1}{728mm}{1030mm} -\pxgtmb@addpapersize[n]{a0}{841mm}{1189mm} -\pxgtmb@addpapersize[n]{b0}{1030mm}{1456mm} - -%% package options part 3 -% ISO C series -\pxgtmb@addpapersize[a9]{c10}{28mm}{40mm} -\pxgtmb@addpapersize[a8]{c9}{40mm}{57mm} -\pxgtmb@addpapersize[a7]{c8}{57mm}{81mm} -\pxgtmb@addpapersize[a6]{c7}{81mm}{114mm} -\pxgtmb@addpapersize[a5]{c6}{114mm}{162mm} -\pxgtmb@addpapersize[a4]{c5}{162mm}{229mm} -\pxgtmb@addpapersize[a3]{c4}{229mm}{354mm} -\pxgtmb@addpapersize[a2]{c3}{324mm}{458mm} -\pxgtmb@addpapersize[a1]{c2}{458mm}{648mm} -\pxgtmb@addpapersize[a0]{c1}{648mm}{917mm} -\pxgtmb@addpapersize[n]{c0}{917mm}{1297mm} -% misc -\pxgtmb@addpapersize[b4]{a4j}{210mm}{297mm} -\pxgtmb@addpapersize[b5]{a5j}{148mm}{210mm} -\pxgtmb@addpapersize[a3]{b4j}{257mm}{364mm} -\pxgtmb@addpapersize[a4]{b5j}{182mm}{257mm} -\pxgtmb@addpapersize[b4]{a4var}{210mm}{283mm} -\pxgtmb@addpapersize[a4]{b5var}{182mm}{230mm} -\pxgtmb@addpapersize[a3]{letter}{8.5in}{11in} -\pxgtmb@addpapersize[a3]{legal}{8.5in}{14in} -\pxgtmb@addpapersize[a4]{executive}{7.25in}{10.5in} -\pxgtmb@addpapersize[a5]{hagaki}{100mm}{148mm} - -%% package options part 4 -\def\pxgtmb@pdfbox@status{0} -\DeclareOption{pdfbox}{\def\pxgtmb@pdfbox@status{1}} -\DeclareOption{dvips}{\def\pxgtmb@driver{s}} -\DeclareOption{dvipdfmx}{\def\pxgtmb@driver{m}} -\DeclareOption{xetex}{\def\pxgtmb@driver{x}} -\DeclareOption{pdftex}{\def\pxgtmb@driver{p}} -\DeclareOption{luatex}{\def\pxgtmb@driver{l}} - -%% default options -\ExecuteOptions{tombowbanner}% package defaults to tombowdatetrue -\ProcessOptions - -%% display search result -% if any of explicit size option is specified, \ifpxgtmb@switch = \iftrue. -% otherwise, automatic size detection should be successful. -\ifpxgtmb@switch\else - % check status - \@tempcnta=\z@\relax - \ifx\pxgtmb@guessedpaper\@empty - \advance\@tempcnta\@ne\relax - \fi - \ifx\pxgtmb@guessedtombow\@empty - \advance\@tempcnta\tw@\relax - \else\if n\pxgtmb@guessedtombow - \advance\@tempcnta\tw@\relax - \fi\fi - % message - \ifodd\@tempcnta - %\PackageWarningNoLine\pxgtmb@pkgname{% - % No size option specified, and automatic papersize\MessageBreak - % detection also failed} - \else - \typeout{***** Package \pxgtmb@pkgname\space detected \pxgtmb@guessedpaper paper. *****} - \fi - \ifnum\@tempcnta>\@ne\relax - \PackageWarningNoLine\pxgtmb@pkgname{% - Output size cannot be determined. Please add size\MessageBreak - option (e.g. `tombow-a4') to specify output size.\MessageBreak - Falling back to +1in ..} - \stockwidth\paperwidth \advance\stockwidth 2in - \stockheight\paperheight \advance\stockheight 2in - \else - \typeout{***** Now the output size is automatically set to \pxgtmb@guessedtombow. *****} - \fi -\fi - -%% warnings -\ifdim\stockwidth<\paperwidth - \PackageWarningNoLine\pxgtmb@pkgname{% - \string\stockwidth\space is smaller than \string\paperwidth!\MessageBreak - Is this really what you want?} -\fi -\ifdim\stockheight<\paperheight - \PackageWarningNoLine\pxgtmb@pkgname{% - \string\stockheight\space is smaller than \string\paperheight!\MessageBreak - Is this really what you want?} -\fi - -%% pdf "digital tombo" (driver-dependent) -% the box size calculation is delayed until \AtBeginDocument -% to allow users to change \@tombowbleed in the preamble - -% convert pt -> bp -\def\pxgtmb@PDF@setbp#1#2{% - \@tempdima=.996264#2\relax % 0.996264 = 72/72.27 (cf. 1in = 72.27pt = 72bp) - \@tempdima=\pxgtmb@magscale\@tempdima % adjustment for jsclasses-style \mag employment - \edef#1{\strip@pt\@tempdima}} -% calculate and create pdf boxes -\def\pxgtmb@PDF@calcbox{% - \begingroup - % provide fallback definition inside this group - \ifx\pxgtmb@magscale\@undefined - \def\pxgtmb@magscale{1}% - \fi - % set pdf boxes in bp unit - \pxgtmb@PDF@setbp\pxgtmb@PDF@crop@ur@x\stockwidth - \pxgtmb@PDF@setbp\pxgtmb@PDF@crop@ur@y\stockheight - \pxgtmb@PDF@setbp\pxgtmb@PDF@trim@ll@x{\dimexpr(\stockwidth-\paperwidth)/2}% - \pxgtmb@PDF@setbp\pxgtmb@PDF@trim@ll@y{\dimexpr(\stockheight-\paperheight)/2}% - \pxgtmb@PDF@setbp\pxgtmb@PDF@trim@ur@x{\dimexpr(\stockwidth+\paperwidth)/2}% - \pxgtmb@PDF@setbp\pxgtmb@PDF@trim@ur@y{\dimexpr(\stockheight+\paperheight)/2}% - \pxgtmb@PDF@setbp\pxgtmb@PDF@bleed@ll@x{\dimexpr(\stockwidth-\paperwidth)/2-\@tombowbleed}% - \pxgtmb@PDF@setbp\pxgtmb@PDF@bleed@ll@y{\dimexpr(\stockheight-\paperheight)/2-\@tombowbleed}% - \pxgtmb@PDF@setbp\pxgtmb@PDF@bleed@ur@x{\dimexpr(\stockwidth+\paperwidth)/2+\@tombowbleed}% - \pxgtmb@PDF@setbp\pxgtmb@PDF@bleed@ur@y{\dimexpr(\stockheight+\paperheight)/2+\@tombowbleed}% - \xdef\pxgtmb@PDF@CTM{% - %% CropBox: normally implicit (same as MediaBox, large paper size) - %% however, pdfx.sty in PDF/X mode sets /CropBox explicitly, so I need to override it! - \ifpxgtmb@pdfx@x - \noexpand\pxgtmb@PDF@begin - /CropBox [0 0 - \pxgtmb@PDF@crop@ur@x\space - \pxgtmb@PDF@crop@ur@y] \noexpand\pxgtmb@PDF@end - \fi - %% BleedBox: explicit (final paper size + surrounding \@tombowbleed) - \noexpand\pxgtmb@PDF@begin - /BleedBox [\pxgtmb@PDF@bleed@ll@x\space - \pxgtmb@PDF@bleed@ll@y\space - \pxgtmb@PDF@bleed@ur@x\space - \pxgtmb@PDF@bleed@ur@y] \noexpand\pxgtmb@PDF@end - %% TrimBox: explicit (final paper size) - \noexpand\pxgtmb@PDF@begin - /TrimBox [\pxgtmb@PDF@trim@ll@x\space - \pxgtmb@PDF@trim@ll@y\space - \pxgtmb@PDF@trim@ur@x\space - \pxgtmb@PDF@trim@ur@y] \noexpand\pxgtmb@PDF@end - %% ArtBox: implicit - %% [Note] PDF/X requires /TrimBox or /ArtBox but not both! - }% - \endgroup -} - -% do it -\AtBeginDocument{\pxgtmb@PDF@emit} -\def\pxgtmb@PDF@emit{% - % handle compatibility with pdfx.sty here; - % if pdfx.sty with PDF/X mode detected, force [pdfbox] option! - \pxgtmb@handle@pdfx - \ifpxgtmb@pdfx@x\def\pxgtmb@pdfbox@status{1}\fi - % start actual procedure for [pdfbox] option - \if 1\pxgtmb@pdfbox@status -%% supported drivers: dvips, dvipdfmx, XeTeX, pdfTeX, LuaTeX -\ifnum0\ifx\pdfvariable\@undefined\else\the\outputmode\fi=0\relax -\ifnum0\ifx\pdfpageattr\@undefined\else\the\pdfoutput\fi=0\relax - %% for DVI output or XeTeX - \ifx\XeTeXversion\@undefined - \chardef\pxgtmb@errlevel=\z@ - % check graphics/graphicx/color status - \ifx\Gin@driver\@undefined - \ifx\pxgtmb@driver\@undefined % driver option unavailable - \PackageError{\pxgtmb@pkgname}{% - Option `pdfbox' is driver-dependent!\MessageBreak - Please add a driver option}\@ehc - \def\pxgtmb@driver{s}% fallback - \fi - \else - % check consistency - \def\pxgtmb@tempa{dvips.def}\ifx\Gin@driver\pxgtmb@tempa - \ifx\pxgtmb@driver\@undefined - \def\pxgtmb@driver{s}% pass - \else - \if s\pxgtmb@driver\else \chardef\pxgtmb@errlevel=\@ne \fi - \fi - \else\def\pxgtmb@tempa{dvipdfmx.def}\ifx\Gin@driver\pxgtmb@tempa - \ifx\pxgtmb@driver\@undefined - \def\pxgtmb@driver{m}% pass - \else - \if m\pxgtmb@driver\else \chardef\pxgtmb@errlevel=\@ne \fi - \fi - \else - \ifx\pxgtmb@driver\@undefined - \PackageError{\pxgtmb@pkgname}{% - Option `pdfbox' is driver-dependent!\MessageBreak - Please add a driver option}\@ehc - \def\pxgtmb@driver{s}% fallback - \fi - \fi\fi - \ifnum\pxgtmb@errlevel>\z@ - \PackageWarningNoLine{\pxgtmb@pkgname}{% - Inconsistent driver option detected!\MessageBreak - Package `graphics' or `color' already\MessageBreak - loaded with different driver option}\@ehc - \fi - \fi - \else - \def\pxgtmb@driver{x} - \fi - % required for putting \special to every page - \RequirePackage{atbegshi} - \ifx\pfmtname\@undefined\else - \ifx\AtBegShi@Output\@undefined - % LaTeX2e 2020-10-01: an emulation by ``atbegshi-ltx.sty'' - % => pLaTeX2e 2020-10-01 natively supports it - \else - % older: the real ``atbegshi.sty'' is loaded - \IfFileExists{pxatbegshi.sty}{\RequirePackage{pxatbegshi}}{} - \fi - \fi - % do it - \if x\pxgtmb@driver - %% for XeTeX (similar to dvipdfmx, except for paper size) - \AtBeginDocument{% - \pxgtmb@PDF@calcbox - \def\pxgtmb@PDF@begin{}\def\pxgtmb@PDF@end{}% - \edef\pxgtmb@PDF@CTM{{pdf:put @thispage << \pxgtmb@PDF@CTM >>}}} - % force paper size - \pdfpagewidth\stockwidth \pdfpageheight\stockheight - % emit pdf boxes - \AtBeginShipout{\setbox\AtBeginShipoutBox=\vbox{% - \baselineskip\z@skip\lineskip\z@skip\lineskiplimit\z@ - \expandafter\special\pxgtmb@PDF@CTM % here! - \copy\AtBeginShipoutBox}} - \else - \if s\pxgtmb@driver - %% for dvips - \AtBeginDocument{% - \pxgtmb@PDF@calcbox - \def\pxgtmb@PDF@begin{[ }\def\pxgtmb@PDF@end{/PAGE pdfmark }% - \edef\pxgtmb@PDF@CTM{{ps:SDict begin \pxgtmb@PDF@CTM end}}} - \else\if m\pxgtmb@driver - %% for dvipdfmx - \AtBeginDocument{% - \pxgtmb@PDF@calcbox - \def\pxgtmb@PDF@begin{}\def\pxgtmb@PDF@end{}% - \edef\pxgtmb@PDF@CTM{{pdf:put @thispage << \pxgtmb@PDF@CTM >>}}} - \else - %% for others (in case graphics option wrong) - \PackageError{\pxgtmb@pkgname}{Sorry, driver unsupported}\@ehc - \def\pxgtmb@PDF@CTM{{}}% dummy - \fi\fi - %% common - \begingroup - % when jsclasses-style \mag employment is assumed ... - % [Note] \special{papersize=,} accepts only non-true units - % and evaluates them as if they were true units! - \ifx\pxgtmb@magscale\@undefined\else - \stockwidth \pxgtmb@magscale\stockwidth - \stockheight\pxgtmb@magscale\stockheight - \fi - \xdef\pxgtmb@PDF@size{{papersize=\the\stockwidth,\the\stockheight}} - \endgroup - \AtBeginShipout{\setbox\AtBeginShipoutBox=\vbox{% - \baselineskip\z@skip\lineskip\z@skip\lineskiplimit\z@ - % force paper size - \expandafter\special\pxgtmb@PDF@size - % emit pdf boxes - \expandafter\special\pxgtmb@PDF@CTM % here! - \copy\AtBeginShipoutBox}} - \fi -\else - %% for pdfTeX - \def\pxgtmb@driver{p} - % force paper size - \pdfpagewidth\stockwidth \pdfpageheight\stockheight - % emit pdf boxes - \AtBeginDocument{% - \pxgtmb@PDF@calcbox - \def\pxgtmb@PDF@begin{}\def\pxgtmb@PDF@end{}% - \edef\pxgtmb@PDF@CTM{{\pxgtmb@PDF@CTM}}% - \expandafter\pdfpageattr\pxgtmb@PDF@CTM} -\fi\else - %% for LuaTeX - \def\pxgtmb@driver{l} - % force paper size - \pagewidth\stockwidth \pageheight\stockheight - % emit pdf boxes - \AtBeginDocument{% - \pxgtmb@PDF@calcbox - \def\pxgtmb@PDF@begin{}\def\pxgtmb@PDF@end{}% - \edef\pxgtmb@PDF@CTM{pageattr{\pxgtmb@PDF@CTM}}% - \expandafter\pdfvariable\pxgtmb@PDF@CTM} -\fi - \fi -} - -%% make visible tombow box according to the current status of -%% \@bannerfont, \@bannertoken, \@tombowwidth & \@tombowbleed -\maketombowbox - -%% shift amount -\hoffset .5\stockwidth -\advance\hoffset -.5\paperwidth -\advance\hoffset-1truein\relax -\voffset .5\stockheight -\advance\voffset -.5\paperheight -\advance\voffset-1truein\relax - -%% user interface -\newcommand{\settombowbanner}[1]{% - \iftombowdate\else - \PackageWarning{\pxgtmb@pkgname}{% - Package option `tombowbanner' is not effective.\MessageBreak - The banner may be discarded}% - \fi - \@bannertoken{#1}\maketombowbox} -\newcommand{\settombowbannerfont}[1]{% - \font\@bannerfont=#1\relax \maketombowbox} -\newcommand{\settombowwidth}[1]{% - \setlength{\@tombowwidth}{#1}\maketombowbox} -\newcommand{\settombowbleed}[1]{% - \def\@tombowbleed{#1}\maketombowbox} -\newcommand{\settombowcolor}[1]{% - \def\@tombowcolor{#1}} -% forbid changing \@tombowbleed after \begin{document} -% because pdf boxes are calculated only inside \AtBeginDocument -\@onlypreamble\settombowbleed - -%% patch internal of pdfpages.sty to work with tombow -\def\pxgtmb@patch@pdfpages{% - \IfFileExists{pxpdfpages.sty}{\RequirePackage{pxpdfpages}}{}} -\AtBeginDocument{\@ifpackageloaded{pdfpages}{\pxgtmb@patch@pdfpages}{}} - -%% patch pdfx.sty -%% (tested on pdfx 2019/02/27 v1.6.3) -\def\pxgtmb@handle@pdfx{\@ifpackageloaded{pdfx}{\let\ifpxgtmb@pdfx@x\ifpdfx@x}{}} - -\endinput diff --git a/macros/jptex/latex/gentombow/gentombow.tex b/macros/jptex/latex/gentombow/gentombow.tex deleted file mode 100644 index d0bc4523ab..0000000000 --- a/macros/jptex/latex/gentombow/gentombow.tex +++ /dev/null @@ -1,307 +0,0 @@ -%# -*- ascii characters only -*- - -\documentclass[a4paper]{article} -\usepackage{doc} -\makeatletter -%%% dangerous bend -\font\man=manfnt at 10pt -\def\dbend{\leavevmode\raise0pt\hbox{\man\char'177}} -\newenvironment{dangerous}{% - \ifnum\@listdepth>\z@ - \GenericError{}{Do not use `dangerous' environment inside any list}{}{} - \fi - \par\addvspace\medskipamount - \@tempdima=\dimexpr\textwidth-2zw\relax\small - \divide\@tempdima by\dimexpr1zw\relax\@tempcnta=\@tempdima - \leftskip=\dimexpr\textwidth-\@tempcnta zw\relax - \@totalleftmargin\dimexpr\leftskip+0zw - \linewidth=\dimexpr\@tempcnta zw-0zw - \parindent1zw\noindent\kern-\leftskip\hbox to\leftskip{\dbend\hss}% - \everypar{\everypar{}}\ignorespaces -}{\par\addvspace\medskipamount} -%%% misc -\newcommand{\Meta}[1]{$\langle$\mbox{}\textit{#1}\mbox{}$\rangle$} -%%% -\makeatother -\usepackage{longtable} -\usepackage[pdfbox]{gentombow} -%\usepackage{bxpapersize} -\GetFileInfo{gentombow.sty} -\title{Package \textsf{gentombow} \fileversion} -\author{Hironobu Yamashita} -\date{\filedate} -\begin{document} - -\maketitle - -It is convenient to print documents for final smaller paper sizes -on paper of the printer's standard physical paper size; -it allows printing close to the logical paper edge -and even outside the logical page. - -This package \textsf{gentombow} provides a Japanese-style -crop marks (called `tombow' in Japanese) for trimming paper stacks, -and place the document page at the center of a larger physical -paper sheet. It automatically detects the page size -(\verb+\paperwidth+, \verb+\paperheight+) which is -going to be set by document class. -This document itself is a demonstration of this package, -with final A4 paper printed on B4 (JIS B4; not ISO B4!) paper. - -A basic usage: -\begin{verbatim} - \documentclass[a4paper]{article} - \usepackage{gentombow} - \usepackage{graphicx} - \begin{document} - The content - \end{document} -\end{verbatim} - -Note that this package does nothing about output paper size -specification; use one of the followings to do it. -\begin{itemize} -\item \textsf{graphicx} package - with \texttt{setpagesize} feature added in 2016 - (supports all engines) -\item \textsf{bxpapersize} package - (supports all engines; by Takayuki YATO) -\item \textsf{bounddvi} package - (supports only DVI output mode; part of \textsf{gentombow} bundle) -\end{itemize} - -This package is part of \textsf{gentombow} bundle: -\begin{verbatim} - https://github.com/aminophen/gentombow -\end{verbatim} -Originally it was part of \textsf{platex-tools} bundle, -but it has been moved since March 2018. - -\section{Basic Functions} - -First, I introduce some basic functions of \textsf{gentombow} package. - -\subsection{Automatic Determination of Output Size} - -In this package, -the following printer's standard physical paper sizes are predefined; -A series (\texttt{a0}--\texttt{a10}), -B series (\texttt{b0}--\texttt{b10}), -C series (\texttt{c0}--\texttt{c10}), -\texttt{letter}, \texttt{legal} and \texttt{executive}. -In the current release, `B series' is JIS standard, -not ISO standard (this might be changed in the near future). -Also, some variations \texttt{a4var} and \texttt{b5var} are predefined. - -When one of the above sizes (except \texttt{a0}, \texttt{b0} -and \texttt{c0}) is detected, the output size is -automatically determined along with the following rule: -\begin{itemize} -\item When A series detected: - the output is going to be larger B series -\item When B/C series or - \texttt{letter}, \texttt{legal}, \texttt{executive} detected: - the output is going to be larger A series -\end{itemize} -The crop marks are automatically added. -The orientation (landscape/portrait) of the input paper is -also preserved. - -The following list shows common examples: -\begin{longtable}[c]{cc} - \hline - Detected page size & Output size \\ - \hline - a6 & b6 \\ - b6 & a5 \\ - a5 & b5 \\ - b5 & a4 \\ - a4 & b4 \\ - b4 & a3 \\ - a3 & b3 \\ - b3 & a2 \\ - \hline - c6 & a5 \\ - c5 & a4 \\ - c4 & a3 \\ - c3 & a2 \\ - \hline - letter & a3 \\ - legal & a3 \\ - executive & a4 \\ - \hline -\end{longtable} - -\subsection*{When Automatic Determination Failed} - -When the page size is different from any of the predefined sizes, -the page is placed with the surrounding 1~inch margins. -For example, when the page has $100\,\mathrm{mm}$ width and -$200\,\mathrm{mm}$ height, the output size is going to be -$100\,\mathrm{mm}+2\,\mathrm{in}$ width and -$200\,\mathrm{mm}+2\,\mathrm{in}$ height. - -\subsection{Job Info Printing} - -By default, the crop marks are printed with a banner, which shows -a job info like \makeatletter\texttt{\the\@bannertoken}\makeatother. -The format is similar to \verb+tombow+ option, which is -available in most of the common Japanese classes. -The default also reacts to \verb+tombo+ (without a job info) or -\verb+mentuke+ (do not print actual crop marks) class options. - -\section{Package Options} - -You can specify output size and/or disable job info printing -using package options. - -\subsection{Explicit Specification of Output Size} - -You can also force the output size using package option. -For example, -\begin{verbatim} - \documentclass[a4paper]{article} - \usepackage[tombow-a4]{gentombow} - \begin{document} - The content - \end{document} -\end{verbatim} -forces the output size to be a3 (the automatic determination -`b4' is discarded). Available sizes are the same as -the predefined sizes, that is, -A series (\texttt{a0}--\texttt{a10}), -B series (\texttt{b0}--\texttt{b10}), -C series (\texttt{c0}--\texttt{c10}) and -\texttt{a4var}, \texttt{b5var}, -\texttt{letter}, \texttt{legal}, \texttt{executive}. -The orientation (landscape/portrait) of the input paper is -also preserved again. - -The option format is: -\Meta{crop mark format}\texttt{-}\Meta{output size}. -The crop mark format is one of the following: -\verb+tombow+ (default), \verb+tombo+ (without a job info), -\verb+mentuke+ (do not print actual crop marks). - -\subsection{Disabling Job Info Printing} - -When you specify the output size explicitly, the crop mark format -can be given at the same time, as described previously. -When the output size is automatically determined, you can disable -job info printing by \verb+notombowbanner+ option. - -\section{Customization of Crop Mark} - -The \textsf{pxgentombow} package provides some commands to -customize crop mark format. - -\subsection{Banner content} - -Using \verb+\settombowbanner+, you can set the banner content. -An example using \verb+\pdfcreationdate+ (pdf\TeX\ primitive) -\begin{verbatim} - \documentclass[a4paper]{article} - \usepackage{gentombow} - \settombowbanner{\jobname\space (\pdfcreationdate)} - \begin{document} - The content - \end{document} -\end{verbatim} -will result in -{\settombowbanner{\jobname\space (\pdfcreationdate)}% - \makeatletter\texttt{\the\@bannertoken}\makeatother}. -The argument is an arbitrary token list. - -\subsection{Banner font} - -Using \verb+\settombowbannerfont+, you can change the font -with which the banner is printed. -\begin{verbatim} - \settombowbannerfont{cmss10 at 9pt} -\end{verbatim} -This feature internally calls the \TeX\ primitive \verb+\font+, -and accepts all fonts supported by the engine. When Lua\TeX\ or -Xe\TeX\ is used, a native OpenType font can also be given. - -\subsection{Crop mark line width} - -By default, the line width of crop marks is 0.1~pt. -This can be change to 1~pt by \verb+\settombowwidth{1pt}+. -The argument is an arbitrary dimension. - -\subsection{Bleed margin width} - -By default, the bleed margin width is 3~mm. -This can be change to 5~mm by \verb+\settombowwidth{5mm}+. -The argument is an arbitrary dimension. - -\subsection{Crop mark color} - -Set the color of crop marks. Package \textsf{xcolor} (recommended) or -\textsf{xcolor} is required. -For example, \verb+\settombowcolor{\color[cmyk]{0,1,0,0}}+ sets magenta. - -\section{Setting PDF page box (``digital tombow'')} - -This is an optional driver-dependent feature. -When \textsf{gentombow} is required with the option \verb+pdfbox+, -following page boxes are emitted to the output PDF file. -The paper size (\verb+/MediaBox+) is also corrected. -\begin{itemize} -\item \verb+/TrimBox+: final paper size. -\item \verb+/BleedBox+: paper size plus bleed margin. -\item \verb+/CropBox+ and \verb+/ArtBox+ are not set. -\end{itemize} -Note: if the package \textsf{pdfx} is loaded with PDF/X mode, -this optional feature is automatically enabled. -Also, \verb+/CropBox+ is set explicitly. - -\section{Additional Notes} - -Here is some additional notes for use with several classes/packages. - -\subsection{Note for \textsf{BXjscls} users} - -When using \textsf{BXjscls} (by Takayuki YATO) with size option -other than 10pt, please add \verb+nomag+ or \verb+nomag*+ to the -class option. For example, -\begin{verbatim} - \documentclass[a4paper,14pt]{bxjsarticle} - \usepackage{gentombow} -\end{verbatim} -will not work as expected (\textsf{gentombow} throws an error -for safety). - -\subsection{Note about Layout Settings} - -You should not change \verb+\hoffset+ or \verb+\voffset+ to non-zero -value, for the purpose of layout settings. Such settings will -conflict with the feature of \textsf{gentombow} package. -To set page layout correctly, you should adjust \verb+\oddsidemargin+ -or \verb+\topmargin+, or leave it to \textsf{geometry} package. - -Note: since the package \textsf{geometry} also has a feature to -change the paper size (\verb+\paperwidth+, \verb+\paperheight+), -please load \textsf{gentombow} after \textsf{geometry}. - -\section*{Change History} - -\begin{itemize} - \item 2017/12/17 v0.9 First CTAN release - \item 2018/03/16 v0.9e Add \verb+\settombowbanner+, - \verb+\settombowbannerfont+ and - \verb+\settombowwidth+. - \item 2018/05/17 v0.9g Add \verb+pdfbox+ option, - \verb+\settombowbleed+ and - \verb+\settombowcolor+. - \item 2018/08/20 v0.9h Add \texttt{hagaki} size for paper detection, - improve patches for \textsf{pdfpages}. - \item 2018/08/30 v0.9j Support \textsf{jsclasses}-style \verb+\mag+ employment - also with \verb+pdfbox+ option. - Fix a bug that \verb+\settombowbleed+ is not - considered by \verb+/TrimBox+. - \item 2019/07/21 v0.9k Support \textsf{pdfx} package. - \item 2020/10/14 v0.9l Import tombow-related patches from \textsf{plautopatch}. -\end{itemize} - -\end{document} diff --git a/macros/jptex/latex/gentombow/pxesopic.sty b/macros/jptex/latex/gentombow/pxesopic.sty deleted file mode 100644 index 567b9d0a2d..0000000000 --- a/macros/jptex/latex/gentombow/pxesopic.sty +++ /dev/null @@ -1,239 +0,0 @@ -% -% pxesopic.sty -% written by Hironobu Yamashita (@aminophen) -% -% This package is part of the gentombow bundle. -% https://github.com/aminophen/gentombow -% -% This package is expected to be compatible with -% * eso-pic.sty -% 2015/07/21 v2.0g -- 2020/09/27 v2.0i -% -% -------------------------------------------------------------- -% [Note] -% The package ``pxesopic.sty'' relies heavily on internals -% of ``plautopatch.sty''. -% Also, ``pxesopic.sty'' is incompatible with ``memoir.cls''. -% -------------------------------------------------------------- -% - -%% package declaration -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{pxesopic} - [2020/10/11 v0.4c Patch to eso-pic for tombow] - -%% preparations -\def\pxesop@pkgname{pxesopic} -\def\pxesop@error{\PackageError\pxesop@pkgname} -\def\pxesop@warn{\PackageWarningNoLine\pxesop@pkgname} -\let\pxesop@debug\@gobble -%\def\pxesop@debug#1{\typeout{\pxesop@pkgname: [DEBUG] #1}}% for debug - -\@ifclassloaded{memoir}{% - \pxesop@warn{This package should not be loaded with memoir.cls}}{} - -\@ifpackageloaded{eso-pic}{% - \pxesop@error{% - Package eso-pic is already loaded!\MessageBreak - Load pxesopic earlier}\@ehc -}{} - -%% hooks -\ifx\declare@file@substitution\@undefined - % LaTeX2e 2020-02-02 PL5 or older - \RequirePackage{filehook} - \let\pxesop@ExecuteAfterPackage=\AtEndOfPackageFile - \let\pxesop@ExecuteBeforePackage=\AtBeginOfPackageFile -\else - % LaTeX2e 2020-10-01 or newer - \def\pxesop@ExecuteAfterPackage#1{\AddToHook{package/after/#1}} - \def\pxesop@ExecuteBeforePackage#1{\AddToHook{package/before/#1}} -\fi - -%% the contents of \AtBeginShipout is dependent on \iftombow; -%% delay execution of \AtBeginShipout inside ``eso-pic.sty'' -%% until \AtBeginDocument, to support both (u)pLaTeX kernel -%% and ``gentombow.sty'' -\RequirePackage{atbegshi}% eso-pic requires atbegshi -\ifx\pfmtname\@undefined\else - \ifx\AtBegShi@Output\@undefined - % LaTeX2e 2020-10-01: an emulation by ``atbegshi-ltx.sty'' - % => pLaTeX2e 2020-10-01 natively supports it - \else - % older: the real ``atbegshi.sty'' is loaded - \IfFileExists{pxatbegshi.sty}{\RequirePackage{pxatbegshi}}{} - \fi -\fi -% -\pxesop@ExecuteBeforePackage{eso-pic}{\pxesop@before} -\pxesop@ExecuteAfterPackage{eso-pic}{\pxesop@after} -% -\def\pxesop@before{% - \let\pxesop@AtBeginShipout\AtBeginShipout - \def\AtBeginShipout##1{\def\pxesop@hook{##1}}% hide it - \pxesop@debug{\noexpand\AtBeginShipout disabled}% - \let\pxesop@before\relax -} -\def\pxesop@after{% - \let\AtBeginShipout\pxesop@AtBeginShipout % restore - \let\pxesop@AtBeginShipout\relax - \pxesop@debug{\noexpand\AtBeginShipout restored}% - \let\@unknownoptionerror\relax %% avoid an error - \pxesop@debug{\noexpand\@unknownoptionerror disabled}% - \let\pxesop@after\relax -} -%% - -%% load it; be careful not to cause unknown option error! -\expandafter\ifx\csname @unknownoptionerror\endcsname - \pxesop@error{Failed to save \noexpand\@unknownoptionerror}\@ehc -\fi -\let\pxesop@unknownoptionerror\@unknownoptionerror -% -\chardef\pxesop@status\z@ -\@ifpackageloaded{plautopatch}{% - \expandafter\ifx\csname platpc@begin@eso-pic\endcsname\relax - % ``plautopatch.sty'' is loaded but the macro is \relax - % => means that ``pxesopic.sty'' is automatically loaded - \@ifl@t@r{\fmtversion}{2020/10/01}{% - \chardef\pxesop@status\@ne - }{}% - \fi -}{} -% -%% pass all options to keyval-style ``eso-pic.sty'' -\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{eso-pic}} -\ProcessOptions\relax -\RequirePackage{eso-pic} -% -%% ensure internal dimensions added in ``eso-pic.sty'' v2.0i -\ifx\ESO@tempdima\@undefined \newdimen\ESO@tempdima \fi -\ifx\ESO@tempdimb\@undefined \newdimen\ESO@tempdimb \fi -% -%% recover the error -\ifnum\pxesop@status>\z@ % auto - \def\pxesop@pkgtohook{eso-pic}% - % note that ``plautopatch.sty'' discards the hook - % on LaTeX2e 2020-02-02 PL5 or older - \ifx\declare@file@substitution\@undefined - \let\pxesop@pkgtohook\pxesop@pkgname - % throw an error for unsupported usage - % [FIXME] the error below is actually unnecessary when - % none of ``eso-pic.sty'' options is used; how to detect that? - \pxesop@error{Try loading \pxesop@pkgname\space by hand}\@ehc - \fi -\else - \let\pxesop@pkgtohook\pxesop@pkgname -\fi -\pxesop@ExecuteAfterPackage\pxesop@pkgtohook{% - \let\@unknownoptionerror\pxesop@unknownoptionerror - \pxesop@debug{\noexpand\@unknownoptionerror restored}% -} -%% - -%% do it -%-- similar to bounddvi.sty (checked 2020/10/08 v8.2) -% detection of \iftombow availability is delayed until \AtBeginDocument, -% to support both (u)pLaTeX kernel and ``gentombow.sty'' -% Note: this package does not consider changing \iftombow status -% in the middle of a single document. -\AtBeginDocument{\pxesop@do} -\def\pxesop@do{% - \ifx\tombowtrue\@undefined - \pxesop@debug{Tombow feature unavailable, no patch applied}% - \let\pxesop@switch\pxesop@orig % skip if-tokens and restore - \fi - \pxesop@switch} -% -\def\pxesop@switch{% - \iftombow \pxesop@ensure@stock \pxesop@new - \else \pxesop@orig \fi} -% -\def\pxesop@ensure@stock{% - %\iftombow - % if \stockwidth/\stockheight are not available, - % define them now - \ifx\stockwidth\@undefined \newdimen\stockwidth \fi - \ifx\stockheight\@undefined \newdimen\stockheight \fi - % if \stockwidth already has effective value, do nothing; - % otherwise assume pLaTeX-style tombow and set it to - % \paperwidth + 2in (similar for \stockheight) - \ifdim\stockwidth>\z@\else - \stockwidth\paperwidth \advance\stockwidth2in - \fi - \ifdim\stockheight>\z@\else - \stockheight\paperheight \advance\stockheight2in - \fi - %\fi -} -%-- -% -%% for \iftombow is FALSE => restore from ``eso-pic.sty'' -\expandafter\def\expandafter\pxesop@orig\expandafter{% - \expandafter\AtBeginShipout\expandafter{\pxesop@hook}} -% -%% for \iftombow is TRUE => redefine by ``pxesopic.sty'' -\def\pxesop@new{% - %% \AtStockLowerLeft: based on TRUE of \ESO@isMEMOIR - \renewcommand\AtStockLowerLeft[1]{% - \begingroup - \ESO@tempdima=-\stockwidth - \advance\ESO@tempdima\paperwidth - \ESO@tempdimb=-\stockheight - \advance\ESO@tempdimb\paperheight - %% specific BEGIN - \advance\ESO@tempdima 1in\relax - \advance\ESO@tempdimb 1in\relax - \advance\ESO@tempdima \hoffset\relax - \advance\ESO@tempdimb \voffset\relax - %% specific END - \AtPageLowerLeft{% - \put(\LenToUnit{\ESO@tempdima},\LenToUnit{\ESO@tempdimb}){##1}% - }% - \endgroup - }% === - %% \AtStockUpperLeft: based on TRUE of \ESO@isMEMOIR - \renewcommand\AtStockUpperLeft[1]{% - \AtStockLowerLeft{% - \put(0,\LenToUnit{\stockheight}){##1}% - }% - }% === - %% \AtStockCenter: based on TRUE of \ESO@isMEMOIR - \renewcommand\AtStockCenter[1]{% - \AtStockLowerLeft{% - \put(\LenToUnit{.5\stockwidth},\LenToUnit{.5\stockheight}){##1}% - }% - }% - %% \AtTextUpperLeft: same as FALSE of \ESO@isMEMOIR - % (no change) - % - %% \AtBeginShipout: based on TRUE of \ESO@isMEMOIR - \AtBeginShipout{% - \ESO@tempdima=\dimexpr(\stockwidth-\paperwidth)/2\relax - \ESO@tempdimb=-\dimexpr(\stockheight+\paperheight)/2\relax - \ifESO@texcoord - \advance\ESO@tempdimb\paperheight % [FIXME] not sure! - \fi - %% specific BEGIN - \advance\ESO@tempdima -\hoffset\relax - \advance\ESO@tempdimb \voffset\relax - %% specific END - \nointerlineskip - \AtBeginShipoutUpperLeft{% - \put(\LenToUnit{\ESO@tempdima},\LenToUnit{\ESO@tempdimb}){% - \ESO@HookIIIBG\ESO@HookIBG\ESO@HookIIBG - \global\let\ESO@HookIIBG\@empty - }% - }% - \AtBeginShipoutUpperLeftForeground{% - \put(\LenToUnit{\ESO@tempdima},\LenToUnit{\ESO@tempdimb}){% - \ESO@HookIFG\ESO@HookIIFG\ESO@HookIIIFG - \global\let\ESO@HookIIFG\@empty - }% - }% - }% === -} -%% - -\endinput -%% EOF diff --git a/macros/jptex/latex/gentombow/pxgentombow.pdf b/macros/jptex/latex/gentombow/pxgentombow.pdf deleted file mode 100644 index d30a4509e4..0000000000 Binary files a/macros/jptex/latex/gentombow/pxgentombow.pdf and /dev/null differ diff --git a/macros/jptex/latex/gentombow/pxgentombow.sty b/macros/jptex/latex/gentombow/pxgentombow.sty deleted file mode 100644 index bd94b4bcee..0000000000 --- a/macros/jptex/latex/gentombow/pxgentombow.sty +++ /dev/null @@ -1,16 +0,0 @@ -% -% pxgentombow.sty -% written by Hironobu Yamashita (@aminophen) -% -% This package is part of the gentombow bundle. -% https://github.com/aminophen/gentombow -% - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{pxgentombow} - [2020/10/14 v0.9l Generate crop mark 'tombow'] -\PackageWarningNoLine{pxgentombow}{% - Package `pxgentombow' is now superseded by\MessageBreak - `gentombow', use `gentombow' instead} -\RequirePackageWithOptions{gentombow}% load it -\endinput diff --git a/macros/jptex/latex/gentombow/pxgentombow.tex b/macros/jptex/latex/gentombow/pxgentombow.tex deleted file mode 100644 index 8a8c2616bd..0000000000 --- a/macros/jptex/latex/gentombow/pxgentombow.tex +++ /dev/null @@ -1,25 +0,0 @@ -%# -*- coding: utf-8 -*- -\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016) - \epTeXinputencoding utf8 % ensure utf-8 encoding for platex -\fi - -\documentclass[a4paper]{jsarticle} -\usepackage{doc} -\usepackage{pxgentombow} -\usepackage{bounddvi} -\GetFileInfo{pxgentombow.sty} -\title{Package \textsf{pxgentombow}} -\author{Hironobu Yamashita} -\date{2018年5月17日} -\begin{document} - -\maketitle - -\begin{center} -The package \textsf{pxgentombow} is now superseded by \textsf{gentombow}! -\end{center} - -\textsf{pxgentombow}パッケージは、上位版である\textsf{gentombow}パッケージに -統一されました。代わりに\textsf{gentombow}パッケージを使用してください。 - -\end{document} diff --git a/macros/jptex/latex/gentombow/pxpdfpages.sty b/macros/jptex/latex/gentombow/pxpdfpages.sty deleted file mode 100644 index ad86ea819b..0000000000 --- a/macros/jptex/latex/gentombow/pxpdfpages.sty +++ /dev/null @@ -1,72 +0,0 @@ -% -% pxpdfpages.sty -% written by Hironobu Yamashita (@aminophen) -% -% This package is part of the gentombow bundle. -% https://github.com/aminophen/gentombow -% -% This package is expected to be compatible with -% * pdfpages.sty -% (2015/07/19 v0.5a -- 2020/01/28 v0.5q) -% - -%% package declaration -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{pxpdfpages} - [2020/10/11 v0.4c Patch to pdfpages for tombow] - -%% preparations -\def\pxpdpg@pkgname{pxpdfpages} -\def\pxpdpg@warn{\PackageWarningNoLine\pxpdpg@pkgname} -\def\pxpdpg@info{\PackageInfo\pxpdpg@pkgname} -\let\pxpdpg@debug\@gobble -%\def\pxpdpg@debug#1{\typeout{\pxpdpg@pkgname: [DEBUG] #1}}% for debug - -%% load it -\RequirePackageWithOptions{pdfpages}% pdfpages requires atbegshi -\ifx\pfmtname\@undefined\else - \ifx\AtBegShi@Output\@undefined - % LaTeX2e 2020-10-01: an emulation by ``atbegshi-ltx.sty'' - % => pLaTeX2e 2020-10-01 natively supports it - \else - % older: the real ``atbegshi.sty'' is loaded - \IfFileExists{pxatbegshi.sty}{\RequirePackage{pxatbegshi}}{} - \fi -\fi - -%% do it -%-- similar to bounddvi.sty (checked 2020/10/08 v8.2) -% detection of \iftombow availability is delayed until \AtBeginDocument, -% to support both (u)pLaTeX kernel and ``gentombow.sty'' -\AtBeginDocument{\pxpdpg@do} -\def\pxpdpg@do{% - \ifx\tombowtrue\@undefined - \pxpdpg@debug{Tombow feature unavailable, no patch applied}% - \let\pxpdpg@switch\relax % do nothing - \fi - \pxpdpg@switch} -% -\def\pxpdpg@switch{\pxpdpg@patch@pdfpages} - -%% patch internal for pdfpages to work with tombow -%-- Note: this code should be copied to gentombow.sty! -\def\pxpdpg@patch@pdfpages{% - \RequirePackage{etoolbox} - \patchcmd{\AM@output}{% - \setlength{\@tempdima}{\AM@xmargin}% - \edef\AM@xmargin{\the\@tempdima}% - \setlength{\@tempdima}{\AM@ymargin}% - \edef\AM@ymargin{\the\@tempdima}% - }{% - \setlength{\@tempdima}{\AM@xmargin\iftombow+1in\fi}% - \edef\AM@xmargin{\the\@tempdima}% - \setlength{\@tempdima}{\AM@ymargin\iftombow-1in\fi}% - \edef\AM@ymargin{\the\@tempdima}% - }% - {\pxpdpg@info{Patch for pdfpages applied}}% - {\pxpdpg@warn{Patch for pdfpages failed}}% -} - -%% all done - -\endinput diff --git a/macros/jptex/latex/gentombow/pxtextpos.sty b/macros/jptex/latex/gentombow/pxtextpos.sty deleted file mode 100644 index 02cd5202e2..0000000000 --- a/macros/jptex/latex/gentombow/pxtextpos.sty +++ /dev/null @@ -1,108 +0,0 @@ -% -% pxtextpos.sty -% written by Hironobu Yamashita (@aminophen) -% -% This package is part of the gentombow bundle. -% https://github.com/aminophen/gentombow -% -% This package is expected to be compatible with -% * textpos.sty -% 2005/10/13 v1.6a -- 2019/04/15 v1.9.1 -% - -%% package declaration -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{pxtextpos} - [2020/10/11 v0.4b Patch to textpos for tombow] - -%% preparations -\def\pxtxtpos@pkgname{pxtextpos} -\def\pxtxtpos@warn{\PackageWarningNoLine\pxtxtpos@pkgname} -\let\pxtxtpos@debug\@gobble -%\def\pxtxtpos@debug#1{\typeout{\pxtxtpos@pkgname: [DEBUG] #1}}% for debug - -%% load it -\RequirePackageWithOptions{textpos} -% textpos requires everyshi, only if both conditions are met: -% (1) \fmtversion is **older** than 2020/10/01 -% (2) \ifTP@abspos == \iftrue -% [TODO] tate-mode support is incomplete! -\ifx\pfmtname\@undefined\else - \ifx\@EveryShipout@Output\@undefined - % LaTeX2e 2020-10-01: an emulation by ``everyshi-ltx.sty'' - % => pLaTeX2e 2020-10-01 natively supports it - \else - % older: the real ``everyshi.sty'' is loaded - \IfFileExists{pxeveryshi.sty}{\RequirePackage{pxeveryshi}}{} - \fi -\fi - -%% do it -%-- similar to bounddvi.sty (checked 2020/10/08 v8.2) -% detection of \iftombow availability is delayed until \AtBeginDocument, -% to support both (u)pLaTeX kernel and ``gentombow.sty'' -\AtBeginDocument{\pxtxtpos@do} -\def\pxtxtpos@do{% - \ifx\tombowtrue\@undefined - \pxtxtpos@debug{Tombow feature unavailable, no patch applied}% - \let\pxtxtpos@switch\relax % do nothing - \fi - \pxtxtpos@switch} -% -\def\pxtxtpos@switch{% - \let\textblockorigin\pxtxtpos@textblockorigin - \ifTP@abspos\textblockorigin{0pt}{0pt}\fi %% reset -} - -%% known definition -\def\pxtxtpos@textblockorigin#1#2{% - \ifTP@abspos - \TP@ox=-1in \addtolength\TP@ox{#1} - \TP@oy=-1in \addtolength\TP@oy{#2} - \ifTP@chatter\typeout{TextBlockOrigin set to #1 x #2}\fi - \else - \PackageError{textpos} - {The \protect\textblockorigin\space command\MessageBreak - may only be used if the package was given\MessageBreak - the`absolute' option when it was invoked} - {If you want to use the \protect\textblockorigin\space command, then - \MessageBreak - invoke the package with the syntax\MessageBreak - \protect\usepackage[absolute]{textpos}} - \fi -} -\@onlypreamble\pxtxtpos@textblockorigin - -%% check definition -\ifx\textblockorigin\pxtxtpos@textblockorigin\else - \pxtxtpos@warn{% - Command \noexpand\textblockorigin is beyond my knowledge.\MessageBreak - I will apply the patch anyway, but it may break:\MessageBreak - Please report to the author of `\pxtxtpos@pkgname.sty'} -\fi - -%% new definition -\def\pxtxtpos@textblockorigin#1#2{% - \ifTP@abspos - \TP@ox=-1in \addtolength\TP@ox{#1} - \TP@oy=-1in \addtolength\TP@oy{#2} - %%% addition - \iftombow - \addtolength\TP@ox{1in}\addtolength\TP@oy{1in} - \fi - %%% - \ifTP@chatter\typeout{TextBlockOrigin set to #1 x #2}\fi - \else - \PackageError{textpos} - {The \protect\textblockorigin\space command\MessageBreak - may only be used if the package was given\MessageBreak - the`absolute' option when it was invoked} - {If you want to use the \protect\textblockorigin\space command, then - \MessageBreak - invoke the package with the syntax\MessageBreak - \protect\usepackage[absolute]{textpos}} - \fi -} - -\endinput -%% EOF diff --git a/macros/latex/contrib/gentombow/LICENSE b/macros/latex/contrib/gentombow/LICENSE new file mode 100644 index 0000000000..9661ce7b8d --- /dev/null +++ b/macros/latex/contrib/gentombow/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2016-2020 Hironobu Yamashita +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/macros/latex/contrib/gentombow/README.md b/macros/latex/contrib/gentombow/README.md new file mode 100644 index 0000000000..94cbdbdac0 --- /dev/null +++ b/macros/latex/contrib/gentombow/README.md @@ -0,0 +1,71 @@ +# gentombow + +This bundle provides a LaTeX package for generating Japanese-style +crop marks (called 'tombow' in Japanese) for practical use in +self-publishing. +The core feature of "gentombow.sty" is based on pLaTeX kernel. + +## Supported engines + +All packages except bounddvi.sty works with the followings: +- LaTeX + dvips/dvipdfmx +- pLaTeX/upLaTeX + dvips/dvipdfmx +- pdfLaTeX +- LuaLaTeX +- XeLaTeX + +## Bundle contents + +- gentombow.sty: + Generate crop marks (called 'tombow' in Japanese) for + practical use in self-publishing. + It provides the core 'tombow' feature if not available. +- pxgentombow.sty: + (Superseded by gentombow.sty; for compatibility only.) +- bounddvi.sty: + Set papersize special to DVI file. + Can be used on LaTeX/pLaTeX/upLaTeX (with DVI output mode) + with dvips or dvipdfmx drivers. + Old version (v6.0) was written by Koichi INOU in 2004 + (https://www.ma.ns.tcu.ac.jp/Pages/TeX/bounddvi.sty.html), + and incorporated into this bundle by his courtesy. + +## Miscellaneous patches + +Some packages are unaware of crop marks defined in "gentombow"; +to cope with those packages, patches are provided here. +- pxtextpos.sty: + Patch for textpos.sty (by Norman Gray). +- pxesopic.sty: + Patch for eso-pic.sty (by Rolf Niepraschk). +- pxpdfpages.sty: + Patch for pdfpages.sty (by Andreas Matthias). + +These patches can also be used independent of "gentombow", +to avoid problems with crop marks on pLaTeX and upLaTeX. + +## Character encoding + +All the package files (.sty) contain ASCII characters only. +All the document files (.tex) are encoded in UTF-8. + +## Installation + +- *.sty -> $TEXMF/tex/latex/gentombow +- *.tex, *.pdf -> $TEXMF/doc/latex/gentombow + +## Repository + +The bundle is maintained on GitHub: + https://github.com/aminophen/gentombow + +## License + +The bundle may be distributed and/or modified under the terms of +the 3-clause BSD license (see [LICENSE](./LICENSE)). + +## Release Date + +2020-10-14 + +Hironobu Yamashita diff --git a/macros/latex/contrib/gentombow/bounddvi-en.pdf b/macros/latex/contrib/gentombow/bounddvi-en.pdf new file mode 100644 index 0000000000..2cf419316e Binary files /dev/null and b/macros/latex/contrib/gentombow/bounddvi-en.pdf differ diff --git a/macros/latex/contrib/gentombow/bounddvi-en.tex b/macros/latex/contrib/gentombow/bounddvi-en.tex new file mode 100644 index 0000000000..82046f888a --- /dev/null +++ b/macros/latex/contrib/gentombow/bounddvi-en.tex @@ -0,0 +1,136 @@ +%# -*- ascii characters only -*- + +% Package v1.0--v6.0: Koichi INOUE +% Package v7.0-- : Hironobu Yamashita +% The package documentation (this file) was +% written by Hironobu Yamashita. + +\documentclass[a4paper]{article} +\usepackage{doc} +\usepackage{bounddvi} +\GetFileInfo{bounddvi.sty} +\title{Package \textsf{bounddvi} \fileversion} +\author{Koichi Inoue \& Hironobu Yamashita} +\date{\filedate} +\begin{document} + +\maketitle + +Package \textsf{bounddvi} sets papersize special into DVI file. +This package can be used in both tate (vertical) and yoko (horizontal) +writing directions of Japanese p\LaTeX/up\LaTeX, and both +\texttt{dvipdfmx} and \texttt{dvips} drivers are supported. +The \texttt{tombow} option defined in Japanese p\LaTeX\ kernel is +also supported. Of course, this package can be used also with the +original \LaTeX\ in DVI output mode. + +This package (since v7.0) is part of \textsf{gentombow} bundle: +\begin{verbatim} + https://github.com/aminophen/gentombow +\end{verbatim} +Originally it was part of \textsf{platex-tools} bundle, +but it has been moved since March 2018. + +\section*{Usage} + +Load this package in preamble. +\begin{verbatim} + \documentclass[a5paper]{article} + \usepackage{bounddvi} + ... +\end{verbatim} +Process the \texttt{.tex} file using \texttt{latex} + +\texttt{dvips} chain or \texttt{latex} + \texttt{dvipdfmx} chain. + +\section*{Known limitations} + +\begin{enumerate} +\item The compatibility with \textsf{geometry} package may not be +perfect, as both \textsf{geometry} and \textsf{bounddvi} embeds +papersize special into a DVI file. The loading order of these +two packages may affect the actual size of output. +\item This package supports ``\textsf{jsclasses}-like employment'' +of \verb+\mag+, because it's more widely used in Japan. This may +be incompatible with some classes or packages which employ +\verb+\mag+ in other ways. +\end{enumerate} +The details are described in the sections below. + +\subsection*{The behavior of multiple papersize specials} + +Sometimes multiple papersize specials may be embedded into a DVI +file. Among these specials, the specification which appears +\emph{at last} in DVI takes effect when \texttt{dvipdfmx} or +\texttt{dvips} (\TeX\ Live 2017 or later) is used\footnote{% +When \texttt{dvips} in \TeX\ Live 2016 or earlier is used, +the specification which appears \emph{first} in DVI took effect, +but the default behavior was changed in \TeX\ Live r42420 to +be compatible with \texttt{dvipdfmx}. The new option \texttt{-L0} +can be used to recover the old behavior.}. For example, when the +following source is processed with \texttt{dvipdfmx}, +\begin{verbatim} + % latex + dvipdfmx + \documentclass{...} + \usepackage{bounddvi} + \usepackage[dvipdfm]{geometry} +\end{verbatim} +the specification by \textsf{geometry} wins. + +\section*{Note about \texttt{\char92mag} handling} + +Among the packages in CTAN, there are two types of implementation +in terms of \verb+\mag+ employment. It seems that there is no +(official or practical) ``standard'' in \verb+\mag+ treatment. + +When the output is going to the physical size of A4 +($210\,\mathrm{mm} \times 297\,\mathrm{mm}$) with the setting of +\verb+\mag=2000+, there are two ways: some classes/packages can set +\begin{quote} + \texttt{\char92mag=2000}\\ + \texttt{\char92paperwidth=210mm} ($= 420\,\mathrm{truemm}$)\\ + \texttt{\char92paperheight=297mm} ($= 594\,\mathrm{truemm}$) +\end{quote} +and others can set +\begin{quote} + \texttt{\char92mag=2000}\\ + \texttt{\char92paperwidth=105mm} ($= 210\,\mathrm{truemm}$)\\ + \texttt{\char92paperheight=148.5mm} ($= 297\,\mathrm{truemm}$) +\end{quote} +The first way is adopted by \textsf{geometry} package etc, and it's +(probably) based on the behavior of the \verb+papersize+ special of +\texttt{dvips}. It does not handle true units properly, and accepts +only non-true units and evaluates them as if they were true units. +The second way is adopted by \textsf{jsclasses} document class etc, +and is also suppoted by \verb+pdf:pagesize+ special of +\texttt{dvipdfm(x)}. This can be more consistent with \LaTeX, since +all other layout parameters (e.g. \verb+\textwidth+) are set +according to the unit truemm. + +The \textsf{bounddvi} supports the latter, so some classes/packages +which are based on the former may or may not work properly when +using \textsf{bounddvi} package. + +\section*{References} + +\begin{itemize} +\item Setting paper size using \texttt{dvips} \& \texttt{dvipdfm} + (description in Japanese)\\ + \texttt{https://www.ma.ns.tcu.ac.jp/Pages/TeX/bounddvi.sty.html} +\end{itemize} + +\section*{ChangeLog} + +\begin{itemize} + \item 2002/03/10 v1.0 (KI) First version + \item 2002/10/30 v2.0 (KI) Add \texttt{dvipdfm} \texttt{pdf:pagesize} special + \item 2003/03/22 v3.2 (KI) Compatibility with \textsf{hyperref} + \item 2004/05/08 v4.0 (KI) Support for $\mathtt{\char92mag} \ne 1000$ + \item 2004/12/08 v5.2 (KI) Compatibility with \textsf{geometry} + \item 2004/12/15 v6.0 (KI) Not to use \texttt{dvipdfm(x)} \texttt{pdf:pagesize special} + \item 2016/10/25 v7.1 (HY) Support for p\LaTeXe\ tombow option, + compatibility with \textsf{graphics}/\textsf{color} packages + \item 2016/12/28 v7.2 (HY) Documentation for the new \texttt{dvips} behavior + \item 2020/09/25 v8.0 (HY) Support for \LaTeXe/p\LaTeXe~2020-10-01 +\end{itemize} + +\end{document} diff --git a/macros/latex/contrib/gentombow/bounddvi.pdf b/macros/latex/contrib/gentombow/bounddvi.pdf new file mode 100644 index 0000000000..57fed9c6c7 Binary files /dev/null and b/macros/latex/contrib/gentombow/bounddvi.pdf differ diff --git a/macros/latex/contrib/gentombow/bounddvi.sty b/macros/latex/contrib/gentombow/bounddvi.sty new file mode 100644 index 0000000000..a70da52c6e --- /dev/null +++ b/macros/latex/contrib/gentombow/bounddvi.sty @@ -0,0 +1,112 @@ +% +% bounddvi.sty +% 2020/10/08 v8.2-v7.0 h.y.acetaminophen [at] gmail.com +% 2004/12/15 v6.0-v1.0 inoue [at] ma.ns.tcu.ac.jp +% +% This package, originally written by Koichi Inoue +% and modified by Hironobu Yamashita, is distributed +% as part of the gentombow bundle. +% https://github.com/aminophen/gentombow +% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{bounddvi}[2020/10/08 v8.2 bounddvi] + +% Note: graphics/color drivers +% - dvips.def 2016/07/10 v3.1a or later +% - dvipdfmx.def 2016/07/10 v4.12 or later +% emit papersize special _only_ when \Gin@setpagesizetrue +% and \mag = 1000. When graphicx(s) or color is used with +% setpagesize option (= default since 2016) and \mag equals +% to 1000, we can exploit its routine. +% (they are using \AtBeginDocument{\AtBeginDvi{...}}) +% However, these .def files do _not_ care about tombow; so, +% we set \stock{width,height} to invoke stock test in those +% files (probably meant for memoir.cls). + +% detection of \iftombow status is delayed until \AtBeginDocument, +% to support both (u)pLaTeX kernel and ``gentombow.sty'' +\def\bddv@maybe@ensure@stock{% + \ifx\tombowtrue\@undefined + \let\bddv@ensure@stock\relax % skip if-tokens + \fi + \bddv@ensure@stock} + +% when \iftombow == \iftrue, we also need \stock{width,height} +\def\bddv@ensure@stock{% + \iftombow + % if \stockwidth/\stockheight are not available, + % define them now + \ifx\stockwidth\@undefined \newdimen\stockwidth \fi + \ifx\stockheight\@undefined \newdimen\stockheight \fi + % if \stockwidth already has effective value, do nothing; + % otherwise assume pLaTeX-style tombow and set it to + % \paperwidth + 2in (similar for \stockheight) + \ifdim\stockwidth>\z@\else + \stockwidth\paperwidth \advance\stockwidth2in + \fi + \ifdim\stockheight>\z@\else + \stockheight\paperheight \advance\stockheight2in + \fi + \fi +} + +% prepare actual papersize special +\def\bddv@emit@papersize{% + \begingroup + % if \stockwidth/\stockheight are defined & have effective + % values, copy them to \paperwidth/\paperheight + % for current group + \ifx\stockwidth\@undefined\else \ifdim\stockwidth>\z@ + \paperwidth\stockwidth + \fi\fi + \ifx\stockheight\@undefined\else \ifdim\stockheight>\z@ + \paperheight\stockheight + \fi\fi + % adjust for \mag and emit papersize special + \divide\paperwidth\@m\multiply\paperwidth\mag + \divide\paperheight\@m\multiply\paperheight\mag + \special{papersize=\the\paperwidth,\the\paperheight}% + \endgroup +} + +%% Since LaTeX2e 2020-10-01, \@begindocumenthook is deprecated +%% and \UseHook{begindocument} etc. are used. +%% This code appends papersize special to the _end_ of the hook. +%% (Note: support for old dvips is removed.) +\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} +\IfFormatAtLeastTF{2020-10-01}{% + \AtBeginDocument{% + \bddv@maybe@ensure@stock + \AtBeginDvi{\bddv@emit@papersize}}% + \endinput +}{} + +%% The rest of this package is meant for +%% LaTeX2e 2020-02-02 PL5 or older. + +% following code is almost equivalent to +% \AtBeginDocument{\AtBeginDvi{...}} +% however, we put into the _beginning_ of \@begindocumenthook; +% this ensures proper papersize when old dvips +% (TeX Live 2016 or earlier) is used. +% also, note that old pLaTeX (before 2016/07/01) needs \yoko +% at the beginning of \AtBeginDvi. +\begingroup +\def\@prependto@begindocumenthook{% + \bddv@maybe@ensure@stock + \global\setbox\@begindvibox\vbox{% + \csname yoko\endcsname\unvbox\@begindvibox + \bddv@emit@papersize}} +\toks@\expandafter\expandafter\expandafter + {\expandafter\@prependto@begindocumenthook\@begindocumenthook} +\xdef\@begindocumenthook{\the\toks@} +% append papersize special again to the _end_ of the +% current \@begindocumenthook; this will be meaningful e.g. when +% geometry is loaded before bounddvi. +% (geometry adds \AtBeginDocument{\AtBeginDvi{...}} specification) +\expandafter\g@addto@macro\expandafter\@begindocumenthook + \expandafter{\@prependto@begindocumenthook} +\endgroup + +\endinput diff --git a/macros/latex/contrib/gentombow/bounddvi.tex b/macros/latex/contrib/gentombow/bounddvi.tex new file mode 100644 index 0000000000..198bbb7fb9 --- /dev/null +++ b/macros/latex/contrib/gentombow/bounddvi.tex @@ -0,0 +1,149 @@ +%# -*- coding: utf-8 -*- +\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016) + \epTeXinputencoding utf8 % ensure utf-8 encoding for platex +\fi + +% パッケージ作者 (v1.0--v6.0):東京都市大学(旧称・武蔵工業大学)井上浩一 +% 修正版 (v7.0--) および本ドキュメント:山下弘展 (Hironobu Yamashita) + +\documentclass[a4paper]{jsarticle} +\usepackage{doc} +\usepackage{bounddvi} +\GetFileInfo{bounddvi.sty} +\title{Package \textsf{bounddvi} \fileversion} +\author{Koichi Inoue \& Hironobu Yamashita} +\date{\filedate} +\begin{document} + +\maketitle + +DVIファイルは用紙サイズ情報を含みませんが、PostScriptやPDFといった +用紙サイズを規定するフォーマットへ変換するプログラム(\texttt{dvips}や +\texttt{dvipdfmx})は、\verb+\special+命令によってDVIファイルに埋め込ま +れた用紙サイズ情報を解釈します。 +たとえば、幅100mm、高さ200mmの用紙に出力したい場合は +\begin{verbatim} + \special{papersize=100mm,200mm} +\end{verbatim} +のように指定してやることができます。 + +\textsf{bounddvi}パッケージは、クラスファイルなどが想定している用紙 +サイズ情報(\verb+\paperwidth+, \verb+\paperheight+)をDVIファイルに +\verb+\special+命令として埋め込むことで、\texttt{dvips}や +\texttt{dvipdfmx}の出力用紙サイズを指定する機能を提供します。 +\begin{verbatim} + \documentclass[a4j]{jarticle} + \usepackage{bounddvi} + \begin{document} + …本文… + \end{document} +\end{verbatim} +のように使います。p\LaTeX における横組と縦組の両方で使え、また +版面拡大(\verb+\mag+)が使われた場合にも対応しています(詳細は付録 +を参照してください)。また、v7.0以降、p\LaTeX カーネルのトンボ +オプションを使用した場合にも対応しており、p\LaTeX が仮定している +「トンボのノビ(2in)を含めたサイズ」に設定します。 + +本パッケージはv7.0以降、\textsf{gentombow}バンドルの一部として +配布されています: +\begin{verbatim} + https://github.com/aminophen/gentombow +\end{verbatim} +2017年までは\textsf{platex-tools}バンドルの一部でしたが、 +2018年以降は移転しました。 + +\section*{他のパッケージとの互換性} + +用紙サイズ設定機能だけを提供する\textsf{bounddvi}パッケージのほかにも、 +パッケージの機能の一部として用紙サイズ設定を行うものがいくつかあります。 +\begin{itemize} +\item 日本語環境でよく用いられる、p\LaTeX/up\LaTeX 用のクラスファイル + \textsf{jsclasses}(奥村さん作)の\texttt{papersize}オプション + との併用は問題ありません(ただし、このオプションを使用すれば用紙 + サイズ設定には十分ですから、本\textsf{bounddvi}パッケージを併用 + することにも特にメリットはありません)。 +\item 2016年以降の\textsf{graphics/graphicx}パッケージや + \textsf{color}パッケージには用紙サイズ設定機能 + (\texttt{setpagesize}オプション:デフォルトで有効)が + ありますが、併用しても問題は起きないでしょう。 +\item \textsf{hyperref}パッケージも上と同様で、併用しても + 問題は起きないでしょう。 +\item \textsf{geometry}パッケージと併用する場合は、 + 本\textsf{bounddvi}パッケージを\emph{後から}読み込むほうが + 安全でしょう。特に、\texttt{dvipdfmx}を使用して変換する場合に + トンボを付けたいなら、\textsf{bounddvi}を後から読み込むことで + うまくいく可能性があります(付録を参照)。 +\end{itemize} + +\section*{付録:複数の用紙サイズ指定が発行された場合の挙動} + +一つのDVIファイルに複数の用紙サイズ指定\verb+\special+命令が +埋め込まれる場合があります。このうち、\texttt{dvipdfmx}および +\TeX\ Live 2017以降の\texttt{dvips}では、DVIファイルの\emph{最後}に +指定されたものが有効になります\footnote{\TeX\ Live 2016以前の +\texttt{dvips}では、DVIファイルの\emph{最初}に指定されたものが有効 +でしたが、\TeX\ Live r42420で挙動が変更されました。\texttt{-L0}オプ +ションを指定すると従来の挙動に戻ります。}。たとえば\textsf{bounddvi}と +\textsf{geometry}を併用したソース +\begin{verbatim} + \documentclass{...} + \usepackage{bounddvi} + \usepackage[dvipdfm]{geometry} +\end{verbatim} +を\textsf{dvipdfmx}でPDFに変換すると、\textsf{geometry}パッケージの +指定が優先されます。このとき、用紙サイズの設定が正しいかどうかは +\textsf{geometry}パッケージに依存します。 + +\section*{付録:\texttt{\char92mag}の扱いについて} + +本\textsf{bounddvi}パッケージは、日本で広く使われている奥村さんの +\textsf{jsclasses}クラス流の\verb+\mag+の用法をサポートしています。 +しかし、\verb+\mag+の使い方はCTANにある多様なパッケージの中で統一 +されておらず、大きく分けて二通りの使い方があるようです。 + +たとえば、版面を2倍に拡大 (\verb+\mag=2000+) して物理的なA4サイズ +($210\,\mathrm{mm}\times297\,\mathrm{mm}$)の出力を得たい場合 +\begin{quote} + \texttt{\char92mag=2000}\\ + \texttt{\char92paperwidth=210mm} ($= 420\,\mathrm{truemm}$)\\ + \texttt{\char92paperheight=297mm} ($= 594\,\mathrm{truemm}$) +\end{quote} +と設定するものと +\begin{quote} + \texttt{\char92mag=2000}\\ + \texttt{\char92paperwidth=105mm} ($= 210\,\mathrm{truemm}$)\\ + \texttt{\char92paperheight=148.5mm} ($= 297\,\mathrm{truemm}$) +\end{quote} +と設定するものとが存在します。 +前者は\textsf{geometry}パッケージなどの方式で、おそらく\texttt{dvips}の +\verb+papersize+ specialの挙動(truedimenを正しく解釈せず、trueの付か +ない単位だけを受け付けてあたかもtrue付であるかのように評価)に則った +ものでしょう。後者は\textsf{jsclasses}クラスの方式で、これは +\texttt{dvipdfm(x)}の\verb+pdf:pagesize+ specialとも同じです。 +この方式のほうが、truedimenで設定された\LaTeX のほかのレイアウト変数 +(\verb+\textwidth+など)に対して一貫性があると思われます。 +本\textsf{bounddvi}パッケージがサポートしているのは後者の方式です。 + +\section*{参考} + +\begin{itemize} +\item dvipsやdvipdfmなどで用紙サイズを出力\\ + \texttt{https://www.ma.ns.tcu.ac.jp/Pages/TeX/bounddvi.sty.html} +\end{itemize} + +\section*{変更履歴} + +\begin{itemize} + \item 2002/03/10 v1.0 (KI) 最初の公開版 + \item 2002/10/30 v2.0 (KI) \texttt{dvipdfm}の\texttt{pdf:pagesize special}を使用 + \item 2003/03/22 v3.2 (KI) \textsf{hyperref}との互換性を改良 + \item 2004/05/08 v4.0 (KI) $\mathtt{\char92mag} \ne 1000$に対応 + \item 2004/12/08 v5.2 (KI) \texttt{dvips}で\textsf{geometry}との互換性を改良 + \item 2004/12/15 v6.0 (KI) \texttt{dvipdfm(x)}の\texttt{pdf:pagesize special}を不使用に + \item 2016/10/25 v7.1 (HY) p\LaTeXe{}のトンボサポート、 + 2016年の新しい\textsf{graphics}/\textsf{color}に対応 + \item 2016/12/28 v7.2 (HY) 新仕様の\texttt{dvips}をドキュメント化 + \item 2020/09/25 v8.0 (HY) \LaTeXe/p\LaTeXe~2020-10-01(予定)への対応 +\end{itemize} + +\end{document} diff --git a/macros/latex/contrib/gentombow/gentombow-ja.pdf b/macros/latex/contrib/gentombow/gentombow-ja.pdf new file mode 100644 index 0000000000..ee94b6c132 Binary files /dev/null and b/macros/latex/contrib/gentombow/gentombow-ja.pdf differ diff --git a/macros/latex/contrib/gentombow/gentombow-ja.tex b/macros/latex/contrib/gentombow/gentombow-ja.tex new file mode 100644 index 0000000000..411aad1db2 --- /dev/null +++ b/macros/latex/contrib/gentombow/gentombow-ja.tex @@ -0,0 +1,459 @@ +%# -*- coding: utf-8 -*- +\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016) + \epTeXinputencoding utf8 % ensure utf-8 encoding for platex +\fi + +\RequirePackage{plautopatch}% pldocverb +\documentclass[a4paper,dvipdfmx]{jsarticle} +\usepackage{doc} +\makeatletter +\xspcode"5C=3 %% \ +\xspcode"22=3 %% " +%%% dangerous bend +\font\man=manfnt at 10pt +\def\dbend{\leavevmode\raise0pt\hbox{\man\char'177}} +\newenvironment{dangerous}{% + \ifnum\@listdepth>\z@ + \GenericError{}{Do not use `dangerous' environment inside any list}{}{} + \fi + \par\addvspace\medskipamount + \@tempdima=\dimexpr\textwidth-2zw\relax\small + \divide\@tempdima by\dimexpr1zw\relax\@tempcnta=\@tempdima + \leftskip=\dimexpr\textwidth-\@tempcnta zw\relax + \@totalleftmargin\dimexpr\leftskip+0zw + \linewidth=\dimexpr\@tempcnta zw-0zw + \parindent1zw\noindent\kern-\leftskip\hbox to\leftskip{\dbend\hss}% + \everypar{\everypar{}}\ignorespaces +}{\par\addvspace\medskipamount} +%%% logo +\def\pTeX{p\kern-.15em\TeX} +\def\epTeX{$\varepsilon$-\pTeX} +%%% misc +\newcommand{\Meta}[1]{$\langle$\mbox{}\textit{#1}\mbox{}$\rangle$} +\newcommand{\jMeta}[1]{$\langle$\mbox{}\textsf{#1}\mbox{}$\rangle$} +%%% +\makeatother +\usepackage{longtable} +\usepackage[pdfbox]{gentombow} +%\usepackage{bounddvi} +\GetFileInfo{gentombow.sty} +\title{Package \textsf{gentombow} \fileversion} +\author{Hironobu Yamashita} +\date{\filedate} +\begin{document} + +\maketitle + +\begin{center} +English version is available: see \textsf{gentombow.pdf}! +\end{center} + +日本の出版では、たとえば仕上がり寸法がA4サイズの場合、一回り大きな +B4サイズの用紙の中央にトンボ付きで印刷することがあるようです。 +このドキュメントは、実際にA4用紙をB4用紙の中央にトンボ付きで +配置している事例です。 + +\textsf{gentombow}パッケージは、クラスファイルなどが想定している用紙 +サイズ情報(\verb+\paperwidth+, \verb+\paperheight+)を検知し、 +それより一回り大きなサイズの用紙の中央にトンボ付きで出力するために +必要な機能を提供します。使い方の例は +\begin{verbatim} + \documentclass[a4j]{jarticle} + \usepackage{gentombow} + \usepackage{bounddvi} + \begin{document} + …本文… + \end{document} +\end{verbatim} +です。 + +任意の\LaTeX フォーマットで利用可能です。具体的には +\begin{itemize} +\item p\LaTeX, up\LaTeX (縦組にも対応) +\item Lua\LaTeX (Lua\TeX-ja使用の場合は縦組にも対応) +\item pdf\LaTeX +\item Xe\LaTeX +\end{itemize} +での動作を確認しています。また、\textsf{jsclasses}のような +版面拡大(\verb+\mag+)が使われた場合にも対応しています。 + +ただし、本パッケージは実際の出力サイズ指定を発行しませんので、 +以下のいずれかのパッケージと併用するとよいでしょう: +\begin{itemize} +\item \textsf{bounddvi}パッケージ(\textsf{gentombow}バンドル) +\item \textsf{bxpapersize}パッケージ(ZRさん作) +\item \textsf{graphicx}パッケージの2016年以降の版 + (\texttt{setpagesize}機能つきのもの) +\end{itemize} +\textsf{bounddvi}パッケージは本パッケージと同じく +\textsf{gentombow}バンドルに収録されていますが、 +名前のとおりDVIを経由する場合にしか利用できません。 +一方、\textsf{bxpapersize}パッケージは汎用で、Lua\TeX のような +PDF直接出力の場合にも利用できます。また、\textsf{graphicx}パッケージ +は画像挿入用のパッケージですが、2016年以降は自動的に出力サイズ指定も +行うようです($\verb+\mag+ \ne 1000$の場合には機能しません)。 + +本パッケージは、\textsf{gentombow}バンドルの一部として +配布されています: +\begin{verbatim} + https://github.com/aminophen/gentombow +\end{verbatim} +2017年までは\textsf{platex-tools}バンドルの一部でしたが、 +2018年以降は独立させてあります。また、v0.9eまでは +(u)p\LaTeX とLua\TeX-ja専用の\textsf{pxgentombow}パッケージを +用意していましたが、v0.9f以降は\textsf{gentombow}に一本化しました。 + +\section{簡単な使用法} + +はじめに、パッケージをオプション指定なしに使用する場合の機能を +説明します。 + +\subsection{用紙サイズの自動検知による出力サイズ決定} + +パッケージにはあらかじめA系列(\texttt{a0}--\texttt{a10})、 +B系列(\texttt{b0}--\texttt{b10})、C系列(\texttt{c0}--\texttt{c10})と +\texttt{letter}, \texttt{legal}, \texttt{executive}の用紙サイズが +定義されています。ここで、B系列はISOではなくJISです。 +また、変型版として\texttt{a4var}(\texttt{a4}の変型)と +\texttt{b5var}(\texttt{b5}の変型)も定義されています。 + +これらのうちいずれか(ただし\texttt{a0}, \texttt{b0}, \texttt{c0}を +除く)の用紙サイズを検知すると、 +出力サイズが次の規則で自動的に決定されます\footnote{なお、 +C系列と\texttt{letter}, \texttt{legal}, \texttt{executive}については +日本での慣習が不明の +ため、現時点ではA系列のサイズで出力することにしています。}。 +\begin{itemize} +\item 用紙サイズがA系列のとき: + 出力サイズは一回り大きなB系列 +\item 用紙サイズがB, C系列または + \texttt{letter}, \texttt{legal}, \texttt{executive}のとき: + 出力サイズは一回り大きなA系列 +\end{itemize} +この場合、パッケージを読み込んだだけでトンボが付きます。 +なお、用紙サイズが横長の場合は自動的に出力も横長になり、 +縦長の場合は自動的に縦長になります。 + +よく使われる用紙サイズの例を挙げます。 +\begin{longtable}[c]{cc} + \hline + 用紙サイズ & 出力サイズ \\ + \hline + a6 & b6 \\ + b6 & a5 \\ + a5 & b5 \\ + b5 & a4 \\ + a4 & b4 \\ + b4 & a3 \\ + a3 & b3 \\ + b3 & a2 \\ + \hline + c6 & a5 \\ + c5 & a4 \\ + c4 & a3 \\ + c3 & a2 \\ + \hline + letter & a3 \\ + legal & a3 \\ + executive & a4 \\ + \hline +\end{longtable} + +\subsection*{参考:用紙サイズの自動検知に失敗した場合の出力サイズ決定} + +仮に用紙サイズが定義済みのいずれとも異なる場合は、デフォルトでは +用紙の天地左右に1インチずつのノビを付けたサイズで出力します。 +たとえば、幅$100\,\mathrm{mm}$、高さ$200\,\mathrm{mm}$の用紙の場合、 +出力サイズは幅$100\,\mathrm{mm}+2\,\mathrm{in}$、 +高さ$200\,\mathrm{mm}+2\,\mathrm{in}$になります。 + +\subsection{トンボへのバナーの出力} + +デフォルトでは\makeatletter\texttt{\the\@bannertoken}\makeatother +のような形式で、トンボにジョブ情報(処理ファイル名と日付)を示すバナーが +出力されます。これは、\pLaTeX 向けの日本語クラスファイルの多くで +利用可能な\verb+tombow+オプションと同様です。 +ただし、クラスオプションに\verb+tombo+(ジョブ情報を出力しない)または +\verb+mentuke+(トンボの線を表示しない)が指定されている場合は、 +この設定が引き継がれます。 + +\section{パッケージオプション} + +パッケージオプションによって、出力サイズやバナーのジョブ情報の有無を +指定する方法を説明します。 + +\subsection{出力サイズの明示指定} + +自動決定されるサイズと異なるサイズに出力したい場合、 +パッケージオプションで明示的に指定することができます。たとえば +\begin{verbatim} + \documentclass[a4j]{jarticle} + \usepackage[tombow-a3]{gentombow} + \begin{document} + …本文… + \end{document} +\end{verbatim} +とすると、出力サイズは(自動決定のb4は無視されて)a3に変わります。 +指定可能なサイズは、定義済みの用紙サイズと同じものです。すなわち、 +A系列(\texttt{a0}--\texttt{a10})、 +B系列(\texttt{b0}--\texttt{b10})、 +C系列(\texttt{c0}--\texttt{c10})と +\texttt{a4var}, \texttt{b5var}, +\texttt{letter}, \texttt{legal}, \texttt{executive}です。 +なお、ここでも用紙サイズが横長の場合は自動的に出力も横長になり、 +縦長の場合は自動的に縦長になります。 + +オプションは\jMeta{トンボ形式}\texttt{-}\jMeta{出力サイズ}の書式 +\footnote{他のパッケージで見られるようなkey=value形式ではないので +注意してください。このような特殊なオプション書式を用いているのは、 +オプション名が他のクラスファイルやパッケージと衝突する可能性を +小さくするためです。}で与えます。 +トンボ形式は、p\LaTeX の標準クラスと同じで +\verb+tombow+, \verb+tombo+, \verb+mentuke+のいずれかを選びます +(\verb+tombow+はジョブ情報を表示し、\verb+tombo+は表示しません。 +また、\verb+mentuke+はトンボの線を表示しません)。 + +\subsection{トンボに表示するジョブ情報の有無} + +用紙サイズを明示的に指定する場合は、前節のようにトンボ形式と出力サイズを +同時にオプションで与えることができます。 +逆に出力サイズを自動決定に任せつつ、ジョブ情報の有無だけを指定したい +場合は、トンボへのバナー出力を抑制する\verb+notombowbanner+オプションを +使用してください。 + +\section{詳細なカスタマイズ} + +\textsf{gentombow}パッケージは、トンボの見た目やバナーの内容を +カスタマイズする機能も提供します。 + +\subsection{トンボに表示するバナーの内容} + +\verb+\settombowbanner+命令を用います。例えば\epTeX の +\verb+\pdfcreationdate+プリミティブを使って +\begin{verbatim} + \documentclass[a4j]{jarticle} + \usepackage{gentombow} + \settombowbanner{\jobname\space (\pdfcreationdate)} + \begin{document} + …本文… + \end{document} +\end{verbatim} +とすると、バナーの表示内容は +{\settombowbanner{\jobname\space (\pdfcreationdate)}% + \makeatletter\texttt{\the\@bannertoken}\makeatother}になります。 +命令の引数には任意のトークン列を与えることができます。 + +\subsection{バナーの文字のフォント} + +\verb+\settombowbannerfont+命令を用います。例えば +\begin{verbatim} + \settombowbannerfont{cmss10 at 9pt} +\end{verbatim} +のような指定が可能です。内部的には\verb+\font+プリミティブを利用しており、 +使用している\TeX エンジンがサポートする任意のフォントを指定可能です +\footnote{Lua\TeX やXe\TeX (\textsf{gentombow}パッケージの場合)では、 +OpenTypeフォントを直接利用することもできます。}。 + +\subsection{トンボの線の太さ} + +デフォルトではトンボの線の太さは0.1~ptですが、 +\verb+\settombowwidth{1pt}+とすると1~ptになります。 +命令の引数には任意の寸法を与えることができますが、 +実用上は数pt以内が良いでしょう。 + +\subsection{塗り足し(ドブ)の幅} + +デフォルトでは塗り足し(ドブ)の幅は3~mmですが、 +\verb+\settombowbleed{5mm}+とすると5~mmになります。 +命令の引数には任意の寸法を与えることができますが、実用上は数mmでしょう。 + +\subsection{トンボの色} + +トンボの色を指定します。実際に色をつける場合は +\textsf{xcolor}パッケージ(推奨)またはまたは\textsf{color}パッケージが必要です。 +\verb+\settombowcolor{\color[cmyk]{0,1,0,0}}+とするとマゼンタになります。 +CMYKの版ごとにトンボを作成する場合や、特色のトンボが必要な場合に便利です。 + +\section{PDFのデジタルトンボ(page box)の設定} + +この機能はドライバに依存するため、オプション機能としています。 +\textsf{gentombow}パッケージ読み込み時に\verb+pdfbox+オプションを +指定します。DVIを経由する場合は、さらにドライバオプションも必須です +\footnote{例外として、\textsf{gentombow}が読み込まれた時点で +\textsf{graphics}/\textsf{color}のいずれかが読み込まれていた +場合は、そのドライバ設定を引き継ぐことができます。}。 + +この機能を有効化すると、PDFに以下のバウンディングボックス情報 +(いわゆるデジタルトンボ)が書き込まれ、 +さらに用紙サイズ設定(\verb+/MediaBox+相当)も行われます。 +\begin{itemize} +\item \verb+/TrimBox+: 仕上がり紙面サイズ。 +\item \verb+/BleedBox+: 裁ち落とし領域を含んだサイズ。 +\item \verb+/CropBox+, \verb+/ArtBox+: 明示しない。 +\end{itemize} +注意:\textsf{pdfx}パッケージがPDF/Xモードで読み込まれていれば、 +このオプション機能は自動的に有効化されます。 +また、\verb+/CropBox+も明示します。 + +\section{その他の注意点} + +特定のクラスファイルやパッケージと一緒に使用する場合、 +いくつかの注意点があります。 + +\subsection{\textsf{jsclasses}で使用する場合の注意} + +奥村晴彦氏による\textsf{jsclasses}のクラス(2016年以降は日本語\TeX 開発 +コミュニティが管理)を使用していて、10pt以外のサイズオプションを +指定する場合は、以下のいずれかの方法をとってください。 +\begin{itemize} +\item クラスオプションに「トンボオプション」 + (\verb+tombow+または\verb+tombo+)を追加する。 +\item クラスオプションに「\verb+\mag+を使わないオプション」 + (\verb+nomag+または\verb+nomag*+)を追加する。 +\end{itemize} +これは、\textsf{jsclasses}クラス内で行われる\verb+\oddsidemargin+と +\verb+\topmargin+の計算の都合からくる制約です。たとえば +\begin{verbatim} + \documentclass[a4j,14pt]{jsarticle} + \usepackage{gentombow} +\end{verbatim} +という使い方は\emph{誤り}です(このままでは誤った余白設定が +適用されますので、安全のため\textsf{gentombow}パッケージ +がエラーを出すようにしてあります)。代わりに +\begin{verbatim} + \documentclass[a4j,14pt,tombow]{jsarticle} + \usepackage{gentombow} +\end{verbatim} +と書くようにしてください。 + +また、塗り足しの幅などの寸法指定は\verb+true+付きの単位を +使用してください。例えば +\verb+\settombowbleed{3truemm}+と指定すれば、 +\verb+\mag+による版面拡大(縮小)後の塗り足し幅を3~mmにできます。 + +同様に、ZR氏による\textsf{BXjscls}のクラスを使用していて、10pt以外の +サイズオプションを指定する場合は +\begin{itemize} +\item クラスオプションに「\verb+\mag+を使わないオプション」 + (\verb+nomag+または\verb+nomag*+)を追加する。 +\end{itemize} +という対処が必要です(\textsf{BXjscls}クラスでは「トンボオプション」が +機能しないダミーになっていることに注意)。 + +\subsection{レイアウト設定の注意} + +余白などのレイアウト設定でありがちですが、 +\verb+\hoffset+や\verb+\voffset+の値を$0$以外に設定するのは +避けてください。このような設定は\textsf{gentombow}パッケージの +トンボ出力機能と衝突するため、正しい出力が得られません。 +レイアウト設定のために変更すべきなのはこれらの寸法ではなく、 +\verb+\oddsidemargin+や\verb+\topmargin+であることがほとんどです。 +したがって、それらを適切な値に設定するか、レイアウトの設定すべてを +\textsf{geometry}パッケージに任せてしまうのも一つの方法です。 + +\begin{dangerous} +たとえば左右の余白を$25\,\mathrm{mm}$に、上下の余白を +$30\,\mathrm{mm}$にしたいとき\footnote{ここでは「本文の領域以外」を +余白と定義します。すなわち、ヘッダとフッタは余白の一部です。}、 +まず「\TeX の1インチ」を +削除してから\verb+\oddsidemargin+や\verb+\topmargin+を変更すると、 +「見かけ上は」期待どおりの結果になることがあります。 +\begin{verbatim} + \setlength{\hoffset}{-1in}% <== NG + \setlength{\voffset}{-1in}% <== NG + \setlength{\oddsidemargin}{25mm} + \setlength{\topmargin}{30mm} + \setlength{\textwidth}{\paperwidth} + \addtolength{\textwidth}{-2\oddsidemargin} + \setlength{\textheight}{\paperheight} + \addtolength{\textheight}{-2\topmargin} + \addtolength{\topmargin}{-\headheight} + \addtolength{\topmargin}{-\headsep} +\end{verbatim} +しかし、この設定では\textsf{gentombow}パッケージがトンボを +追加するとき、正しい余白を維持することができません。 + +一方、\verb+\hoffset+や\verb+\voffset+は$0$のままで、以下のように +\verb+\oddsidemargin+や\verb+\topmargin+を設定していれば問題ありません。 +\begin{verbatim} + \setlength{\oddsidemargin}{-0.4mm}% 25mm = 1inch - 0.4mm + \setlength{\topmargin}{4.6mm}% 30mm = 1inch + 4.6mm + \setlength{\textwidth}{\paperwidth} + \addtolength{\textwidth}{-50mm} + \addtolength{\topmargin}{-\headheight} + \addtolength{\topmargin}{-\headsep} + \setlength{\textheight}{\paperheight} + \addtolength{\textheight}{-60mm} +\end{verbatim} +これと同等のレイアウト設定は、以下のように\textsf{geometry}パッケージで +行うのが簡単です。 +\begin{verbatim} + \usepackage[lmargin=25mm,rmargin=25mm, + tmargin=30mm,bmargin=30mm]{geometry} +\end{verbatim} +\end{dangerous} + +なお、\textsf{geometry}パッケージは用紙サイズ +(\verb+\paperwidth+, \verb+\paperheight+)を変更する場合もあります。 +こうした場合に備え、\textsf{gentombow}パッケージは +\textsf{geometry}パッケージよりも後に読み込むようにしてください。 + +\section*{雑記} + +発端はこの話です。 +\begin{itemize} +\item 齋藤修三郎 (@psi\_tau) on Twitter, 2017年2月9日\\ + \texttt{https://twitter.com/psi\_tau/status/829873082911248386} +\end{itemize} + +また、現在検討中の事項を挙げておきます。 +\begin{itemize} +\item 現状では、用紙の横長・縦長がそのまま出力に反映されるので、 + これを逆転させるオプションの実装。また、任意の出力サイズを + 指定できるインタフェースの実現。 +\item 自動で決定できる出力サイズの拡張。現状では用紙サイズが + 定義値に完全一致する場合のみ自動決定されるが、中間のサイズでも + その一回り大きなサイズに出力したい場合があるのではないか。 +\item 出版用途ではカラー印刷の場合に、CMYKの版ごとにトンボを作る + 必要がある。\textsf{color}パッケージが利用可能な場合に、 + オプション次第でCKなど必要な色を選べるようにするとよい + のではないか\footnote{ただし作者の本業は出版ではないので、 + 商用を含む実用には程遠いかもしれない。}。 +\item $\verb+\mag+ \ne 1000$の場合について、\textsf{jsclasses}以外での + 動作は未確認。特に、\textsf{geometry}とは共存しない可能性が高い。 +\item \verb+\stockwidth+/\verb+\stockheight+が + \verb+\paperwidth+/\verb+\paperheight+より小さい場合の動作。 + 現在は警告を出すだけとしているが、さらに天地左右1inに + フォールバックしたほうが無難だろうか。 +\end{itemize} + +\section*{変更履歴} + +\begin{itemize} + \item 2017/02/10 v0.1 最初の公開版(\textsf{pxgentombow}として) + \item 2017/03/01 v0.4 トンボ形式の修正など + \item 2017/05/05 v0.5 \textsf{jsclasses}の$\verb+\mag+ \ne 1000$に対応、 + 最初のCTANリリース版 + \item 2017/05/06 v0.6 \textsf{jsclasses}との共存時のチェック強化、 + Lua\TeX-jaでの動作確認 + \item 2017/07/23 v0.7 ドキュメント更新 + \item 2017/12/17 v0.9 \textsf{gentombow}パッケージの新設 + \item 2018/03/16 v0.9e クラスオプションの\verb+tombow+等の引き継ぎ、 + トンボ書式のカスタマイズ機能の追加 + (\verb+\settombowbanner+, + \verb+\settombowbannerfont+, + \verb+\settombowwidth+の各命令) + \item 2018/05/17 v0.9g \textsf{gentombow}に\textsf{pxgentombow}を統合、 + \verb+pdfbox+オプションの追加、 + \verb+\settombowbleed+, \verb+\settombowcolor+の追加 + \item 2018/08/20 v0.9h 用紙サイズ検出に\texttt{hagaki}を追加、 + \textsf{pdfpages}対策の改良 + \item 2018/08/30 v0.9j \textsf{jsclasses}の$\verb+\mag+ \ne 1000$でも + \verb+pdfbox+オプションが正常動作するように改良、 + \verb+\settombowbleed+が\verb+/TrimBox+に反映されな + かったバグの修正 + \item 2019/07/21 v0.9k \textsf{pdfx}パッケージとの整合性をとる改良 + \item 2020/10/14 v0.9l \textsf{plautopatch}からトンボ対策パッチを取り込み +\end{itemize} + +\end{document} diff --git a/macros/latex/contrib/gentombow/gentombow.pdf b/macros/latex/contrib/gentombow/gentombow.pdf new file mode 100644 index 0000000000..178bab4c52 Binary files /dev/null and b/macros/latex/contrib/gentombow/gentombow.pdf differ diff --git a/macros/latex/contrib/gentombow/gentombow.sty b/macros/latex/contrib/gentombow/gentombow.sty new file mode 100644 index 0000000000..bcd8093f50 --- /dev/null +++ b/macros/latex/contrib/gentombow/gentombow.sty @@ -0,0 +1,747 @@ +% +% gentombow.sty +% written by Hironobu Yamashita (@aminophen) +% +% This package is part of the gentombow bundle. +% https://github.com/aminophen/gentombow +% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{gentombow} + [2020/10/14 v0.9l Generate crop mark 'tombow'] +\def\pxgtmb@pkgname{gentombow} +\@namedef{ver@pxgentombow.sty}{}% fake + +%% error status +\chardef\pxgtmb@errlevel=\z@ + +%% supported engines +% case 2: pdfLaTeX etc. +% case 1: pLaTeX2e <2018-04-01>+2 or older +% case 0: pLaTeX2e <2018-05-20> or newer +% --- checked plcore.ltx in platex 2020/09/28 v1.3g +\ifx\pfmtname\@undefined + \@ifpackageloaded{luatexja}{}{\chardef\pxgtmb@errlevel=\tw@} +\fi +\ifnum\pxgtmb@errlevel<\tw@ + \ifx\@tombowreset@@paper\@undefined + \chardef\pxgtmb@errlevel=\@ne + \fi +\fi +\ifcase\pxgtmb@errlevel + \let\pxgtmb@sel@twoone\@gobble + \let\pxgtmb@sel@two@one\@gobbletwo + \let\pxgtmb@sel@two\@gobble +\or + \let\pxgtmb@sel@twoone\@firstofone + \let\pxgtmb@sel@two@one\@secondoftwo + \let\pxgtmb@sel@two\@gobble +\or + \let\pxgtmb@sel@twoone\@firstofone + \let\pxgtmb@sel@two@one\@firstoftwo + \let\pxgtmb@sel@two\@firstofone +\else + \PackageError{\pxgtmb@pkgname}{% + This cannot happen! + Please report to package author}\@ehc + \expandafter\endinput +\fi +\@onlypreamble\pxgtmb@sel@twoone +\@onlypreamble\pxgtmb@sel@two@one +\@onlypreamble\pxgtmb@sel@two + +%%%%% EMULATION BEGIN + +% required for patching \@outputpage +\pxgtmb@sel@twoone{\RequirePackage{etoolbox}} + +% patch \@outputpage +\begingroup +\def\pxgtmb@emu@status{0} +\let\pxgtmb@emu@outputpage\@outputpage +\pxgtmb@sel@two@one +{%% case 2 begin + \patchcmd\pxgtmb@emu@outputpage % try first patch + {\reset@font\normalsize\normalsfcodes}% + {\@tombowreset@@paper + \reset@font\normalsize\normalsfcodes}% + {}{\def\pxgtmb@emu@status{1}} + \patchcmd\pxgtmb@emu@outputpage % try second patch + {\@begindvi \vskip \topmargin}% + {\@begindvi \@outputtombow \vskip \@@topmargin}% + {}{\def\pxgtmb@emu@status{1}} +}%% case 2 end +{%% case 1 begin + \patchcmd\pxgtmb@emu@outputpage % try patch + {% + \@@topmargin\topmargin + \iftombow + \@@paperwidth\paperwidth \advance\@@paperwidth 6mm\relax + \@@paperheight\paperheight \advance\@@paperheight 16mm\relax + \advance\@@topmargin 1in\relax \advance\@themargin 1in\relax + \fi + \reset@font\normalsize\normalsfcodes} + {\@tombowreset@@paper + \reset@font\normalsize\normalsfcodes}% + {}{\def\pxgtmb@emu@status{1}} +}%% case 1 end +% commit the change only when successful; otherwise +% tombow feature is never enabled, exit right away +\pxgtmb@sel@twoone +{%% case 2 and 1 begin + \if 0\pxgtmb@emu@status\relax + \global\let\@outputpage\pxgtmb@emu@outputpage + \else + \PackageError{\pxgtmb@pkgname}{% + Failed in patching \string\@outputpage!\MessageBreak + Sorry, I can't proceed anymore...}\@ehc + \expandafter\expandafter\expandafter\endinput\expandafter + \fi +}%% case 2 and 1 end +\endgroup +% + +% provides equivalent for plcore.ltx +\pxgtmb@sel@two +{%% case 2 begin +\newif\iftombow \tombowfalse +\newif\iftombowdate \tombowdatetrue +\newdimen\@tombowwidth +\setlength{\@tombowwidth}{.1\p@} +}%% case 2 end +\pxgtmb@sel@twoone +{%% case 2 and 1 begin +\setlength{\@tombowwidth}{.1\p@} +\def\@tombowbleed{3mm} +\def\@tombowcolor{\normalcolor} +}%% case 2 and 1 end +\pxgtmb@sel@two +{%% case 2 begin +\newbox\@TL\newbox\@Tl +\newbox\@TC +\newbox\@TR\newbox\@Tr +\newbox\@BL\newbox\@Bl +\newbox\@BC +\newbox\@BR\newbox\@Br +\newbox\@CL +\newbox\@CR +\font\@bannerfont=cmtt9 +\newtoks\@bannertoken +\@bannertoken{} +}%% case 2 end +\pxgtmb@sel@twoone +{%% case 2 and 1 begin +\def\maketombowbox{% hide \yoko from all boxes + \setbox\@TL\hbox to\z@{\csname yoko\endcsname\hss + \vrule width\dimexpr 10mm+\@tombowbleed\relax height\@tombowwidth depth\z@ + \vrule height10mm width\@tombowwidth depth\z@ + \iftombowdate + \raise4pt\hbox to\z@{\hskip5mm\@bannerfont\the\@bannertoken\hss}% + \fi}% + \setbox\@Tl\hbox to\z@{\csname yoko\endcsname\hss + \vrule width10mm height\@tombowwidth depth\z@ + \vrule height\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth depth\z@}% + \setbox\@TC\hbox{\csname yoko\endcsname + \vrule width10mm height\@tombowwidth depth\z@ + \vrule height10mm width\@tombowwidth depth\z@ + \vrule width10mm height\@tombowwidth depth\z@}% + \setbox\@TR\hbox to\z@{\csname yoko\endcsname + \vrule height10mm width\@tombowwidth depth\z@ + \vrule width\dimexpr 10mm+\@tombowbleed\relax height\@tombowwidth depth\z@\hss}% + \setbox\@Tr\hbox to\z@{\csname yoko\endcsname + \vrule height\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth depth\z@ + \vrule width10mm height\@tombowwidth depth\z@\hss}% + \setbox\@BL\hbox to\z@{\csname yoko\endcsname\hss + \vrule width\dimexpr 10mm+\@tombowbleed\relax depth\@tombowwidth height\z@ + \vrule depth10mm width\@tombowwidth height\z@}% + \setbox\@Bl\hbox to\z@{\csname yoko\endcsname\hss + \vrule width10mm depth\@tombowwidth height\z@ + \vrule depth\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth height\z@}% + \setbox\@BC\hbox{\csname yoko\endcsname + \vrule width10mm depth\@tombowwidth height\z@ + \vrule depth10mm width\@tombowwidth height\z@ + \vrule width10mm depth\@tombowwidth height\z@}% + \setbox\@BR\hbox to\z@{\csname yoko\endcsname + \vrule depth10mm width\@tombowwidth height\z@ + \vrule width\dimexpr 10mm+\@tombowbleed\relax depth\@tombowwidth height\z@\hss}% + \setbox\@Br\hbox to\z@{\csname yoko\endcsname + \vrule depth\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth height\z@ + \vrule width10mm depth\@tombowwidth height\z@\hss}% + \setbox\@CL\hbox to\z@{\csname yoko\endcsname\hss + \vrule width10mm height.5\@tombowwidth depth.5\@tombowwidth + \vrule height10mm depth10mm width\@tombowwidth}% + \setbox\@CR\hbox to\z@{\csname yoko\endcsname + \vrule height10mm depth10mm width\@tombowwidth + \vrule height.5\@tombowwidth depth.5\@tombowwidth width10mm\hss}% +} +\def\@outputtombow{% + \iftombow + \vbox to\z@{\kern-\dimexpr 10mm+\@tombowbleed\relax\relax + \boxmaxdepth\maxdimen + \moveleft\@tombowbleed \vbox to\@@paperheight{% + \color@begingroup + \@tombowcolor + \hbox to\@@paperwidth{\hskip\@tombowbleed\relax + \copy\@TL\hfill\copy\@TC\hfill\copy\@TR\hskip\@tombowbleed}% + \kern-10mm + \hbox to\@@paperwidth{\copy\@Tl\hfill\copy\@Tr}% + \vfill + \hbox to\@@paperwidth{\copy\@CL\hfill\copy\@CR}% + \vfill + \hbox to\@@paperwidth{\copy\@Bl\hfill\copy\@Br}% + \kern-10mm + \hbox to\@@paperwidth{\hskip\@tombowbleed\relax + \copy\@BL\hfill\copy\@BC\hfill\copy\@BR\hskip\@tombowbleed}% + \color@endgroup + }\vss + }% + \fi +} +}%% case 2 and 1 end +\pxgtmb@sel@two +{%% case 2 begin +\newdimen\@@paperheight +\newdimen\@@paperwidth +\newdimen\@@topmargin +}%% case 2 end +\pxgtmb@sel@twoone +{%% case 2 and 1 begin +\def\@tombowreset@@paper{% + \@@topmargin\topmargin + \iftombow + \@@paperwidth\paperwidth + \advance\@@paperwidth 2\dimexpr\@tombowbleed\relax + \@@paperheight\paperheight \advance\@@paperheight 10mm\relax + \advance\@@paperheight 2\dimexpr\@tombowbleed\relax + \advance\@@topmargin 1in\relax \advance\@themargin 1in\relax + \fi +} +}%% case 2 and 1 end +\pxgtmb@sel@two +{%% case 2 begin +\newcount\hour +\newcount\minute +}%% case 2 end + +%%%%% EMULATION END + +%% import from jsclasses +\hour\time \divide\hour by 60\relax +\@tempcnta\hour \multiply\@tempcnta 60\relax +\minute\time \advance\minute-\@tempcnta + +\ifnum\mag=\@m\else + % if BXjscls is detected and \mag != 1000, + % the layout will be definitely broken + \ifx\bxjs@param@mag\@undefined\else + \PackageError{\pxgtmb@pkgname}{% + It seems you are using Japanese `BXjscls'\MessageBreak + (bxjsarticle, bxjsbook, bxjsreport, etc.) or\MessageBreak + some derived class. Try adding `nomag' or\MessageBreak + `nomag*' to the class option list}\@ehc + \fi + % if \mag != 1000 and \inv@mag is defined, assume jsclasses-style \mag employment + \ifx\inv@mag\@undefined\else + % \pxgtmb@magscale is almost equivalent to \jsc@magscale (introduced around 2016) + % but defined only when \mag is actually employed + \begingroup + % calculation code borrowed from BXjscls + \@tempcnta=\mag + \advance\@tempcnta100000\relax + \def\pxgtmb@tempa#1#2#3#4\@nil{\@tempdima=#2#3.#4\p@} + \expandafter\pxgtmb@tempa\the\@tempcnta\@nil + \xdef\pxgtmb@magscale{\strip@pt\@tempdima} + \endgroup + \fi +\fi + +%% this package will use tombo feature in pLaTeX kernel +% if tombow-related option is not included in class option list, +% show info and enable it now +\iftombow\else + % if jsclasses is detected and \mag != 1000, it's too late + % -- When a size option other than `10pt' is specified, + % jsclasses uses \mag and calculates \oddsidemargin and \topmargin + % differently, depending on tombow status. + % In order to force `jsclasses' to calculate correctly, + % `tombow' or `tombo' is required as a class option. + % ... or, you may add `nomag' or `nomag*' instead. + \ifx\pxgtmb@magscale\@undefined\else + \PackageError{\pxgtmb@pkgname}{% + It seems you are using Japanese `jsclasses'\MessageBreak + (jsarticle, jsbook, jsreport, etc.) or some\MessageBreak + derived class. Please add `tombow' or `tombo'\MessageBreak + to the class option list}\@ehc + \fi + % BXjscls is already checked above, no check here + \PackageInfo\pxgtmb@pkgname{tombow feature enabled by \pxgtmb@pkgname} +\fi +\tombowtrue %\tombowdatetrue %% enabled by tombowbanner option +\setlength{\@tombowwidth}{.1\p@}% + +%% import from jsclasses +\@bannertoken{% + \jobname\space(\number\year-\two@digits\month-\two@digits\day + \space\two@digits\hour:\two@digits\minute)} + +%% prepare dimension +\ifx\stockwidth\@undefined \newdimen\stockwidth \fi +\ifx\stockheight\@undefined \newdimen\stockheight \fi + +%% prepare flag +\newif\ifpxgtmb@switch \pxgtmb@switchfalse +\newif\ifpxgtmb@landscape \pxgtmb@landscapefalse +\newif\ifpxgtmb@pdfx@x \pxgtmb@pdfx@xfalse + +%% passed from class options +%% should be declared first inside this package (least priority) +\DeclareOption{tombow}{\tombowdatetrue} +\DeclareOption{tombo}{\tombowdatefalse} +\DeclareOption{mentuke}{\tombowdatefalse \setlength{\@tombowwidth}{\z@}} + +%% package options part 1 +\DeclareOption{tombowbanner}{\tombowdatetrue} +\DeclareOption{notombowbanner}{\tombowdatefalse} +\DeclareOption{tombowdate}{% obsolete since v0.9c (2018/01/11) + \PackageWarning{\pxgtmb@pkgname}{% + Option `tombowdate' is renamed;\MessageBreak + use `tombowbanner' instead}% + \tombowdatetrue} +\DeclareOption{notombowdate}{% obsolete since v0.9c (2018/01/11) + \PackageWarning{\pxgtmb@pkgname}{% + Option `notombowdate' is renamed;\MessageBreak + use `notombowbanner' instead}% + \tombowdatefalse} + +%% register a list of candidate papersize +% * \pxgtmb@addpapersize[]{}{}{} +% used for declaration of papersize. +% when no option is specified (that is, \ifpxgtmb@switch = \iffalse), +% also used for automatic stocksize determination. +% * if = \@empty, the next is assumed. +% * if = n, stocksize is set to papersize + 2in. +\def\pxgtmb@addpapersize{\@ifnextchar[{\pxgtmb@addp@persize}{\pxgtmb@addp@persize[\@empty]}} +\def\pxgtmb@addp@persize[#1]#2#3#4{% + % get current papersize and search through known standard in ascending order + \ifx\pxgtmb@guessedtombow\@empty + \ifx\pxgtmb@guessedpaper\@empty + % shorter edge -> \@tempdima, longer edge -> \@tempdimb + \ifdim\paperwidth>\paperheight\relax + \pxgtmb@landscapetrue + \@tempdima\paperheight \@tempdimb\paperwidth + \else + \pxgtmb@landscapefalse + \@tempdima\paperwidth \@tempdimb\paperheight + \fi + % \@ovri and \@ovro are used temporarily (safe enough) + \@ovri=#3\relax + \@ovro=#4\relax + % when jsclasses-style \mag employment is assumed ... + \ifx\pxgtmb@magscale\@undefined\else + \@ovri=\inv@mag\@ovri\relax + \@ovro=\inv@mag\@ovro\relax + \fi + % compare + \ifdim\@tempdima=\@ovri\relax \ifdim\@tempdimb=\@ovro\relax + \def\pxgtmb@guessedpaper{#2}% + \ifx#1\@empty\else + \def\pxgtmb@guessedtombow{#1}% + \if n\pxgtmb@guessedtombow\else + \ExecuteOptions{tombow-#1}% package defaults to tombowdatetrue + \pxgtmb@switchfalse + \fi + \fi + \fi \fi + \else + \def\pxgtmb@guessedtombow{#2}% save for console message + \pxgtmb@setstock{#3}{#4}% set stockwidth/height + \fi\fi + \DeclareOption{tombow-#2}{% + \pxgtmb@switchtrue + \tombowdatetrue + \pxgtmb@setstock{#3}{#4}% + }% + \DeclareOption{tombo-#2}{% + \pxgtmb@switchtrue + \tombowdatefalse + \pxgtmb@setstock{#3}{#4}% + }% + \DeclareOption{mentuke-#2}{% + \pxgtmb@switchtrue + \tombowdatefalse + \setlength{\@tombowwidth}{\z@}% + \pxgtmb@setstock{#3}{#4}% + }% +} +\def\pxgtmb@setstock#1#2{% + \ifpxgtmb@landscape + \setlength\stockwidth{#2}% + \setlength\stockheight{#1}% + \else + \setlength\stockwidth{#1}% + \setlength\stockheight{#2}% + \fi + % when jsclasses-style \mag employment is assumed ... + \ifx\pxgtmb@magscale\@undefined\else + \stockwidth=\inv@mag\stockwidth\relax + \stockheight=\inv@mag\stockheight\relax + \fi +}% +\@onlypreamble\pxgtmb@addpapersize +\@onlypreamble\pxgtmb@addp@persize +\@onlypreamble\pxgtmb@setstock + +%% initialize before search +\def\pxgtmb@guessedpaper{} +\def\pxgtmb@guessedtombow{} +\@onlypreamble\pxgtmb@guessedpaper +\@onlypreamble\pxgtmb@guessedtombow + +%% package options part 2 +% ISO A series <=> JIS B series in the ascending order +\pxgtmb@addpapersize{a10}{26mm}{37mm} +\pxgtmb@addpapersize{b10}{32mm}{45mm} +\pxgtmb@addpapersize{a9}{37mm}{52mm} +\pxgtmb@addpapersize{b9}{45mm}{64mm} +\pxgtmb@addpapersize{a8}{52mm}{74mm} +\pxgtmb@addpapersize{b8}{64mm}{91mm} +\pxgtmb@addpapersize{a7}{74mm}{105mm} +\pxgtmb@addpapersize{b7}{91mm}{128mm} +\pxgtmb@addpapersize{a6}{105mm}{148mm} +\pxgtmb@addpapersize{b6}{128mm}{182mm} +\pxgtmb@addpapersize{a5}{148mm}{210mm} +\pxgtmb@addpapersize{b5}{182mm}{257mm} +\pxgtmb@addpapersize{a4}{210mm}{297mm} +\pxgtmb@addpapersize{b4}{257mm}{364mm} +\pxgtmb@addpapersize{a3}{297mm}{420mm} +\pxgtmb@addpapersize{b3}{364mm}{515mm} +\pxgtmb@addpapersize{a2}{420mm}{594mm} +\pxgtmb@addpapersize{b2}{515mm}{728mm} +\pxgtmb@addpapersize{a1}{594mm}{841mm} +\pxgtmb@addpapersize{b1}{728mm}{1030mm} +\pxgtmb@addpapersize[n]{a0}{841mm}{1189mm} +\pxgtmb@addpapersize[n]{b0}{1030mm}{1456mm} + +%% package options part 3 +% ISO C series +\pxgtmb@addpapersize[a9]{c10}{28mm}{40mm} +\pxgtmb@addpapersize[a8]{c9}{40mm}{57mm} +\pxgtmb@addpapersize[a7]{c8}{57mm}{81mm} +\pxgtmb@addpapersize[a6]{c7}{81mm}{114mm} +\pxgtmb@addpapersize[a5]{c6}{114mm}{162mm} +\pxgtmb@addpapersize[a4]{c5}{162mm}{229mm} +\pxgtmb@addpapersize[a3]{c4}{229mm}{354mm} +\pxgtmb@addpapersize[a2]{c3}{324mm}{458mm} +\pxgtmb@addpapersize[a1]{c2}{458mm}{648mm} +\pxgtmb@addpapersize[a0]{c1}{648mm}{917mm} +\pxgtmb@addpapersize[n]{c0}{917mm}{1297mm} +% misc +\pxgtmb@addpapersize[b4]{a4j}{210mm}{297mm} +\pxgtmb@addpapersize[b5]{a5j}{148mm}{210mm} +\pxgtmb@addpapersize[a3]{b4j}{257mm}{364mm} +\pxgtmb@addpapersize[a4]{b5j}{182mm}{257mm} +\pxgtmb@addpapersize[b4]{a4var}{210mm}{283mm} +\pxgtmb@addpapersize[a4]{b5var}{182mm}{230mm} +\pxgtmb@addpapersize[a3]{letter}{8.5in}{11in} +\pxgtmb@addpapersize[a3]{legal}{8.5in}{14in} +\pxgtmb@addpapersize[a4]{executive}{7.25in}{10.5in} +\pxgtmb@addpapersize[a5]{hagaki}{100mm}{148mm} + +%% package options part 4 +\def\pxgtmb@pdfbox@status{0} +\DeclareOption{pdfbox}{\def\pxgtmb@pdfbox@status{1}} +\DeclareOption{dvips}{\def\pxgtmb@driver{s}} +\DeclareOption{dvipdfmx}{\def\pxgtmb@driver{m}} +\DeclareOption{xetex}{\def\pxgtmb@driver{x}} +\DeclareOption{pdftex}{\def\pxgtmb@driver{p}} +\DeclareOption{luatex}{\def\pxgtmb@driver{l}} + +%% default options +\ExecuteOptions{tombowbanner}% package defaults to tombowdatetrue +\ProcessOptions + +%% display search result +% if any of explicit size option is specified, \ifpxgtmb@switch = \iftrue. +% otherwise, automatic size detection should be successful. +\ifpxgtmb@switch\else + % check status + \@tempcnta=\z@\relax + \ifx\pxgtmb@guessedpaper\@empty + \advance\@tempcnta\@ne\relax + \fi + \ifx\pxgtmb@guessedtombow\@empty + \advance\@tempcnta\tw@\relax + \else\if n\pxgtmb@guessedtombow + \advance\@tempcnta\tw@\relax + \fi\fi + % message + \ifodd\@tempcnta + %\PackageWarningNoLine\pxgtmb@pkgname{% + % No size option specified, and automatic papersize\MessageBreak + % detection also failed} + \else + \typeout{***** Package \pxgtmb@pkgname\space detected \pxgtmb@guessedpaper paper. *****} + \fi + \ifnum\@tempcnta>\@ne\relax + \PackageWarningNoLine\pxgtmb@pkgname{% + Output size cannot be determined. Please add size\MessageBreak + option (e.g. `tombow-a4') to specify output size.\MessageBreak + Falling back to +1in ..} + \stockwidth\paperwidth \advance\stockwidth 2in + \stockheight\paperheight \advance\stockheight 2in + \else + \typeout{***** Now the output size is automatically set to \pxgtmb@guessedtombow. *****} + \fi +\fi + +%% warnings +\ifdim\stockwidth<\paperwidth + \PackageWarningNoLine\pxgtmb@pkgname{% + \string\stockwidth\space is smaller than \string\paperwidth!\MessageBreak + Is this really what you want?} +\fi +\ifdim\stockheight<\paperheight + \PackageWarningNoLine\pxgtmb@pkgname{% + \string\stockheight\space is smaller than \string\paperheight!\MessageBreak + Is this really what you want?} +\fi + +%% pdf "digital tombo" (driver-dependent) +% the box size calculation is delayed until \AtBeginDocument +% to allow users to change \@tombowbleed in the preamble + +% convert pt -> bp +\def\pxgtmb@PDF@setbp#1#2{% + \@tempdima=.996264#2\relax % 0.996264 = 72/72.27 (cf. 1in = 72.27pt = 72bp) + \@tempdima=\pxgtmb@magscale\@tempdima % adjustment for jsclasses-style \mag employment + \edef#1{\strip@pt\@tempdima}} +% calculate and create pdf boxes +\def\pxgtmb@PDF@calcbox{% + \begingroup + % provide fallback definition inside this group + \ifx\pxgtmb@magscale\@undefined + \def\pxgtmb@magscale{1}% + \fi + % set pdf boxes in bp unit + \pxgtmb@PDF@setbp\pxgtmb@PDF@crop@ur@x\stockwidth + \pxgtmb@PDF@setbp\pxgtmb@PDF@crop@ur@y\stockheight + \pxgtmb@PDF@setbp\pxgtmb@PDF@trim@ll@x{\dimexpr(\stockwidth-\paperwidth)/2}% + \pxgtmb@PDF@setbp\pxgtmb@PDF@trim@ll@y{\dimexpr(\stockheight-\paperheight)/2}% + \pxgtmb@PDF@setbp\pxgtmb@PDF@trim@ur@x{\dimexpr(\stockwidth+\paperwidth)/2}% + \pxgtmb@PDF@setbp\pxgtmb@PDF@trim@ur@y{\dimexpr(\stockheight+\paperheight)/2}% + \pxgtmb@PDF@setbp\pxgtmb@PDF@bleed@ll@x{\dimexpr(\stockwidth-\paperwidth)/2-\@tombowbleed}% + \pxgtmb@PDF@setbp\pxgtmb@PDF@bleed@ll@y{\dimexpr(\stockheight-\paperheight)/2-\@tombowbleed}% + \pxgtmb@PDF@setbp\pxgtmb@PDF@bleed@ur@x{\dimexpr(\stockwidth+\paperwidth)/2+\@tombowbleed}% + \pxgtmb@PDF@setbp\pxgtmb@PDF@bleed@ur@y{\dimexpr(\stockheight+\paperheight)/2+\@tombowbleed}% + \xdef\pxgtmb@PDF@CTM{% + %% CropBox: normally implicit (same as MediaBox, large paper size) + %% however, pdfx.sty in PDF/X mode sets /CropBox explicitly, so I need to override it! + \ifpxgtmb@pdfx@x + \noexpand\pxgtmb@PDF@begin + /CropBox [0 0 + \pxgtmb@PDF@crop@ur@x\space + \pxgtmb@PDF@crop@ur@y] \noexpand\pxgtmb@PDF@end + \fi + %% BleedBox: explicit (final paper size + surrounding \@tombowbleed) + \noexpand\pxgtmb@PDF@begin + /BleedBox [\pxgtmb@PDF@bleed@ll@x\space + \pxgtmb@PDF@bleed@ll@y\space + \pxgtmb@PDF@bleed@ur@x\space + \pxgtmb@PDF@bleed@ur@y] \noexpand\pxgtmb@PDF@end + %% TrimBox: explicit (final paper size) + \noexpand\pxgtmb@PDF@begin + /TrimBox [\pxgtmb@PDF@trim@ll@x\space + \pxgtmb@PDF@trim@ll@y\space + \pxgtmb@PDF@trim@ur@x\space + \pxgtmb@PDF@trim@ur@y] \noexpand\pxgtmb@PDF@end + %% ArtBox: implicit + %% [Note] PDF/X requires /TrimBox or /ArtBox but not both! + }% + \endgroup +} + +% do it +\AtBeginDocument{\pxgtmb@PDF@emit} +\def\pxgtmb@PDF@emit{% + % handle compatibility with pdfx.sty here; + % if pdfx.sty with PDF/X mode detected, force [pdfbox] option! + \pxgtmb@handle@pdfx + \ifpxgtmb@pdfx@x\def\pxgtmb@pdfbox@status{1}\fi + % start actual procedure for [pdfbox] option + \if 1\pxgtmb@pdfbox@status +%% supported drivers: dvips, dvipdfmx, XeTeX, pdfTeX, LuaTeX +\ifnum0\ifx\pdfvariable\@undefined\else\the\outputmode\fi=0\relax +\ifnum0\ifx\pdfpageattr\@undefined\else\the\pdfoutput\fi=0\relax + %% for DVI output or XeTeX + \ifx\XeTeXversion\@undefined + \chardef\pxgtmb@errlevel=\z@ + % check graphics/graphicx/color status + \ifx\Gin@driver\@undefined + \ifx\pxgtmb@driver\@undefined % driver option unavailable + \PackageError{\pxgtmb@pkgname}{% + Option `pdfbox' is driver-dependent!\MessageBreak + Please add a driver option}\@ehc + \def\pxgtmb@driver{s}% fallback + \fi + \else + % check consistency + \def\pxgtmb@tempa{dvips.def}\ifx\Gin@driver\pxgtmb@tempa + \ifx\pxgtmb@driver\@undefined + \def\pxgtmb@driver{s}% pass + \else + \if s\pxgtmb@driver\else \chardef\pxgtmb@errlevel=\@ne \fi + \fi + \else\def\pxgtmb@tempa{dvipdfmx.def}\ifx\Gin@driver\pxgtmb@tempa + \ifx\pxgtmb@driver\@undefined + \def\pxgtmb@driver{m}% pass + \else + \if m\pxgtmb@driver\else \chardef\pxgtmb@errlevel=\@ne \fi + \fi + \else + \ifx\pxgtmb@driver\@undefined + \PackageError{\pxgtmb@pkgname}{% + Option `pdfbox' is driver-dependent!\MessageBreak + Please add a driver option}\@ehc + \def\pxgtmb@driver{s}% fallback + \fi + \fi\fi + \ifnum\pxgtmb@errlevel>\z@ + \PackageWarningNoLine{\pxgtmb@pkgname}{% + Inconsistent driver option detected!\MessageBreak + Package `graphics' or `color' already\MessageBreak + loaded with different driver option}\@ehc + \fi + \fi + \else + \def\pxgtmb@driver{x} + \fi + % required for putting \special to every page + \RequirePackage{atbegshi} + \ifx\pfmtname\@undefined\else + \ifx\AtBegShi@Output\@undefined + % LaTeX2e 2020-10-01: an emulation by ``atbegshi-ltx.sty'' + % => pLaTeX2e 2020-10-01 natively supports it + \else + % older: the real ``atbegshi.sty'' is loaded + \IfFileExists{pxatbegshi.sty}{\RequirePackage{pxatbegshi}}{} + \fi + \fi + % do it + \if x\pxgtmb@driver + %% for XeTeX (similar to dvipdfmx, except for paper size) + \AtBeginDocument{% + \pxgtmb@PDF@calcbox + \def\pxgtmb@PDF@begin{}\def\pxgtmb@PDF@end{}% + \edef\pxgtmb@PDF@CTM{{pdf:put @thispage << \pxgtmb@PDF@CTM >>}}} + % force paper size + \pdfpagewidth\stockwidth \pdfpageheight\stockheight + % emit pdf boxes + \AtBeginShipout{\setbox\AtBeginShipoutBox=\vbox{% + \baselineskip\z@skip\lineskip\z@skip\lineskiplimit\z@ + \expandafter\special\pxgtmb@PDF@CTM % here! + \copy\AtBeginShipoutBox}} + \else + \if s\pxgtmb@driver + %% for dvips + \AtBeginDocument{% + \pxgtmb@PDF@calcbox + \def\pxgtmb@PDF@begin{[ }\def\pxgtmb@PDF@end{/PAGE pdfmark }% + \edef\pxgtmb@PDF@CTM{{ps:SDict begin \pxgtmb@PDF@CTM end}}} + \else\if m\pxgtmb@driver + %% for dvipdfmx + \AtBeginDocument{% + \pxgtmb@PDF@calcbox + \def\pxgtmb@PDF@begin{}\def\pxgtmb@PDF@end{}% + \edef\pxgtmb@PDF@CTM{{pdf:put @thispage << \pxgtmb@PDF@CTM >>}}} + \else + %% for others (in case graphics option wrong) + \PackageError{\pxgtmb@pkgname}{Sorry, driver unsupported}\@ehc + \def\pxgtmb@PDF@CTM{{}}% dummy + \fi\fi + %% common + \begingroup + % when jsclasses-style \mag employment is assumed ... + % [Note] \special{papersize=,} accepts only non-true units + % and evaluates them as if they were true units! + \ifx\pxgtmb@magscale\@undefined\else + \stockwidth \pxgtmb@magscale\stockwidth + \stockheight\pxgtmb@magscale\stockheight + \fi + \xdef\pxgtmb@PDF@size{{papersize=\the\stockwidth,\the\stockheight}} + \endgroup + \AtBeginShipout{\setbox\AtBeginShipoutBox=\vbox{% + \baselineskip\z@skip\lineskip\z@skip\lineskiplimit\z@ + % force paper size + \expandafter\special\pxgtmb@PDF@size + % emit pdf boxes + \expandafter\special\pxgtmb@PDF@CTM % here! + \copy\AtBeginShipoutBox}} + \fi +\else + %% for pdfTeX + \def\pxgtmb@driver{p} + % force paper size + \pdfpagewidth\stockwidth \pdfpageheight\stockheight + % emit pdf boxes + \AtBeginDocument{% + \pxgtmb@PDF@calcbox + \def\pxgtmb@PDF@begin{}\def\pxgtmb@PDF@end{}% + \edef\pxgtmb@PDF@CTM{{\pxgtmb@PDF@CTM}}% + \expandafter\pdfpageattr\pxgtmb@PDF@CTM} +\fi\else + %% for LuaTeX + \def\pxgtmb@driver{l} + % force paper size + \pagewidth\stockwidth \pageheight\stockheight + % emit pdf boxes + \AtBeginDocument{% + \pxgtmb@PDF@calcbox + \def\pxgtmb@PDF@begin{}\def\pxgtmb@PDF@end{}% + \edef\pxgtmb@PDF@CTM{pageattr{\pxgtmb@PDF@CTM}}% + \expandafter\pdfvariable\pxgtmb@PDF@CTM} +\fi + \fi +} + +%% make visible tombow box according to the current status of +%% \@bannerfont, \@bannertoken, \@tombowwidth & \@tombowbleed +\maketombowbox + +%% shift amount +\hoffset .5\stockwidth +\advance\hoffset -.5\paperwidth +\advance\hoffset-1truein\relax +\voffset .5\stockheight +\advance\voffset -.5\paperheight +\advance\voffset-1truein\relax + +%% user interface +\newcommand{\settombowbanner}[1]{% + \iftombowdate\else + \PackageWarning{\pxgtmb@pkgname}{% + Package option `tombowbanner' is not effective.\MessageBreak + The banner may be discarded}% + \fi + \@bannertoken{#1}\maketombowbox} +\newcommand{\settombowbannerfont}[1]{% + \font\@bannerfont=#1\relax \maketombowbox} +\newcommand{\settombowwidth}[1]{% + \setlength{\@tombowwidth}{#1}\maketombowbox} +\newcommand{\settombowbleed}[1]{% + \def\@tombowbleed{#1}\maketombowbox} +\newcommand{\settombowcolor}[1]{% + \def\@tombowcolor{#1}} +% forbid changing \@tombowbleed after \begin{document} +% because pdf boxes are calculated only inside \AtBeginDocument +\@onlypreamble\settombowbleed + +%% patch internal of pdfpages.sty to work with tombow +\def\pxgtmb@patch@pdfpages{% + \IfFileExists{pxpdfpages.sty}{\RequirePackage{pxpdfpages}}{}} +\AtBeginDocument{\@ifpackageloaded{pdfpages}{\pxgtmb@patch@pdfpages}{}} + +%% patch pdfx.sty +%% (tested on pdfx 2019/02/27 v1.6.3) +\def\pxgtmb@handle@pdfx{\@ifpackageloaded{pdfx}{\let\ifpxgtmb@pdfx@x\ifpdfx@x}{}} + +\endinput diff --git a/macros/latex/contrib/gentombow/gentombow.tex b/macros/latex/contrib/gentombow/gentombow.tex new file mode 100644 index 0000000000..d0bc4523ab --- /dev/null +++ b/macros/latex/contrib/gentombow/gentombow.tex @@ -0,0 +1,307 @@ +%# -*- ascii characters only -*- + +\documentclass[a4paper]{article} +\usepackage{doc} +\makeatletter +%%% dangerous bend +\font\man=manfnt at 10pt +\def\dbend{\leavevmode\raise0pt\hbox{\man\char'177}} +\newenvironment{dangerous}{% + \ifnum\@listdepth>\z@ + \GenericError{}{Do not use `dangerous' environment inside any list}{}{} + \fi + \par\addvspace\medskipamount + \@tempdima=\dimexpr\textwidth-2zw\relax\small + \divide\@tempdima by\dimexpr1zw\relax\@tempcnta=\@tempdima + \leftskip=\dimexpr\textwidth-\@tempcnta zw\relax + \@totalleftmargin\dimexpr\leftskip+0zw + \linewidth=\dimexpr\@tempcnta zw-0zw + \parindent1zw\noindent\kern-\leftskip\hbox to\leftskip{\dbend\hss}% + \everypar{\everypar{}}\ignorespaces +}{\par\addvspace\medskipamount} +%%% misc +\newcommand{\Meta}[1]{$\langle$\mbox{}\textit{#1}\mbox{}$\rangle$} +%%% +\makeatother +\usepackage{longtable} +\usepackage[pdfbox]{gentombow} +%\usepackage{bxpapersize} +\GetFileInfo{gentombow.sty} +\title{Package \textsf{gentombow} \fileversion} +\author{Hironobu Yamashita} +\date{\filedate} +\begin{document} + +\maketitle + +It is convenient to print documents for final smaller paper sizes +on paper of the printer's standard physical paper size; +it allows printing close to the logical paper edge +and even outside the logical page. + +This package \textsf{gentombow} provides a Japanese-style +crop marks (called `tombow' in Japanese) for trimming paper stacks, +and place the document page at the center of a larger physical +paper sheet. It automatically detects the page size +(\verb+\paperwidth+, \verb+\paperheight+) which is +going to be set by document class. +This document itself is a demonstration of this package, +with final A4 paper printed on B4 (JIS B4; not ISO B4!) paper. + +A basic usage: +\begin{verbatim} + \documentclass[a4paper]{article} + \usepackage{gentombow} + \usepackage{graphicx} + \begin{document} + The content + \end{document} +\end{verbatim} + +Note that this package does nothing about output paper size +specification; use one of the followings to do it. +\begin{itemize} +\item \textsf{graphicx} package + with \texttt{setpagesize} feature added in 2016 + (supports all engines) +\item \textsf{bxpapersize} package + (supports all engines; by Takayuki YATO) +\item \textsf{bounddvi} package + (supports only DVI output mode; part of \textsf{gentombow} bundle) +\end{itemize} + +This package is part of \textsf{gentombow} bundle: +\begin{verbatim} + https://github.com/aminophen/gentombow +\end{verbatim} +Originally it was part of \textsf{platex-tools} bundle, +but it has been moved since March 2018. + +\section{Basic Functions} + +First, I introduce some basic functions of \textsf{gentombow} package. + +\subsection{Automatic Determination of Output Size} + +In this package, +the following printer's standard physical paper sizes are predefined; +A series (\texttt{a0}--\texttt{a10}), +B series (\texttt{b0}--\texttt{b10}), +C series (\texttt{c0}--\texttt{c10}), +\texttt{letter}, \texttt{legal} and \texttt{executive}. +In the current release, `B series' is JIS standard, +not ISO standard (this might be changed in the near future). +Also, some variations \texttt{a4var} and \texttt{b5var} are predefined. + +When one of the above sizes (except \texttt{a0}, \texttt{b0} +and \texttt{c0}) is detected, the output size is +automatically determined along with the following rule: +\begin{itemize} +\item When A series detected: + the output is going to be larger B series +\item When B/C series or + \texttt{letter}, \texttt{legal}, \texttt{executive} detected: + the output is going to be larger A series +\end{itemize} +The crop marks are automatically added. +The orientation (landscape/portrait) of the input paper is +also preserved. + +The following list shows common examples: +\begin{longtable}[c]{cc} + \hline + Detected page size & Output size \\ + \hline + a6 & b6 \\ + b6 & a5 \\ + a5 & b5 \\ + b5 & a4 \\ + a4 & b4 \\ + b4 & a3 \\ + a3 & b3 \\ + b3 & a2 \\ + \hline + c6 & a5 \\ + c5 & a4 \\ + c4 & a3 \\ + c3 & a2 \\ + \hline + letter & a3 \\ + legal & a3 \\ + executive & a4 \\ + \hline +\end{longtable} + +\subsection*{When Automatic Determination Failed} + +When the page size is different from any of the predefined sizes, +the page is placed with the surrounding 1~inch margins. +For example, when the page has $100\,\mathrm{mm}$ width and +$200\,\mathrm{mm}$ height, the output size is going to be +$100\,\mathrm{mm}+2\,\mathrm{in}$ width and +$200\,\mathrm{mm}+2\,\mathrm{in}$ height. + +\subsection{Job Info Printing} + +By default, the crop marks are printed with a banner, which shows +a job info like \makeatletter\texttt{\the\@bannertoken}\makeatother. +The format is similar to \verb+tombow+ option, which is +available in most of the common Japanese classes. +The default also reacts to \verb+tombo+ (without a job info) or +\verb+mentuke+ (do not print actual crop marks) class options. + +\section{Package Options} + +You can specify output size and/or disable job info printing +using package options. + +\subsection{Explicit Specification of Output Size} + +You can also force the output size using package option. +For example, +\begin{verbatim} + \documentclass[a4paper]{article} + \usepackage[tombow-a4]{gentombow} + \begin{document} + The content + \end{document} +\end{verbatim} +forces the output size to be a3 (the automatic determination +`b4' is discarded). Available sizes are the same as +the predefined sizes, that is, +A series (\texttt{a0}--\texttt{a10}), +B series (\texttt{b0}--\texttt{b10}), +C series (\texttt{c0}--\texttt{c10}) and +\texttt{a4var}, \texttt{b5var}, +\texttt{letter}, \texttt{legal}, \texttt{executive}. +The orientation (landscape/portrait) of the input paper is +also preserved again. + +The option format is: +\Meta{crop mark format}\texttt{-}\Meta{output size}. +The crop mark format is one of the following: +\verb+tombow+ (default), \verb+tombo+ (without a job info), +\verb+mentuke+ (do not print actual crop marks). + +\subsection{Disabling Job Info Printing} + +When you specify the output size explicitly, the crop mark format +can be given at the same time, as described previously. +When the output size is automatically determined, you can disable +job info printing by \verb+notombowbanner+ option. + +\section{Customization of Crop Mark} + +The \textsf{pxgentombow} package provides some commands to +customize crop mark format. + +\subsection{Banner content} + +Using \verb+\settombowbanner+, you can set the banner content. +An example using \verb+\pdfcreationdate+ (pdf\TeX\ primitive) +\begin{verbatim} + \documentclass[a4paper]{article} + \usepackage{gentombow} + \settombowbanner{\jobname\space (\pdfcreationdate)} + \begin{document} + The content + \end{document} +\end{verbatim} +will result in +{\settombowbanner{\jobname\space (\pdfcreationdate)}% + \makeatletter\texttt{\the\@bannertoken}\makeatother}. +The argument is an arbitrary token list. + +\subsection{Banner font} + +Using \verb+\settombowbannerfont+, you can change the font +with which the banner is printed. +\begin{verbatim} + \settombowbannerfont{cmss10 at 9pt} +\end{verbatim} +This feature internally calls the \TeX\ primitive \verb+\font+, +and accepts all fonts supported by the engine. When Lua\TeX\ or +Xe\TeX\ is used, a native OpenType font can also be given. + +\subsection{Crop mark line width} + +By default, the line width of crop marks is 0.1~pt. +This can be change to 1~pt by \verb+\settombowwidth{1pt}+. +The argument is an arbitrary dimension. + +\subsection{Bleed margin width} + +By default, the bleed margin width is 3~mm. +This can be change to 5~mm by \verb+\settombowwidth{5mm}+. +The argument is an arbitrary dimension. + +\subsection{Crop mark color} + +Set the color of crop marks. Package \textsf{xcolor} (recommended) or +\textsf{xcolor} is required. +For example, \verb+\settombowcolor{\color[cmyk]{0,1,0,0}}+ sets magenta. + +\section{Setting PDF page box (``digital tombow'')} + +This is an optional driver-dependent feature. +When \textsf{gentombow} is required with the option \verb+pdfbox+, +following page boxes are emitted to the output PDF file. +The paper size (\verb+/MediaBox+) is also corrected. +\begin{itemize} +\item \verb+/TrimBox+: final paper size. +\item \verb+/BleedBox+: paper size plus bleed margin. +\item \verb+/CropBox+ and \verb+/ArtBox+ are not set. +\end{itemize} +Note: if the package \textsf{pdfx} is loaded with PDF/X mode, +this optional feature is automatically enabled. +Also, \verb+/CropBox+ is set explicitly. + +\section{Additional Notes} + +Here is some additional notes for use with several classes/packages. + +\subsection{Note for \textsf{BXjscls} users} + +When using \textsf{BXjscls} (by Takayuki YATO) with size option +other than 10pt, please add \verb+nomag+ or \verb+nomag*+ to the +class option. For example, +\begin{verbatim} + \documentclass[a4paper,14pt]{bxjsarticle} + \usepackage{gentombow} +\end{verbatim} +will not work as expected (\textsf{gentombow} throws an error +for safety). + +\subsection{Note about Layout Settings} + +You should not change \verb+\hoffset+ or \verb+\voffset+ to non-zero +value, for the purpose of layout settings. Such settings will +conflict with the feature of \textsf{gentombow} package. +To set page layout correctly, you should adjust \verb+\oddsidemargin+ +or \verb+\topmargin+, or leave it to \textsf{geometry} package. + +Note: since the package \textsf{geometry} also has a feature to +change the paper size (\verb+\paperwidth+, \verb+\paperheight+), +please load \textsf{gentombow} after \textsf{geometry}. + +\section*{Change History} + +\begin{itemize} + \item 2017/12/17 v0.9 First CTAN release + \item 2018/03/16 v0.9e Add \verb+\settombowbanner+, + \verb+\settombowbannerfont+ and + \verb+\settombowwidth+. + \item 2018/05/17 v0.9g Add \verb+pdfbox+ option, + \verb+\settombowbleed+ and + \verb+\settombowcolor+. + \item 2018/08/20 v0.9h Add \texttt{hagaki} size for paper detection, + improve patches for \textsf{pdfpages}. + \item 2018/08/30 v0.9j Support \textsf{jsclasses}-style \verb+\mag+ employment + also with \verb+pdfbox+ option. + Fix a bug that \verb+\settombowbleed+ is not + considered by \verb+/TrimBox+. + \item 2019/07/21 v0.9k Support \textsf{pdfx} package. + \item 2020/10/14 v0.9l Import tombow-related patches from \textsf{plautopatch}. +\end{itemize} + +\end{document} diff --git a/macros/latex/contrib/gentombow/pxesopic.sty b/macros/latex/contrib/gentombow/pxesopic.sty new file mode 100644 index 0000000000..567b9d0a2d --- /dev/null +++ b/macros/latex/contrib/gentombow/pxesopic.sty @@ -0,0 +1,239 @@ +% +% pxesopic.sty +% written by Hironobu Yamashita (@aminophen) +% +% This package is part of the gentombow bundle. +% https://github.com/aminophen/gentombow +% +% This package is expected to be compatible with +% * eso-pic.sty +% 2015/07/21 v2.0g -- 2020/09/27 v2.0i +% +% -------------------------------------------------------------- +% [Note] +% The package ``pxesopic.sty'' relies heavily on internals +% of ``plautopatch.sty''. +% Also, ``pxesopic.sty'' is incompatible with ``memoir.cls''. +% -------------------------------------------------------------- +% + +%% package declaration +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{pxesopic} + [2020/10/11 v0.4c Patch to eso-pic for tombow] + +%% preparations +\def\pxesop@pkgname{pxesopic} +\def\pxesop@error{\PackageError\pxesop@pkgname} +\def\pxesop@warn{\PackageWarningNoLine\pxesop@pkgname} +\let\pxesop@debug\@gobble +%\def\pxesop@debug#1{\typeout{\pxesop@pkgname: [DEBUG] #1}}% for debug + +\@ifclassloaded{memoir}{% + \pxesop@warn{This package should not be loaded with memoir.cls}}{} + +\@ifpackageloaded{eso-pic}{% + \pxesop@error{% + Package eso-pic is already loaded!\MessageBreak + Load pxesopic earlier}\@ehc +}{} + +%% hooks +\ifx\declare@file@substitution\@undefined + % LaTeX2e 2020-02-02 PL5 or older + \RequirePackage{filehook} + \let\pxesop@ExecuteAfterPackage=\AtEndOfPackageFile + \let\pxesop@ExecuteBeforePackage=\AtBeginOfPackageFile +\else + % LaTeX2e 2020-10-01 or newer + \def\pxesop@ExecuteAfterPackage#1{\AddToHook{package/after/#1}} + \def\pxesop@ExecuteBeforePackage#1{\AddToHook{package/before/#1}} +\fi + +%% the contents of \AtBeginShipout is dependent on \iftombow; +%% delay execution of \AtBeginShipout inside ``eso-pic.sty'' +%% until \AtBeginDocument, to support both (u)pLaTeX kernel +%% and ``gentombow.sty'' +\RequirePackage{atbegshi}% eso-pic requires atbegshi +\ifx\pfmtname\@undefined\else + \ifx\AtBegShi@Output\@undefined + % LaTeX2e 2020-10-01: an emulation by ``atbegshi-ltx.sty'' + % => pLaTeX2e 2020-10-01 natively supports it + \else + % older: the real ``atbegshi.sty'' is loaded + \IfFileExists{pxatbegshi.sty}{\RequirePackage{pxatbegshi}}{} + \fi +\fi +% +\pxesop@ExecuteBeforePackage{eso-pic}{\pxesop@before} +\pxesop@ExecuteAfterPackage{eso-pic}{\pxesop@after} +% +\def\pxesop@before{% + \let\pxesop@AtBeginShipout\AtBeginShipout + \def\AtBeginShipout##1{\def\pxesop@hook{##1}}% hide it + \pxesop@debug{\noexpand\AtBeginShipout disabled}% + \let\pxesop@before\relax +} +\def\pxesop@after{% + \let\AtBeginShipout\pxesop@AtBeginShipout % restore + \let\pxesop@AtBeginShipout\relax + \pxesop@debug{\noexpand\AtBeginShipout restored}% + \let\@unknownoptionerror\relax %% avoid an error + \pxesop@debug{\noexpand\@unknownoptionerror disabled}% + \let\pxesop@after\relax +} +%% + +%% load it; be careful not to cause unknown option error! +\expandafter\ifx\csname @unknownoptionerror\endcsname + \pxesop@error{Failed to save \noexpand\@unknownoptionerror}\@ehc +\fi +\let\pxesop@unknownoptionerror\@unknownoptionerror +% +\chardef\pxesop@status\z@ +\@ifpackageloaded{plautopatch}{% + \expandafter\ifx\csname platpc@begin@eso-pic\endcsname\relax + % ``plautopatch.sty'' is loaded but the macro is \relax + % => means that ``pxesopic.sty'' is automatically loaded + \@ifl@t@r{\fmtversion}{2020/10/01}{% + \chardef\pxesop@status\@ne + }{}% + \fi +}{} +% +%% pass all options to keyval-style ``eso-pic.sty'' +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{eso-pic}} +\ProcessOptions\relax +\RequirePackage{eso-pic} +% +%% ensure internal dimensions added in ``eso-pic.sty'' v2.0i +\ifx\ESO@tempdima\@undefined \newdimen\ESO@tempdima \fi +\ifx\ESO@tempdimb\@undefined \newdimen\ESO@tempdimb \fi +% +%% recover the error +\ifnum\pxesop@status>\z@ % auto + \def\pxesop@pkgtohook{eso-pic}% + % note that ``plautopatch.sty'' discards the hook + % on LaTeX2e 2020-02-02 PL5 or older + \ifx\declare@file@substitution\@undefined + \let\pxesop@pkgtohook\pxesop@pkgname + % throw an error for unsupported usage + % [FIXME] the error below is actually unnecessary when + % none of ``eso-pic.sty'' options is used; how to detect that? + \pxesop@error{Try loading \pxesop@pkgname\space by hand}\@ehc + \fi +\else + \let\pxesop@pkgtohook\pxesop@pkgname +\fi +\pxesop@ExecuteAfterPackage\pxesop@pkgtohook{% + \let\@unknownoptionerror\pxesop@unknownoptionerror + \pxesop@debug{\noexpand\@unknownoptionerror restored}% +} +%% + +%% do it +%-- similar to bounddvi.sty (checked 2020/10/08 v8.2) +% detection of \iftombow availability is delayed until \AtBeginDocument, +% to support both (u)pLaTeX kernel and ``gentombow.sty'' +% Note: this package does not consider changing \iftombow status +% in the middle of a single document. +\AtBeginDocument{\pxesop@do} +\def\pxesop@do{% + \ifx\tombowtrue\@undefined + \pxesop@debug{Tombow feature unavailable, no patch applied}% + \let\pxesop@switch\pxesop@orig % skip if-tokens and restore + \fi + \pxesop@switch} +% +\def\pxesop@switch{% + \iftombow \pxesop@ensure@stock \pxesop@new + \else \pxesop@orig \fi} +% +\def\pxesop@ensure@stock{% + %\iftombow + % if \stockwidth/\stockheight are not available, + % define them now + \ifx\stockwidth\@undefined \newdimen\stockwidth \fi + \ifx\stockheight\@undefined \newdimen\stockheight \fi + % if \stockwidth already has effective value, do nothing; + % otherwise assume pLaTeX-style tombow and set it to + % \paperwidth + 2in (similar for \stockheight) + \ifdim\stockwidth>\z@\else + \stockwidth\paperwidth \advance\stockwidth2in + \fi + \ifdim\stockheight>\z@\else + \stockheight\paperheight \advance\stockheight2in + \fi + %\fi +} +%-- +% +%% for \iftombow is FALSE => restore from ``eso-pic.sty'' +\expandafter\def\expandafter\pxesop@orig\expandafter{% + \expandafter\AtBeginShipout\expandafter{\pxesop@hook}} +% +%% for \iftombow is TRUE => redefine by ``pxesopic.sty'' +\def\pxesop@new{% + %% \AtStockLowerLeft: based on TRUE of \ESO@isMEMOIR + \renewcommand\AtStockLowerLeft[1]{% + \begingroup + \ESO@tempdima=-\stockwidth + \advance\ESO@tempdima\paperwidth + \ESO@tempdimb=-\stockheight + \advance\ESO@tempdimb\paperheight + %% specific BEGIN + \advance\ESO@tempdima 1in\relax + \advance\ESO@tempdimb 1in\relax + \advance\ESO@tempdima \hoffset\relax + \advance\ESO@tempdimb \voffset\relax + %% specific END + \AtPageLowerLeft{% + \put(\LenToUnit{\ESO@tempdima},\LenToUnit{\ESO@tempdimb}){##1}% + }% + \endgroup + }% === + %% \AtStockUpperLeft: based on TRUE of \ESO@isMEMOIR + \renewcommand\AtStockUpperLeft[1]{% + \AtStockLowerLeft{% + \put(0,\LenToUnit{\stockheight}){##1}% + }% + }% === + %% \AtStockCenter: based on TRUE of \ESO@isMEMOIR + \renewcommand\AtStockCenter[1]{% + \AtStockLowerLeft{% + \put(\LenToUnit{.5\stockwidth},\LenToUnit{.5\stockheight}){##1}% + }% + }% + %% \AtTextUpperLeft: same as FALSE of \ESO@isMEMOIR + % (no change) + % + %% \AtBeginShipout: based on TRUE of \ESO@isMEMOIR + \AtBeginShipout{% + \ESO@tempdima=\dimexpr(\stockwidth-\paperwidth)/2\relax + \ESO@tempdimb=-\dimexpr(\stockheight+\paperheight)/2\relax + \ifESO@texcoord + \advance\ESO@tempdimb\paperheight % [FIXME] not sure! + \fi + %% specific BEGIN + \advance\ESO@tempdima -\hoffset\relax + \advance\ESO@tempdimb \voffset\relax + %% specific END + \nointerlineskip + \AtBeginShipoutUpperLeft{% + \put(\LenToUnit{\ESO@tempdima},\LenToUnit{\ESO@tempdimb}){% + \ESO@HookIIIBG\ESO@HookIBG\ESO@HookIIBG + \global\let\ESO@HookIIBG\@empty + }% + }% + \AtBeginShipoutUpperLeftForeground{% + \put(\LenToUnit{\ESO@tempdima},\LenToUnit{\ESO@tempdimb}){% + \ESO@HookIFG\ESO@HookIIFG\ESO@HookIIIFG + \global\let\ESO@HookIIFG\@empty + }% + }% + }% === +} +%% + +\endinput +%% EOF diff --git a/macros/latex/contrib/gentombow/pxgentombow.pdf b/macros/latex/contrib/gentombow/pxgentombow.pdf new file mode 100644 index 0000000000..d30a4509e4 Binary files /dev/null and b/macros/latex/contrib/gentombow/pxgentombow.pdf differ diff --git a/macros/latex/contrib/gentombow/pxgentombow.sty b/macros/latex/contrib/gentombow/pxgentombow.sty new file mode 100644 index 0000000000..bd94b4bcee --- /dev/null +++ b/macros/latex/contrib/gentombow/pxgentombow.sty @@ -0,0 +1,16 @@ +% +% pxgentombow.sty +% written by Hironobu Yamashita (@aminophen) +% +% This package is part of the gentombow bundle. +% https://github.com/aminophen/gentombow +% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{pxgentombow} + [2020/10/14 v0.9l Generate crop mark 'tombow'] +\PackageWarningNoLine{pxgentombow}{% + Package `pxgentombow' is now superseded by\MessageBreak + `gentombow', use `gentombow' instead} +\RequirePackageWithOptions{gentombow}% load it +\endinput diff --git a/macros/latex/contrib/gentombow/pxgentombow.tex b/macros/latex/contrib/gentombow/pxgentombow.tex new file mode 100644 index 0000000000..8a8c2616bd --- /dev/null +++ b/macros/latex/contrib/gentombow/pxgentombow.tex @@ -0,0 +1,25 @@ +%# -*- coding: utf-8 -*- +\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016) + \epTeXinputencoding utf8 % ensure utf-8 encoding for platex +\fi + +\documentclass[a4paper]{jsarticle} +\usepackage{doc} +\usepackage{pxgentombow} +\usepackage{bounddvi} +\GetFileInfo{pxgentombow.sty} +\title{Package \textsf{pxgentombow}} +\author{Hironobu Yamashita} +\date{2018年5月17日} +\begin{document} + +\maketitle + +\begin{center} +The package \textsf{pxgentombow} is now superseded by \textsf{gentombow}! +\end{center} + +\textsf{pxgentombow}パッケージは、上位版である\textsf{gentombow}パッケージに +統一されました。代わりに\textsf{gentombow}パッケージを使用してください。 + +\end{document} diff --git a/macros/latex/contrib/gentombow/pxpdfpages.sty b/macros/latex/contrib/gentombow/pxpdfpages.sty new file mode 100644 index 0000000000..ad86ea819b --- /dev/null +++ b/macros/latex/contrib/gentombow/pxpdfpages.sty @@ -0,0 +1,72 @@ +% +% pxpdfpages.sty +% written by Hironobu Yamashita (@aminophen) +% +% This package is part of the gentombow bundle. +% https://github.com/aminophen/gentombow +% +% This package is expected to be compatible with +% * pdfpages.sty +% (2015/07/19 v0.5a -- 2020/01/28 v0.5q) +% + +%% package declaration +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{pxpdfpages} + [2020/10/11 v0.4c Patch to pdfpages for tombow] + +%% preparations +\def\pxpdpg@pkgname{pxpdfpages} +\def\pxpdpg@warn{\PackageWarningNoLine\pxpdpg@pkgname} +\def\pxpdpg@info{\PackageInfo\pxpdpg@pkgname} +\let\pxpdpg@debug\@gobble +%\def\pxpdpg@debug#1{\typeout{\pxpdpg@pkgname: [DEBUG] #1}}% for debug + +%% load it +\RequirePackageWithOptions{pdfpages}% pdfpages requires atbegshi +\ifx\pfmtname\@undefined\else + \ifx\AtBegShi@Output\@undefined + % LaTeX2e 2020-10-01: an emulation by ``atbegshi-ltx.sty'' + % => pLaTeX2e 2020-10-01 natively supports it + \else + % older: the real ``atbegshi.sty'' is loaded + \IfFileExists{pxatbegshi.sty}{\RequirePackage{pxatbegshi}}{} + \fi +\fi + +%% do it +%-- similar to bounddvi.sty (checked 2020/10/08 v8.2) +% detection of \iftombow availability is delayed until \AtBeginDocument, +% to support both (u)pLaTeX kernel and ``gentombow.sty'' +\AtBeginDocument{\pxpdpg@do} +\def\pxpdpg@do{% + \ifx\tombowtrue\@undefined + \pxpdpg@debug{Tombow feature unavailable, no patch applied}% + \let\pxpdpg@switch\relax % do nothing + \fi + \pxpdpg@switch} +% +\def\pxpdpg@switch{\pxpdpg@patch@pdfpages} + +%% patch internal for pdfpages to work with tombow +%-- Note: this code should be copied to gentombow.sty! +\def\pxpdpg@patch@pdfpages{% + \RequirePackage{etoolbox} + \patchcmd{\AM@output}{% + \setlength{\@tempdima}{\AM@xmargin}% + \edef\AM@xmargin{\the\@tempdima}% + \setlength{\@tempdima}{\AM@ymargin}% + \edef\AM@ymargin{\the\@tempdima}% + }{% + \setlength{\@tempdima}{\AM@xmargin\iftombow+1in\fi}% + \edef\AM@xmargin{\the\@tempdima}% + \setlength{\@tempdima}{\AM@ymargin\iftombow-1in\fi}% + \edef\AM@ymargin{\the\@tempdima}% + }% + {\pxpdpg@info{Patch for pdfpages applied}}% + {\pxpdpg@warn{Patch for pdfpages failed}}% +} + +%% all done + +\endinput diff --git a/macros/latex/contrib/gentombow/pxtextpos.sty b/macros/latex/contrib/gentombow/pxtextpos.sty new file mode 100644 index 0000000000..02cd5202e2 --- /dev/null +++ b/macros/latex/contrib/gentombow/pxtextpos.sty @@ -0,0 +1,108 @@ +% +% pxtextpos.sty +% written by Hironobu Yamashita (@aminophen) +% +% This package is part of the gentombow bundle. +% https://github.com/aminophen/gentombow +% +% This package is expected to be compatible with +% * textpos.sty +% 2005/10/13 v1.6a -- 2019/04/15 v1.9.1 +% + +%% package declaration +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{pxtextpos} + [2020/10/11 v0.4b Patch to textpos for tombow] + +%% preparations +\def\pxtxtpos@pkgname{pxtextpos} +\def\pxtxtpos@warn{\PackageWarningNoLine\pxtxtpos@pkgname} +\let\pxtxtpos@debug\@gobble +%\def\pxtxtpos@debug#1{\typeout{\pxtxtpos@pkgname: [DEBUG] #1}}% for debug + +%% load it +\RequirePackageWithOptions{textpos} +% textpos requires everyshi, only if both conditions are met: +% (1) \fmtversion is **older** than 2020/10/01 +% (2) \ifTP@abspos == \iftrue +% [TODO] tate-mode support is incomplete! +\ifx\pfmtname\@undefined\else + \ifx\@EveryShipout@Output\@undefined + % LaTeX2e 2020-10-01: an emulation by ``everyshi-ltx.sty'' + % => pLaTeX2e 2020-10-01 natively supports it + \else + % older: the real ``everyshi.sty'' is loaded + \IfFileExists{pxeveryshi.sty}{\RequirePackage{pxeveryshi}}{} + \fi +\fi + +%% do it +%-- similar to bounddvi.sty (checked 2020/10/08 v8.2) +% detection of \iftombow availability is delayed until \AtBeginDocument, +% to support both (u)pLaTeX kernel and ``gentombow.sty'' +\AtBeginDocument{\pxtxtpos@do} +\def\pxtxtpos@do{% + \ifx\tombowtrue\@undefined + \pxtxtpos@debug{Tombow feature unavailable, no patch applied}% + \let\pxtxtpos@switch\relax % do nothing + \fi + \pxtxtpos@switch} +% +\def\pxtxtpos@switch{% + \let\textblockorigin\pxtxtpos@textblockorigin + \ifTP@abspos\textblockorigin{0pt}{0pt}\fi %% reset +} + +%% known definition +\def\pxtxtpos@textblockorigin#1#2{% + \ifTP@abspos + \TP@ox=-1in \addtolength\TP@ox{#1} + \TP@oy=-1in \addtolength\TP@oy{#2} + \ifTP@chatter\typeout{TextBlockOrigin set to #1 x #2}\fi + \else + \PackageError{textpos} + {The \protect\textblockorigin\space command\MessageBreak + may only be used if the package was given\MessageBreak + the`absolute' option when it was invoked} + {If you want to use the \protect\textblockorigin\space command, then + \MessageBreak + invoke the package with the syntax\MessageBreak + \protect\usepackage[absolute]{textpos}} + \fi +} +\@onlypreamble\pxtxtpos@textblockorigin + +%% check definition +\ifx\textblockorigin\pxtxtpos@textblockorigin\else + \pxtxtpos@warn{% + Command \noexpand\textblockorigin is beyond my knowledge.\MessageBreak + I will apply the patch anyway, but it may break:\MessageBreak + Please report to the author of `\pxtxtpos@pkgname.sty'} +\fi + +%% new definition +\def\pxtxtpos@textblockorigin#1#2{% + \ifTP@abspos + \TP@ox=-1in \addtolength\TP@ox{#1} + \TP@oy=-1in \addtolength\TP@oy{#2} + %%% addition + \iftombow + \addtolength\TP@ox{1in}\addtolength\TP@oy{1in} + \fi + %%% + \ifTP@chatter\typeout{TextBlockOrigin set to #1 x #2}\fi + \else + \PackageError{textpos} + {The \protect\textblockorigin\space command\MessageBreak + may only be used if the package was given\MessageBreak + the`absolute' option when it was invoked} + {If you want to use the \protect\textblockorigin\space command, then + \MessageBreak + invoke the package with the syntax\MessageBreak + \protect\usepackage[absolute]{textpos}} + \fi +} + +\endinput +%% EOF diff --git a/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.cls b/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.cls deleted file mode 100644 index b724f105d3..0000000000 --- a/macros/latex/contrib/kfupm-math-exam/kfupm-math-exam.cls +++ /dev/null @@ -1,289 +0,0 @@ -% kfupm-math-exam.cls -% Department of Mathematics -% King Fahd University of Petroleum and Minerals -% A LaTeX2e document class for preparing the exams of the department of mathematics, KFUPM. - -% --- METADATA ----------------------------------------------------------------- -\def\fileversion{0.1.0} -\def\filedate{2022/07/25} -\NeedsTeXFormat{LaTeX2e} -\ProvidesClass{kfupm-math-exam}[\filedate\space Version \fileversion\space by - Department of Mathematics, KFUPM] -% --- OPTION PROCESSSING ------------------------------------------------------- -\RequirePackage{kvoptions} \SetupKeyvalOptions{ - family = kfupmmathexam, - prefix = kfupmmathexam@, - setkeys = \kvsetkeys -} -\DeclareStringOption[212]% - {term} -\DeclareStringOption[Exam]% - {topic} -\DeclareStringOption[King Fahd University of Petroleum \& Minerals]% - {university} -\DeclareStringOption[Department of Mathematics]% - {dept} -\DeclareStringOption[MATH101 CALCULUS I]% - {course} -\DeclareStringOption[3]% - {quartile} -\DeclareStringOption[1]% - {examtitle} -\DeclareStringOption[March 9, 2022]% - {examdate} -\DeclareStringOption[4]% - {numofversions} -\DeclareStringOption[15]% - {numofquestions} -\DeclareStringOption[5]% - {numofoptions} -\DeclareStringOption[0123456]% - {studentnumber} -\DeclareStringOption[snumver@kfupm.edu.sa]% - {email} -\DeclareStringOption[1]% - {firstexercise} -\DeclareStringOption[3.5cm]{betweenquestions} -\DeclareStringOption[0.762cm]{spaceafterbody} -\DeclareStringOption[0.5cm]{betweenoptions} -% pass unrecognized options to `article` class -\DeclareDefaultOption{% - \PassOptionsToClass{\CurrentOption}{article}% -} -% process all options -\ProcessKeyvalOptions{kfupmmathexam} -% load parent class with some default options -\LoadClass[a4paper, 12pt]{article} -% --- PACKAGES AND SETUP ------------------------------------------------------- -\RequirePackage[ - paperheight=33cm, - paperwidth=21.5cm, - headheight = 20pt, - margin = 2cm, - tmargin = \dimexpr 2cm - 10pt \relax, - ]{geometry} % set up nicer margins - \addtolength{\footskip}{20pt} -\RequirePackage{fancyhdr} % for headers and footers -\RequirePackage{graphicx} % for including figures -\RequirePackage{amsmath} % use AMS math package -\RequirePackage{amssymb} % use AMS symbols -\RequirePackage{amsthm} % for writing proofs -\RequirePackage{array} % for setting up arguments to columns -\RequirePackage{booktabs} % for professional tables -\RequirePackage% - [tworuled, linesnumbered, noend, noline]% - {algorithm2e} % for typesetting pseudo-code -\RequirePackage{xcolor} % for colored text (comments in algorithms) -\RequirePackage{trimspaces, xstring} % for multiple author parsing -\RequirePackage[shortlabels]{enumitem} \labelsep=.75cm -\RequirePackage{mathrsfs} -\RequirePackage{xparse} -\RequirePackage{environ} -\RequirePackage{pgfplots} -\pgfplotsset{compat=newest} -\RequirePackage{tcolorbox} - -% option post-processing -\newcommand{\kme@temp}{} -\newcommand{\kme@sub}[4]{% - \ifnum#3 = 1\relax% - \ifnum#4 = 1\relax% - \renewcommand{\kme@temp}{#1}% - \else% - \StrBefore{#1}{#2}[\kme@temp]% - \fi% - \else% - \ifnum#3 = #4\relax% - \StrBehind[\numexpr#3 - 1\relax]{#1}{#2}[\kme@temp]% - \else% - \StrBetween[\numexpr#3 - 1\relax,#3]{#1}{#2}{#2}[\kme@temp]% - \fi% - \fi% - \expandafter\trim@spaces\expandafter{\kme@temp}% -} -\newcommand{\kme@authorProcessed}[1]{% - \kme@sub{\kfupmmathexam@name}{;}{#1}{\arabic{kme@numAuthors}}~% - (\kme@sub{\kfupmmathexam@studentnumber}{;}{#1}{\arabic{kme@numAuthors}})\\% - \texttt{\kme@sub{\kfupmmathexam@email}{;}{#1}{\arabic{kme@numAuthors}}}% - % if there are more authors, do a recursive call for the next one - \ifnum#1 < \arabic{kme@numAuthors}\relax\and\kme@authorProcessed{\numexpr#1 + 1\relax}\fi% -} -\newcommand{\kme@authorsProcessed}{% - % count number of authors; one more than number of semicolons - \StrCount{\kfupmmathexam@name}{;}[\kme@numAuthors]% - \newcounter{kme@numAuthors}% - \setcounter{kme@numAuthors}{\kme@numAuthors}% - \stepcounter{kme@numAuthors}% - % produce output - \kme@authorProcessed{1}% -} -% look for figures in the figures directory -\graphicspath{{figures/}} -% set up headers and footers; same for all pages -\setlength{\headheight}{10pt} -\newcommand{\kfupmmathexam@setupHF}{% - \fancyhf{} - \fancyhead[L]{\sffamily \small KFUPM } - \fancyhead[C]{\sffamily Page \thepage ~of \pageref{LastPage}} - \fancyhead[R]{\sffamily Term \kfupmmathexam@term} - \fancyfoot[L]{\sffamily /\kfupmmathexam@dept} - \fancyfoot[R]{\sffamily\bfseries\thepage} - \renewcommand{\headrulewidth}{0.5pt} - \renewcommand{\footrulewidth}{0.5pt} -} -\fancypagestyle{plain}{\kfupmmathexam@setupHF{}} \kfupmmathexam@setupHF{} -\pagestyle{fancy} -\NewDocumentCommand{\coverpage}{O{\kfupmmathexam@course} O{\kfupmmathexam@examtitle} O{\kfupmmathexam@term} O{\kfupmmathexam@examdate}}{% -\thispagestyle{empty} -\begin{center} - \begin{large} - Kink Fahd University of Petroleum and Minerals\\ - Mathematics\\ - \vspace*{2cm} - {\bf #1} \\ - {\bf #2} \\ - {\bf #3} \\ - {\bf #4} \\ - - \vspace*{3cm} - {\bf{\Huge{\fbox{EXAM COVER }}}}\\ - \vspace*{2cm} - {\bf Number of versions: \kfupmmathexam@numofversions } \\ - {\bf Number of questions: \kfupmmathexam@numofquestions } \\ - {\bf Number of Answers: \kfupmmathexam@numofoptions } \\ - - \vspace*{0.2cm} - - \end{large} - - \vfill - - \tiny{This exam was prepared using EXAM SHUFFLER} - \tiny{For questions send an email to Dr. Mohammed Alshahrani (mshahrani@kfupm.edu.sa) } -\end{center} -\newpage -} -\newcommand{\versioncover}[1]{ -\thispagestyle{empty} -\begin{center} - \begin{large} - Kink Fahd University of Petroleum and Minerals \\ - Mathematics \\ - \vspace*{4.5cm} - {\bf \fbox{ \codestr{CODE}{#1} } } \hfill {\bf \fbox{ \codestr{CODE}{#1} }} \\ - {\bf math333 } \\ - {\bf exam 1 } \\ - {\bf 182 } \\ - {\bf monday march 13 } \\ - {\bf Net Time Allowed: 120 minutes } \\ - - \vspace*{0.2cm} - - \end{large} -\end{center} -\ifthenelse{\equal{#1}{0}}{ -\begin{center} -\vspace*{6cm} -{\bf {\Huge{MASTER VERSION}}} \\ -\end{center} -}{ -\large{Name: }\hrulefill - -\vspace{3mm} - -\large{ID: } \hrulefill \large{ Sec: } \hrulefill \large{.} - -\vspace{1cm} - -\large{\bf{Check that this exam has {\underline{ \thenumberofquestions }} questions.}} - -\vspace{1cm} - -\getInstructions -} -\newpage - -\renewcommand{\thepage}{\noindent Term 182, math333, exam 1 \hfill Page {\bf \arabic{page} of \pagecount{\thenumberofpages} } \hfill {\bf \fbox{ \codestr{CODE}{#1} }}} -\setcounter{page}{1} - -} -% ensure that the title is inserted in the document -\title{\coverpage} -\author{} -\date{} -\AtBeginDocument{\pagestyle{myheadings}}%\maketitle - -% add some keywords -\SetKw{And}{and} \SetKw{Or}{or} \SetKw{To}{to} -% make it possible to not have line numbers on a single line -\let\oldnl\nl -\newcommand{\nonl}{\renewcommand{\nl}{\let\nl\oldnl}} -% style algorithm captions -\newcommand{\kfupmmathexam@capsty}[1]{\!} -\SetAlCapSty{kfupmmathexam@capsty} \SetAlCapNameFnt{\scshape\hspace{.69em}} -% get rid of semicolons -\DontPrintSemicolon -% comment formatting -\newcommand\agacommfont[1]{\footnotesize\ttfamily\textcolor{gray}{#1}} -\SetCommentSty{agacommfont} -% --- USEFUL MACROS ------------------------------------------------------------ -\newcommand*{\R}{{\mathbb R}} -\newcommand*{\N}{{\mathbb N}} -\newcommand*{\Z}{{\mathbb Z}} -\newcommand*{\Q}{{\mathbb Q}} - -% lengths and commands of the exam options -\newcount\numberofversions -\numberofversions=\kfupmmathexam@numofversions -\advance\numberofversions +1 -\newcounter{numberofquestions} -\setcounter{numberofquestions}{\kfupmmathexam@numofquestions} -\newcounter{numberofpages} -\setcounter{numberofpages}{0} -% --- define new database for exam questions ---- -\newcounter{examcodecounter} -\setcounter{examcodecounter}{1} - - -\ExplSyntaxOn -\str_new:N \l_alphabets_str -\str_set:Nn \l_alphabets_str {abcdefghigklmnopqrstuvwxuz} -\newcommand{\instructions}[1]{ - \tl_set:Nn \l_tmpa_str {#1} -} -\newcommand{\getInstructions}[1]{ - \tl_use:N \l_tmpa_str -} -\int_new:N \l_tmppages_int -\int_set:Nn \l_tmppages_int {0} -\cs_set:Npn \l_calc_pages_int:n #1 { - \int_set:Nn \l_tmppages_int {\int_div_truncate:nn {#1}{2}} - \int_set:Nn \l_tmppages_int {\int_compare:nNnTF {0}={\int_mod:nn {#1}{2}}{\l_tmppages_int}{\l_tmppages_int+1}} - \int_use:N \l_tmppages_int -} -\newcommand{\pagecount}[1]{ - \l_calc_pages_int:n {15} -} - - -\str_new:N \l_exam_code_str -\int_new:N \l_exam_version_int -\cs_set:Npn \l_concat_codenumber_str:nn #1#2 { - \int_set:Nn \l_exam_version_int {100+#2} - \str_clear_new:N \l_partone_str - \str_clear_new:N \l_parttwo_str - \str_set:Nn \l_partone_str {#1} - \str_set:Nx \l_parttwo_str {\int_use:N \l_exam_version_int} - \str_set:Nx \l_parttwo_str {\str_range:Nnn \l_parttwo_str {-2}{-1}} - \str_concat:NNN \l_exam_code_str \l_partone_str \l_parttwo_str - \str_use:N \l_exam_code_str -} -\newcommand{\codestr}[2]{ - \int_compare:nNnTF {0}={#2}{MASTER}{ - \l_concat_codenumber_str:nn {#1}{#2} - } -} - -% working with list - -\ExplSyntaxOff diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf index 2d5662a655..a2dff6588f 100644 Binary files a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf and b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf differ diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex index 4d6357e042..5f7796fa90 100644 --- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex +++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex @@ -9,8 +9,20 @@ \renewcommand\ttdefault{lmtt} \usepackage[scaled=0.875]{cabin} \usepackage[build]{ProfLycee} +\usepackage{tkz-euclide} \usetikzlibrary{hobby} \usepackage{siunitx} +\usepackage{fancyhdr} +%fancy +\fancyhf{} +\renewcommand{\headrulewidth}{0pt} +%\lhead{\sffamily \small [ProfLycee]} +%\chead{\entete{\classe{} - \annee}} +%\rhead{\sffamily \small - \thepage{} -} +\lfoot{\sffamily \small [ProfLycee]} +\cfoot{\sffamily \small - \thepage{} -} +\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}} + \usepackage{graphics} \usepackage{hvlogos} \usepackage{simplekv} @@ -42,8 +54,8 @@ \setlength{\parindent}{0pt} \definecolor{LightGray}{gray}{0.9} -\def\PLversion{1.1.7} -\def\PLdate{30 Juin 2022} +\def\PLversion{1.1.8} +\def\PLdate{01 Août 2022} \tcbset{vignettes/.style={% nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,% @@ -170,17 +182,22 @@ \begin{document} -\thispagestyle{empty} +%\AddToShipoutPicture{% +%\begin{tikzpicture}[remember picture,overlay] +% \node [anchor=center,yshift=1cm,xshift=-1.5cm] (box\thepage) at (current page.south east){\hyperlink{matoc}{\LARGE\faArrowAltCircleUp[regular]}}; +%\end{tikzpicture}} + +\pagestyle{fancy} \maketitle -{\Large \bfseries Résumé : } +\thispagestyle{empty} + +{\Large {\bfseries Résumé} : Quelques commandes pour faciliter l'utilisation de \LaTeX{} pour les enseignants de mathématiques en lycée.} \medskip -\noindent Quelques commandes pour faciliter l'utilisation de \LaTeX{} pour les enseignants de mathématiques en lycée. - -Quelques commandes pour des courbes \textit{lisses} avec gestion des extrema et des dérivées. +\noindent Quelques commandes pour des courbes \textit{lisses} avec gestion des extrema et des dérivées. Quelques commandes pour simuler une fenêtre de logiciel de calcul formel, en \TikZ. @@ -239,6 +256,9 @@ Quelques commandes pour convertir bin/dec/hex avec certains détails. \newpage +\phantomsection +\hypertarget{matoc}{} + \tableofcontents \newpage @@ -268,7 +288,7 @@ Le {package} \ctex{ProfLycee} charge les {packages} : \item \ctex{xcolor} avec les options \textsf{[table,svgnames]} ; \item \ctex{tikz}, \ctex{pgf}, \ctex{xfp} ; \item \ctex{xparse}, \ctex{xkeyval}, \ctex{xstring}, \ctex{simplekv} ; - \item \ctex{listofitems}, \ctex{xintexpr} ; + \item \ctex{listofitems}, \ctex{xintexpr} et \ctex{xintbinhex} ; \item \ctex{tabularray}, \ctex{fontawesome5}, \ctex{tcolorbox}. \end{itemize} \end{codeinfo} @@ -381,7 +401,8 @@ Le {package}, qui s'enrichira peut-être au fil du temps permet -- pour le momen \item créer un cartouche \textit{à la manière de} Capytale ; \item créer rapidement un pavé droit ou un tétraèdre en \TikZ, avec gestion des nœuds ; \item créer rapidement un ensemble d'éléments, avec gestion des espaces ; - \item créer, dans un environnement \TikZ, la \og toile \fg{} pour une suite récurrente. + \item créer, dans un environnement \TikZ, la \og toile \fg{} pour une suite récurrente : + \item etc \end{itemize} \end{codeidee} @@ -1639,7 +1660,7 @@ Pour \textit{illustrer} un peu les \Cle{clés}, un petit schéma, avec les diff \subsection{Fractions} \begin{codeidee} -L'idée est d'obtenir une commande pour simplifier un calcul sous forme de fraction irréductible. +L'idée est d'obtenir une commande pour \textit{simplifier} un calcul sous forme de fraction irréductible. \end{codeidee} \begin{codetex}[listing only] @@ -2039,7 +2060,7 @@ Plusieurs \Cle{Clés} sont disponibles pour cette commande : \subsection{Équations trigos} \begin{codeinfo} -En plus des \Cle{Clés} précédentes, il existe un complément pour visualiser des solutions d'équations simples du type $\cos(x)=\ldots$ ou $\sin(x)=\ldots$. +En plus des \Cle{Clés} précédentes, il existe un complément pour \textit{visualiser} des solutions d'équations simples du type $\cos(x)=\ldots$ ou $\sin(x)=\ldots$. \end{codeinfo} \begin{codecles} @@ -2250,7 +2271,7 @@ Pour la clé \Cle{code}, il est construit par le type (\textsf{a} pour affine ou \begin{codeidee} Ces schémas peuvent être de plus utilisés, via la commande \ctex{aidesignetkztabPL} pour illustrer les signes obtenus dans un tableau de signes présentés grâce au package \ctex{tkz-tab}. -Pour des raisons interne, le fonctionnement de la commande \ctex{aidesignetkztabPL} est légèrement différent et, pour des raisons que j'ignore, le code est légèrement différent en \textit{interne} (avec une \textit{déconnexion} des caractères \textsf{:} et \textsf{\textbackslash}) pour la librairie \TikZ{} \ctex{calc} puisse fonctionner (mystère pour le moment\ldots) +Pour des raisons internes, le fonctionnement de la commande \ctex{aidesignetkztabPL} est légèrement différent et, pour des raisons que j'ignore, le code est légèrement différent en \textit{interne} (avec une \textit{déconnexion} des caractères \textsf{:} et \textsf{\textbackslash}) pour que la librairie \TikZ{} \ctex{calc} puisse fonctionner (mystère pour le moment\ldots) \end{codeidee} \begin{codetex}[listing only] @@ -2641,7 +2662,7 @@ L'idée est de \textit{compléter} les possibilités offertes par le package \ct \begin{itemize} \item décimal en binaire avec blocs de 4 chiffres en sortie ; - \item conversion binaire ou hexédacimal en décimal avec écriture polynomiale. + \item conversion binaire ou hexadécimal en décimal avec écriture polynomiale. \end{itemize} \end{codeidee} @@ -2698,7 +2719,7 @@ Le formatage est géré par \ctex{sinuitx}, le mieux est donc de positionner la \smallskip -Les nombres écrits en binaire sont, par défaut, présenter en bloc de 4 chiffres. +Les nombres écrits en binaire sont, par défaut, présentés en bloc(s) de 4 chiffres. \end{codecles} \begin{codetex}[listing only] @@ -2767,8 +2788,6 @@ $\PLconvbinhex[trait=1.5pt]{110011111}$ $\PLconvbinhex[details=false]{110011111}$ %conversion sans détails et sans affichage de la base $\PLconvbinhex[affbase=false,details=false]{110011111}$ -%conversion avec détails et sans affichage -$\PLconvbinhex[affbase=false]{110011111}$ \end{codetex} \begin{codesortie} @@ -2779,8 +2798,6 @@ $\PLconvbinhex[trait=1.5pt]{110011111}$ $\PLconvbinhex[details=false]{110011111}$ $\PLconvbinhex[affbase=false,details=false]{110011111}$ - -$\PLconvbinhex[details=false]{110011111}$ \end{codesortie} \pagebreak @@ -2805,7 +2822,7 @@ L'idée est ici de présenter la conversion, grâce à l'écriture polynômiale Quelques \Cle{clés} sont disponibles pour cette commande : \begin{itemize} - \item la clé \Cle{basedep} qi est la base de départ (2 ou 16 !) ; \hfill{}défaut \Cle{2} + \item la clé \Cle{basedep} qui est la base de départ (2 ou 16 !) ; \hfill{}défaut \Cle{2} \item le booléen \Cle{affbase} qui permet d'afficher ou non la base des nombres ; \hfill{}défaut \Cle{true} \item le booléen \Cle{details} qui permet d'afficher ou le détail par bloc de 4 ; \hfill{}défaut \Cle{true} \item le booléen \Cle{zeros} qui affiche les chiffres 0 dans la somme. \hfill{}défaut \Cle{true} @@ -2836,14 +2853,87 @@ $\PLconvtodec[zeros=false]{110011}$ $\PLconvtodec[basedep=16,details=false]{AC0DC}$ -$\PLconvtodec[zeros=false,basedep=16,details=false]{AC0DC}$ +$\PLconvtodec[zeros=false,basedep=16]{AC0DC}$ \end{codesortie} \newpage +\section{Style \og main levée \fg{} en \TikZ} + +\subsection{Idée} + +\begin{codeidee} +L'idée est de \textit{proposer} un style \textit{tout prêt} pour simuler un tracé, en \TikZ, à \og main levée \fg. + +Il s'agit d'un style \textit{basique} utilisant la librairie \ctex{decorations} avec \textsf{random steps}. +\end{codeidee} + +\begin{codetex}[listing only] +\tikzset{% + mainlevee/.style args={#1et#2}{decorate,decoration={random steps, segment length=#1,amplitude=#2}}, + mainlevee/.default={5mm et 0.6pt} +} +\end{codetex} + +\subsection{Utilisation basique} + +\begin{codeinfo} +Il s'agit ni plus ni moins d'un style \TikZ{} à intégrer dans les tracés et constructions \TikZ ! +\end{codeinfo} + +\begin{codecles} +Concernant le style en lui-même, deux paramètres peuvent être précisés via \Cle{mainlevee=\#1 et \#2} : + +\begin{itemize} + \item \Cle{\#1} correspond à l'option \textsf{segment length} (longueur des segments \textit{types}) ;\hfill{}défaut \Cle{5mm} + \item \Cle{\#2} correspond à l'option \textsf{amplitude} (amplitude maximale de la \textit{déformation}).\hfill{}défaut \Cle{0.6pt} +\end{itemize} + +Les valeurs \Cle{mainlevee=5mm et 0.6pt} donnent des résultats -- à mon sens -- satisfaisants, mais l'utilisateur pourra modifier à loisir ces paramètres ! +\end{codecles} + +\begin{codetex}[listing only] +%la grille a été rajoutée pour la sortie +\begin{tikzpicture} + \draw[thick,mainlevee] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ; +\end{tikzpicture} + +\begin{tikzpicture} + \draw[thick,mainlevee=5mm et 2pt] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ; +\end{tikzpicture} + +\begin{tikzpicture} + \draw[thick,mainlevee=10mm et 3mm] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ; +\end{tikzpicture} +\end{codetex} + +\begin{codesortie} +\hfill~\begin{tikzpicture} + \draw[xstep=0.5,ystep=0.5,ultra thin,lightgray] (0,0) grid (4,4); + \draw[thick,mainlevee] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ; +\end{tikzpicture} +\hspace{1.5cm} +\begin{tikzpicture} + \draw[xstep=0.5,ystep=0.5,ultra thin,lightgray] (0,0) grid (4,4); + \draw[thick,mainlevee=5mm et 2pt] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ; +\end{tikzpicture} +\hspace{1.5cm} +\begin{tikzpicture} + \draw[xstep=0.5,ystep=0.5,ultra thin,lightgray] (0,0) grid (4,4); + \draw[thick,mainlevee=10mm et 3mm] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ; +\end{tikzpicture} +\hfill~ +\end{codesortie} + +\newpage + +\section{Historique} + +{\small \bverb|v1.1.8|~:~~~~Style "Mainlevée" basique pour \TikZ + {\small \bverb|v1.1.7|~:~~~~Conversions bin/hex/dec (basées sur \ctex{xintbinhex}) avec quelques détails -{\small \bverb|v1.1.6|~:~~~~Ajout d'une commande \textsf{PLregln} pour déterminer les paramètres d'une régression linéaire par moindres carrés +{\small \bverb|v1.1.6|~:~~~~Ajout d'une commande \textsf{PLreglin} pour déterminer les paramètres d'une régression linéaire par moindres carrés {\small \bverb|v1.1.5|~:~~~~Ajout de deux commandes \textsf{aidesignePL} et \textsf{aidesignetkztabPL} pour, en \TikZ, créer des petits schémas \og de signe \fg diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty index d1902bc2ac..7e32293bc5 100644 --- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty +++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty @@ -3,7 +3,8 @@ % or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ProfLycee}[2022/06/30 - v1.1.7 - Aide pour l'utilisation de LaTeX en lycée] +\ProvidesPackage{ProfLycee}[2022/08/01 - v1.1.8 - Aide pour l'utilisation de LaTeX en lycée] +% 1.1.8 Ajout d'un style mainlevee pour tikz % 1.1.7 Ajout de commandes pour des conversions bin/dec/hex % 1.1.6 Ajout d'une commande pour déterminer les paramètres d'un régression linéaire par moindres carrés % 1.1.5 Ajout de commandes pour "visualiser" le signe de ax+b ou de ax2+bx+c (cf tnsana !) @@ -50,6 +51,7 @@ \RequirePackage{fontawesome5} %librairies tikz \usetikzlibrary{calc} +\usetikzlibrary{decorations} \usetikzlibrary{decorations.pathreplacing} \usetikzlibrary{decorations.markings} \usetikzlibrary{arrows,arrows.meta} @@ -1436,4 +1438,10 @@ {} } +%==============MainLevée TikZ========== OK !! +\tikzset{% + mainlevee/.style args={#1et#2}{decorate,decoration={random steps, segment length=#1,amplitude=#2}}, + mainlevee/.default={5mm et 0.6pt} +} + \endinput \ No newline at end of file diff --git a/macros/latex/contrib/projlib/ProjLib.dtx b/macros/latex/contrib/projlib/ProjLib.dtx index c6615ebcd9..788cf84699 100644 --- a/macros/latex/contrib/projlib/ProjLib.dtx +++ b/macros/latex/contrib/projlib/ProjLib.dtx @@ -19,84 +19,84 @@ %<*ProjLib> \ProvidesExplPackage {ProjLib} - {2022/07/23} {} + {2022/08/01} {} {Collective interface of the ProjLib toolkit} % % %<*projlib-author> \ProvidesExplPackage {projlib-author} - {2022/07/23} {} + {2022/08/01} {} {Enhanced author information block} % % %<*projlib-datetime> \ProvidesExplPackage {projlib-datetime} - {2022/07/23} {} + {2022/08/01} {} {Convert numeric date-time string to natural language} % % %<*projlib-draft> \ProvidesExplPackage {projlib-draft} - {2022/07/23} {} + {2022/08/01} {} {Useful commands during draft stage} % % %<*projlib-font> \ProvidesExplPackage {projlib-font} - {2022/07/23} {} + {2022/08/01} {} {Font selection and configuration} % % %<*projlib-language> \ProvidesExplPackage {projlib-language} - {2022/07/23} {} + {2022/08/01} {} {Multi-language configuration} % % %<*projlib-logo> \ProvidesExplPackage {projlib-logo} - {2022/07/23} {} + {2022/08/01} {} {The ProjLib logo} % % %<*projlib-math> \ProvidesExplPackage {projlib-math} - {2022/07/23} {} + {2022/08/01} {} {Efficient math setup} % % %<*projlib-paper> \ProvidesExplPackage {projlib-paper} - {2022/07/23} {} + {2022/08/01} {} {Configuration of the paper style} % % %<*projlib-text> \ProvidesExplPackage {projlib-text} - {2022/07/23} {} + {2022/08/01} {} {Text-related commands} % % %<*projlib-theorem> \ProvidesExplPackage {projlib-theorem} - {2022/07/23} {} + {2022/08/01} {} {Configuration of theorem-like environments} % % %<*projlib-titlepage> \ProvidesExplPackage {projlib-titlepage} - {2022/07/23} {} + {2022/08/01} {} {Commands for rendering the title page} % @@ -5275,7 +5275,7 @@ \l_projlib_titlepage_logo_tl }; \node[text~width=.8\paperwidth, text~height=.5\paperheight, align=flush~left] - at ($(current~page.north~west)+(.52\paperwidth,-.28\paperheight)$) + at ($(current~page.north~west)+(.57\paperwidth,-.28\paperheight)$) { \color{titlepage-back} \sffamily diff --git a/macros/latex/contrib/projlib/README.md b/macros/latex/contrib/projlib/README.md index 3285bbd410..6961880f61 100644 --- a/macros/latex/contrib/projlib/README.md +++ b/macros/latex/contrib/projlib/README.md @@ -6,7 +6,7 @@ > **ProjLib** can be interpreted as "***Proj**ect **Lib**rary*" (in English), or as "***Proj**et **Lib**re*" (in French, meaning "*Free Project*"). -> **This bundle is dated 2022/07/23. Please note that the documentations are not yet up-to-date.** +> **This bundle is dated 2022/08/01. Please note that the documentations are not yet up-to-date.** ## Introduction diff --git a/macros/xetex/latex/hfutthesis/hfutthesis.cls b/macros/xetex/latex/hfutthesis/hfutthesis.cls index 62da841bc3..6b4daaf34c 100644 --- a/macros/xetex/latex/hfutthesis/hfutthesis.cls +++ b/macros/xetex/latex/hfutthesis/hfutthesis.cls @@ -1,5 +1,5 @@ % -% Copyright (C) 2015-2021 by USTC TeX Users Group +% Copyright (C) 2021-2022 by HFUT TeX Users Group % % hfutthesis developed by HFUT TeX Users Group on the % base of ustcthesis . diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl index 378dbeca2f..c291074f1a 100644 --- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl +++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl @@ -47,14 +47,17 @@ $mirrors = { }, 'Korea' => { 'http://ftp.ktug.org/tex-archive/' => 1, + 'https://cran.asia/tex/' => 1, 'https://ftp.kaist.ac.kr/pub/tex-archive/' => 1, 'https://lab.uklee.pe.kr/tex-archive/' => 1, - 'https://mirror.kakao.com/CTAN/' => 1, 'https://mirror.navercorp.com/CTAN/' => 1, }, 'Philippines' => { 'http://mirror.rise.ph/ctan/' => 1, }, + 'Singapore' => { + 'https://download.nus.edu.sg/mirror/ctan/' => 1, + }, 'Thailand' => { 'https://mirror.kku.ac.th/CTAN/' => 1, }, diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb index 4066227b45..572fdc34cd 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb @@ -26,11 +26,11 @@ depend container_split_src_files/1 depend frozen/0 depend minrelease/2016 depend release/2022 -depend revision/64018 +depend revision/64027 name 00texlive.image category TLCore -revision 64017 +revision 64026 shortdesc TeX Live files only in the source repository longdesc The files here are not copied by the installer and containers longdesc are not built for them; they exist only in the source @@ -1315,6 +1315,7 @@ runfiles size=12913 tlpkg/tlpsrc/curve2e.tlpsrc tlpkg/tlpsrc/curves.tlpsrc tlpkg/tlpsrc/custom-bib.tlpsrc + tlpkg/tlpsrc/customdice.tlpsrc tlpkg/tlpsrc/cutwin.tlpsrc tlpkg/tlpsrc/cv.tlpsrc tlpkg/tlpsrc/cv4tw.tlpsrc @@ -4608,7 +4609,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd name 00texlive.installer category TLCore -revision 64013 +revision 64020 shortdesc TeX Live standalone installer package longdesc This package defines the files to go into the installer longdesc archives (install-tl-unx.tar.gz, install-tl.zip) built by the @@ -42297,7 +42298,7 @@ catalogue-version 1.4 name bodeplot category Package -revision 63946 +revision 64022 shortdesc Draw Bode, Nyquist and Nichols plots with gnuplot or pgfplots relocated 1 longdesc This is a LaTeX package to plot Bode, Nichols, and Nyquist @@ -42311,19 +42312,19 @@ longdesc and unstable second order transfer functions. Support for both longdesc Gnuplot (default) and pgfplots (package option pgf). Support longdesc for linear and asymptotic approximation of magnitude and phase longdesc plots of any transfer function given poles, zeros, and gain. -containersize 4944 -containerchecksum f6b070db631da86677fa529e94ff303b334e3e4a2c812d7e246e14ceafc929ac62e0ec4eb9eab538d23b81be832a3d5a798d5868983d37835a08aad981c5bb5e -doccontainersize 737444 -doccontainerchecksum 66e912824a48de5106d81c0eb1fcfb1a7760a8f6af5037d57cdd92bc2eb36dd9f55bb0bd5cadbda948578d8d71dbee8925f27c584fb7c3a49a7b0ba6e5bd8a87 -docfiles size=247 +containersize 5528 +containerchecksum bd984f227dc67a6460b12c301b40fa316ac75231c3319ed089b02e91620df9784453a7f6cb5fcc67f30a8328ab44f4b7e4668b5befe82776a1181b85f7f8ee81 +doccontainersize 729796 +doccontainerchecksum 5c72bc616902d6acb71c564e43b401caec8f6f9ea1b42b535110cf26da91fa1453f3beebfd8ba0f5b846e184d993fb6cdd03982f7e23e3a89640d581f52b5eb4 +docfiles size=261 RELOC/doc/latex/bodeplot/README.md details="Readme" RELOC/doc/latex/bodeplot/bodeplot.pdf details="Package documentation" -srccontainersize 15648 -srccontainerchecksum bbd3abc8b626b3abbf8228b953f93bc597881554e334b8900b7352b34d431b9f53cfb597b91d403c88ef296c3e10a46943bb153415eb827de963da8b5eb2effd -srcfiles size=22 +srccontainersize 16696 +srccontainerchecksum 7ae6ed6b9f5de7f2f28ae2fad575a6686dc962751be384c4d71e6c2d1fb2202a26b270a4db7249f60ed83b542e6191bcb2a4f039e4c65f05faf090ecec86245c +srcfiles size=25 RELOC/source/latex/bodeplot/bodeplot.dtx RELOC/source/latex/bodeplot/bodeplot.ins -runfiles size=7 +runfiles size=9 RELOC/tex/latex/bodeplot/bodeplot.sty catalogue-also bodegraph catalogue-contact-bugs https://github.com/rlkamalapurkar/bodeplot/issues @@ -42331,7 +42332,7 @@ catalogue-contact-repository https://github.com/rlkamalapurkar/bodeplot catalogue-ctan /graphics/pgf/contrib/bodeplot catalogue-license lppl1.3c catalogue-topics engineering graphics-plot pgf-tikz -catalogue-version 1.1.0 +catalogue-version 1.1.1 name bohr category Package @@ -68080,7 +68081,7 @@ containerchecksum 6c7f0a1829789edea6a42d45f13f482abc0aa1ecc66b0ba4b70197efff349d name collection-games category Collection -revision 63224 +revision 64021 shortdesc Games typesetting relocated 1 longdesc Setups for typesetting various games, including chess. @@ -68093,6 +68094,7 @@ depend chinesechess depend collection-latex depend crossword depend crosswrd +depend customdice depend egameps depend gamebook depend gamebooklib @@ -68126,8 +68128,8 @@ depend sudoku depend sudokubundle depend xq depend xskak -containersize 552 -containerchecksum eee101c3067f2af59e8cea0339e4ed167c6d4365fd671078380098c70a77d80d598575552cb0adc397517615c563fd4d8714a80314c0af00afd16dceee356078 +containersize 556 +containerchecksum 99344c6c2cb8242280bbfe32379ef516f978969ce178e1260104a113dd94a994733462ceba619cfa422c738f6df25a898619246e45e9992f69ef6b87b8b4c48c name collection-humanities category Collection @@ -86804,6 +86806,37 @@ catalogue-license lppl catalogue-topics bibtex-sty catalogue-version 4.33 +name customdice +category Package +revision 64021 +shortdesc Simple commands for drawing customisable dice +relocated 1 +longdesc The customdice package for LaTeX, LuaLaTeX and XeTeX that +longdesc provides functionality for drawing dice. The aim is to provide +longdesc highly-customisable but simple-to-use commands, allowing: +longdesc adding custom text to dice faces; control over colouring; +longdesc control over sizing. +containersize 2512 +containerchecksum 411c57c5fa5b8a6936b9b5af2adae59d6273b0bd2ea654056e1dd6acab3adca89f849e5724bd0e45a7c7c936bfdd5d37160d051bc4007f19f7d00d249dfc7d82 +doccontainersize 358264 +doccontainerchecksum dc19a3e6f1a59ec650ba2e1adc1a329d3ab9a2b012dd81ec46ac206b8e8a71a43344a345a68f406dcf93d8c7d332c1af792a73fa6e4e42796808f8d9e8e3e3a9 +docfiles size=92 + RELOC/doc/latex/customdice/README.md details="Readme" + RELOC/doc/latex/customdice/customdice.pdf details="Package documentation" +srccontainersize 6980 +srccontainerchecksum 249374c8d82b82a812784d0eb501f98f4d61a5f4e21d18234c9872cd92098c205344a34e7b546ff38ba9c5bfc9338b9aec35c09cbb01020a184b02aa0e9f6046 +srcfiles size=13 + RELOC/source/latex/customdice/customdice.dtx + RELOC/source/latex/customdice/customdice.ins +runfiles size=4 + RELOC/tex/latex/customdice/customdice.sty +catalogue-contact-bugs https://github.com/prowlett/customdice/issues +catalogue-contact-repository https://github.com/prowlett/customdice +catalogue-ctan /graphics/pgf/contrib/customdice +catalogue-license cc-by-sa-4 +catalogue-topics graphics-use +catalogue-version 1.0 + name cutwin category Package revision 60901 @@ -140444,7 +140477,7 @@ catalogue-version 1.15 name hfutthesis category Package -revision 64009 +revision 64025 shortdesc LaTeX Thesis Template for Hefei University of Technology relocated 1 longdesc This project is based on the HFUT_Thesis LaTeX template of @@ -140453,10 +140486,10 @@ longdesc ustctug/ustcthesis, in accordance with the latest version of longdesc Hefei University of Technology Graduate Dissertation Writing longdesc Specifications and Hefei University of Technology Undergraduate longdesc Graduation Project (Thesis) Work Implementation Rules. -containersize 25504 -containerchecksum dfe4a00ec41037c87bda60dedfc320342f2b7e5fc54ea90b34e4638e4e24f3fa6858346acdb5571c4437de313356b852a2553e3655c212cf9a3fa61ab2fbc7e5 +containersize 25440 +containerchecksum 928dc93116a78a440fd1dcb163ccd5d88daa4b96a6850f5bb45c996c3c81249982588ffda7f51f4c76f153f3df6f85e033ce15d28593c4d6235f7781a829ddb6 doccontainersize 799628 -doccontainerchecksum 41b7ebfbab203f35e105cdadc060c55b4b63a75689ee87981aa52383cc646cf5a7adfe6d90bcd469a0636808b57cb122b2fad6fb76ab7faf40fcff5c29b653de +doccontainerchecksum 491a841f563a79fbbc71d19bc9aa259ffc4429db53c86812724306432dcd7a5d3af98eb2ce1defd4f6af02fd5f4b34d4b5a96de540e95bd59fd7991ddd5dbc85 docfiles size=271 RELOC/doc/xelatex/hfutthesis/README.md details="Readme" RELOC/doc/xelatex/hfutthesis/hfut-bib/hfut.bib @@ -140480,7 +140513,6 @@ docfiles size=271 runfiles size=28 RELOC/tex/xelatex/hfutthesis/hfutthesis.cls catalogue-contact-bugs https://github.com/HFUTTUG/HFUT_Thesis/issues -catalogue-contact-development https://github.com/HFUTTUG/HFUT_Thesis/wiki/%E5%8F%82%E4%B8%8E%E5%BC%80%E5%8F%91 catalogue-contact-repository https://github.com/HFUTTUG/HFUT_Thesis catalogue-ctan /macros/xetex/latex/hfutthesis catalogue-license lppl1.3c @@ -147900,7 +147932,7 @@ catalogue-version 2.2 name install-latex-guide-zh-cn category Package -revision 63775 +revision 64023 shortdesc A short introduction to LaTeX installation written in Chinese relocated 1 longdesc This package will introduce the operations related to @@ -147909,9 +147941,9 @@ longdesc macro packages, and compiling simple documents on Windows 10, longdesc Ubuntu 20.04, and macOS systems, and mainly introducing command longdesc line operations. containersize 568 -containerchecksum 72c64db2cb4d7a887158ab4a561db13d5d28dc0cd62d1e48f2e2b8dcd1843ef525cfbe9d08d0c05654b77f89c7fdd55c4169a218f468c890fc6df467c177fbab -doccontainersize 801916 -doccontainerchecksum efeb4122259218514ed7a5ec8218eb9afc30bf1b2e2673fa53812b21dd2ce894e7821a20fa859a2c101c19950a78cb29ccf386df786849f45a0ba5723ea88a57 +containerchecksum 0f2e2862a92e932598e07f68b7b9c942810aaaa35e13ae4f561dda4c7e05fc5c182a211195da52e60dbf930ae40f9d6344d3d0c000e146c79bded6710b5fee6e +doccontainersize 804676 +doccontainerchecksum 4fd546380baa978c068d79d95ec309302b92eb3c193ea178281857f4623ca56e51e4f2124b33441ec4980533fcfd1c141cc8ac30aed0f0a298e7dfbae05c14d2 docfiles size=230 RELOC/doc/latex/install-latex-guide-zh-cn/LICENSE RELOC/doc/latex/install-latex-guide-zh-cn/README.md details="Readme" @@ -147934,7 +147966,7 @@ catalogue-contact-repository https://github.com/OsbertWang/install-latex-guide-z catalogue-ctan /info/install-latex-guide-zh-cn catalogue-license lppl1.3c catalogue-topics chinese-doc tutorial -catalogue-version 2022.7.1 +catalogue-version 2022.8.1 name installfont category Package @@ -204612,7 +204644,7 @@ catalogue-version 1.1 name minted category Package -revision 64017 +revision 64026 shortdesc Highlighted source code for LaTeX relocated 1 longdesc The package that facilitates expressive syntax highlighting in @@ -204635,14 +204667,14 @@ depend upquote depend xcolor depend xstring containersize 9668 -containerchecksum ab5ecd1a06029439568299e92656132a615f5cead235b354a66ce2a3fcd7490b0a717261af796caf6f9428ad569fbaa087880e03a1b6d5c0af62ff6cb632ed93 +containerchecksum 45ff657881ea79464499930951761ca9eb58c4f1e7fdd060066d805b403e7e482492f567c24b18e3a5b083129012c2a228256a94f43f85cb2462c8ac614aab9f doccontainersize 824148 -doccontainerchecksum 270a9534227e32dab49de44812eceecd5868035009fa448b797b6ddd12754b3cee591a88d5a85acc977749cffe5014889e2a1380e51eacf12488531c5287165b +doccontainerchecksum b256d275098b32fdaf072084bda8f78f340cd969f7778aa439798d0a3e04239a5a8c90e09c18a4ebc7eabca5ada6b4227f4bb19e6bf7c2ebb330cfe2ed1715f0 docfiles size=208 RELOC/doc/latex/minted/README details="Readme" RELOC/doc/latex/minted/minted.pdf details="Package documentation" srccontainersize 45492 -srccontainerchecksum 28c90da25d3b525052c7b626c3ceb72c27db3ae281e28af1d3fef6610ebeaf3f980acaf24e06c031ee7df89ad62d814a68c83c8ac1a2c950b217a8c6fa1665a7 +srccontainerchecksum 6ece43418b8f3c1be936e1f4db974096cee5490909064347f4d41fe20a6bb0f979f029d2ef262b110ef489ce384d4912fb7119d81934b805931bf16634e83706 srcfiles size=51 RELOC/source/latex/minted/Makefile RELOC/source/latex/minted/minted.dtx @@ -251762,7 +251794,7 @@ catalogue-version 1.0 name proflycee category Package -revision 63768 +revision 64024 shortdesc A LaTeX package for French maths teachers in high school relocated 1 longdesc This package provides some commands to help French mathematics @@ -251771,11 +251803,11 @@ longdesc create splines with "derivative control"; \paramCF and \ligneCF longdesc in order to create an xcas-windows-like; \envconsolepythontex longdesc and \envcodepythontex to create code presentation and code longdesc execution with pythontex. -containersize 12104 -containerchecksum dba392bdca376030ad5c99c14e3355ffc73bea60af0bc6a7ce53025b278c3d6b41aa71354aea72e8a22f5c5d426f00f8a855282c8e458849115b912d528f1d16 -doccontainersize 732612 -doccontainerchecksum 25622527a5d5df0d11f83d13f8cf784414d15f53b8cd032b7071b8a3f9efcd8291898c1fecfbcb2d7f100272cf91303847488a38023a84ea2110cad2c8a9b9dc -docfiles size=208 +containersize 12208 +containerchecksum 5cc47c22a9e69ac9b3b5662526bb4e2803e4162dd8b610f0643b6a5e6e9fa501b9379ce57e48ddcc386ca980b9b551b60e55526f9a34673d513a956920091fb5 +doccontainersize 744396 +doccontainerchecksum 92ea1e2371d5c30166a8522ba35764aa516ee51893d3c9058dd51132ba892a3278b557dddeb22e75094192c50d059b8ee7a037e6fa1ed960c1674e9ffbcae6e3 +docfiles size=211 RELOC/doc/latex/proflycee/ProfLycee-doc.pdf details="Package documentation" language="fr" RELOC/doc/latex/proflycee/ProfLycee-doc.tex RELOC/doc/latex/proflycee/README.md details="Readme" @@ -251793,7 +251825,7 @@ catalogue-contact-repository https://github.com/cpierquet/ProfLycee catalogue-ctan /macros/latex/contrib/proflycee catalogue-license lppl1.3c catalogue-topics maths french teaching -catalogue-version 1.1.7 +catalogue-version 1.1.8 name program category Package @@ -306143,7 +306175,7 @@ docfiles size=376 name texlive-scripts category TLCore -revision 64013 +revision 64020 shortdesc TeX Live infrastructure programs longdesc Includes install-tl, tl-portable, rungs, etc.; not needed for longdesc tlmgr to run but still ours. Not included in tlcritical. @@ -306151,10 +306183,10 @@ depend texlive-scripts.ARCH depend texlive.infra execute addMap mathpple.map postaction shortcut type=menu name="TeX Live command-line" cmd=TEXDIR/tlpkg/installer/tl-cmd.bat -containersize 113500 -containerchecksum 06be8eee6bb93beeb6904381204f44e4e05103d3fb90cff664d4b1e84f2edc1f4635f1c46cc0f4abf887fc47822d7c99847b05b2333c535ee75f8eddca0ba73d -doccontainersize 419140 -doccontainerchecksum e63215e0e905b647003d2893fbc6b32167fd307aaa0934d32e5ebfba4e3c11633262b3b1d2825a97511d0d3a6418e53a9271bc72132e667115491cce6de1905a +containersize 113520 +containerchecksum 2ddb90cb1a80bcc274f9091b458805bf8156701b5c31b5fd0caef0a4454773f9f92408c6fa570fd9e02ec41c8cae1d698f6394d2dcb06008faaa302292a75a9b +doccontainersize 419144 +doccontainerchecksum 091fef3537765e29fb6f3d8af5fd46e9386388a975ca40fd189e932997c19952c0f4a18bf73e3274b1a4876ac811ca263fa83e12a5cdfc348b7b33b757531411 docfiles size=516 doc.html texmf-dist/doc/man/man1/fmtutil-sys.1 diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 index 13dc579c29..1e102eb7e8 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 @@ -1 +1 @@ -32f9d6689abb4c1c078650519459582b texlive.tlpdb +eb74ab8eb536fd1f3b09f21696e290ac texlive.tlpdb diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 index c37e501f5a..ce71f32e2f 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 @@ -1 +1 @@ -bab21569faaefbaef036a2753fb481375c12bb2fb211f24a837050f43f734025f5f439829cad5f8842ee8bb7774e714e5f44a2e86a1f5400da703ebd6e0c207a texlive.tlpdb +c2495936b93e9d976b45432f5b422dd027ee65a094bfb152afbc15f0948807b683f120d26fe17cf1abb37189ca4bd86da9ee48876a462cb57bf90d06016dc706 texlive.tlpdb diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc index b7a28b1747..10ae67b166 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc @@ -1,10 +1,10 @@ -----BEGIN PGP SIGNATURE----- -iQEcBAEBCgAGBQJi5xquAAoJEEzhh34ZQ4xw0sUH/Rr8WDcAiHvYKdVl1HZexzG+ -lPBVeFHuEBlztpOq0zAyXyf7Fp5PM39BNE1FZUa1ZhwEMb2s4cOjt9EEqJjt6u+B -/X4xjr6cK5YhQeQoqDZO1+wXVjsaKOsgjRwMJvkKak0M/LJTTDzzAQuuPhqGuRi9 -YE6rIngkjtk+se9vaoHkWpf1Y3lGtC1vXp/hMIJAaKVzCJShxSAX1HeH35A9Ew5N -GkoULcqmZBeKvUCzykBBHUvvVWP2Hb8hmYyZCIhfH98cn4v6k7spkxAQ4FZ2hrll -+lYHR+EB5gPrffnsPtEW1+BbCArRoSTrjJrLhDhGY60MPyTotkUq5i+O1e20P1s= -=wamc +iQEcBAEBCgAGBQJi6Ge5AAoJEEzhh34ZQ4xwhzgH/2v1id9MM3mfc28CUME1UDAd +P7k4CAAYI+SNFiF75U7uwixeJWUEtckzL7BL6tmW2WIb80OIPEWAmlqzAiwRYf+6 +tlC8L3A2G7aYBrvJAufnOnAMzqTf+aKje3+5nyjPyVUHT+brvF1wUaD0W5IHxIuj +1KNVEE7V9571zf+a38lN9SsqoC4UtIxxe94O8vXJLH239lvolxG7JKRAfsUtJxR0 +jnHdbktNXHr8hLeMHvahPpSOoRGpiKypw/LmKrmXiUZ5U7D42fI1XCJYoCuAlnBb +cghQgzTmdHD2kTNVx0ybL1++MgIsTMDu9iMIogINbmLLb44DHRuFvtkUfoDxMXg= +=pvAp -----END PGP SIGNATURE----- diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz index e5d1d89814..e652944208 100644 Binary files a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz and b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz differ diff --git a/systems/win32/miktex/tm/packages/next/pr.ini b/systems/win32/miktex/tm/packages/next/pr.ini index 837d770a58..2e57b89a2b 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=1659298690 +date=1659385102 lastupd=miktex-arctrl-bin-x64-2.9 miktex-asymptote-bin-x64-2.9 miktex-autosp-bin-x64-2.9 miktex-axohelp-bin-x64-2.9 miktex-bibarts-bin-x64-2.9 miktex-bibtex-bin-x64-2.9 miktex-bibtex8bit-bin-x64-2.9 miktex-bzip2-bin-x64-2.9 miktex-cairo-bin-x64-2.9 miktex-chktex-bin-x64-2.9 miktex-cjkutils-bin-x64-2.9 miktex-console-bin-x64-2.9 miktex-curl-bin-x64-2.9 miktex-cweb-bin-x64-2.9 miktex-devnag-bin-x64-2.9 miktex-doc miktex-dvicopy-bin-x64-2.9 miktex-dvipdfmx-bin-x64-2.9 miktex-dvipng-bin-x64-2.9 miktex-dvips-bin-x64-2.9 -lstdigest=7076f58c84f9007551d362a670d81ce1 +lstdigest=1d68245eae2b0f7d7ef7ecd28b4fb455 numpkg=5847 relstate=next -version=8247 +version=8248 ;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows. ;;;;-----BEGIN MIKTEX SIGNATURE----- -;;;; signature/miktex: FgCibn2qw7dARm7PSti8TKmxb5+7qP+CYNJt92d2vPJhkY5LhAfB3mrqWs7lRvaeS9yAP8LHuhdXeVOzrOvlL4ruoy5fT25QSOrZtbaG6pTui5Ma84m0O1M4loh6e3XjZGG9ylMJMXRo0PWBTBqrQA922FNrYxAO3lDTyvTZX6gzEv1F5rUrzOmfq5T/dzdIFsPsozCCcIv14L9lsIUz52HYVu/oJJUdcYZxDxP3s6GZLeabQfYavMeHM7xwmkHjDlXSWmzJRAazoMatO2AtJMRXxRrsyvIh0vfl7xDcpAdq+jiAdCNt2ZHnw01FtBY1VfarYfVoVdWuCV1bZcj6QQ== +;;;; signature/miktex: ZmNj/ILwBKRVC0DYbSNtzgW/zeJUMJjAqXYA2/gQ8dxgRpT9I1wIUQa5mFSLZtDYewQ1uLFscRwy9Q2hdSdLHbdLZeOS/nB1RjH2EC+pZJ1wfWu9YC3Bk7g1j3ivVJaclm3rOWMPSTZPqn7ERiNfQuhl3zch/XQ0eZB3REj0OZIVd0M6eus0mHNocKeuXB4vriiN2jhPPKNNhQ0XQHZQJQpeGeJuAvTFsV7JRzRPoixaId0Ozh3eVt/mB3S7PInfl+WwIPqZK4uDWe7+2/lUsIhLugNdzOWPT4Q1Vs/JKTdTQOarIwSGnWgP9nSbfCMtJ1tG/nuFvEhzGmUWXbxVdA== ;;;;-----END MIKTEX SIGNATURE----- diff --git a/systems/win32/miktex/tm/packages/pr.ini b/systems/win32/miktex/tm/packages/pr.ini index a79afcad7d..085ff95b4c 100644 --- a/systems/win32/miktex/tm/packages/pr.ini +++ b/systems/win32/miktex/tm/packages/pr.ini @@ -1,13 +1,13 @@ [repository] -date=1659298310 +date=1659384702 lastupd=miktex-dvips-bin-x64-2.9 miktex-runtime-bin-x64-2.9 miktex-ucrt-bin miktex-vc140-bin apa7 apa7__doc apa7__source buctthesis buctthesis__doc buctthesis__source csassignments csassignments__doc csassignments__source exam-zh exam-zh__doc exam-zh__source fixdif fixdif__doc fixdif__source hfutthesis -lstdigest=fc58563b43b7e874a6fa2937b4d37600 +lstdigest=23a1190e764a71c865899899f0a893ca numpkg=5847 relstate=stable -version=8247 +version=8248 ;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows. ;;;;-----BEGIN MIKTEX SIGNATURE----- -;;;; signature/miktex: M2KajzUM93j2USmkzCMChtpeqRMrogJIh4tCdXdHRtoQhJZHakBK4Wf8UczYhEyqOqDHbXjWfLlAzrqdLMhUh/Og56wVO1VfkVIRX/LX8Lu6hZMuRPIIzyrNYzpe3gM5yMjrREKvusMaH+ftGRWFiadOlTxRXz/3RQPX/z8rDHsOREbl20/rhDkSBlg1E8R1f09bcs3zIpH96JccZMItD0XB23w/9pBoS4OypaarPQiJfL4HbE1HO/T5HaE3VtnqK/++goBak7eSKbkuRtBWB13N76ZTgi7zEsXLEb6z+W45CxWUW4U+b5fr38KTaCJ4wqd+bloDIwYNV6p4qBiWiw== +;;;; signature/miktex: iKi6z/vG9GM0sSn4DbJlkJ9PjyhEEkIyrX2Gqiz174VqPZNfpH1uN+85+sQdpbVKyePzDUOUAf7Cv/ws7FHarYWt3R3itorX9hXF63CPdJyZ8Q1gQ9v3tXYgmVfC32z7oneSIrke/V2/7v8xAf+dbivmsH585JTMXcC3JqyKBlhDVZJGiUD/zbh3/IkctU+3O4J3pmwML+ladymktVR6PwQFuGH7uwjhTfN+hnmux/TVOvVsLXPLGnB4V5Uo+SwtMBHXjRhtbMw7wSXLvx0DVbkoCo5HNt844kcKhL5X445KBXz2gsQewB1bViJ2ij0Cy9RC8GL3PwxraT2XQ1oX7w== ;;;;-----END MIKTEX SIGNATURE----- diff --git a/timestamp b/timestamp index d69f25faa3..26075f3fd2 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-08-01-02-02 +2022-08-02-02-02 -- cgit v1.2.3